Projects
Essentials
gstreamer-plugins-bad-codecs
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 6
View file
gstreamer-plugins-bad-codecs.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Tue May 17 16:38:34 UTC 2022 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.20.2 + +------------------------------------------------------------------- Sat Mar 26 01:04:36 UTC 2022 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.20.1
View file
gstreamer-plugins-bad-codecs.spec
Changed
@@ -7,7 +7,7 @@ %define _version 1.20.0 Name: gstreamer-plugins-bad-codecs -Version: 1.20.1 +Version: 1.20.2 Release: 0 Summary: Codecs/plugins for gstreamer-plugins-bad License: LGPL-2.1-or-later
View file
gst-plugins-bad-1.20.1.tar.xz/ChangeLog -> gst-plugins-bad-1.20.2.tar.xz/ChangeLog
Changed
@@ -1,7 +1,425 @@ +=== release 1.20.2 === + +2022-05-02 23:29:25 +0100 Tim-Philipp Müller <tim@centricular.com> + + * NEWS: + * RELEASE: + * gst-plugins-bad.doap: + * meson.build: + Release 1.20.2 + +2022-05-02 23:29:19 +0100 Tim-Philipp Müller <tim@centricular.com> + + * ChangeLog: + Update ChangeLogs for 1.20.2 + +2022-04-23 04:00:21 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11videosink: Fix for unhandled mouse double click events + Only window created with CS_DBLCLKS style can receive those mouse + double click events, so we need to use the style for internal/external + windows can get double click events. + Also, passthrough mouse events to parent window in the same message pumping + threads instead of manually forwarding each mouse event. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1172 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2286> + +2022-04-08 04:24:36 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d11/gstd3d11window_win32.cpp: + d3d11window: Use ANSI version WIN32 API explicitly + We were using ANSI version APIs implicitly because UNICODE is not + defined by ourselves. But potentially it can be broken if user + defines UNICODE. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2286> + +2022-04-29 19:08:46 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/interlace/gstinterlace.c: + interlace: Also handle a missing "interlace-mode" field as progressive + Otherwise caps negotiation will fail in situations that are supposed + to work, like: + "video/x-raw,framerate=(fraction)60/1" ! interlace field-pattern=0 ! "video/x-raw,framerate=(fraction)30/1" + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2337> + +2022-04-29 19:08:32 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/interlace/gstinterlace.c: + interlace: Add some more debug output to the getcaps function + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2337> + +2022-04-27 15:24:50 +0200 Edward Hervey <edward@centricular.com> + + * gst/mpegtsdemux/mpegtsbase.c: + mpegts: Handle "empty" PMT gracefully + Some streams have 2 PMT sections in a single TS packet. The first one is "valid" + but doesn't contain/define any streams. That causes an unrecoverable issue when + we try to activate the 2nd (valid) PMT. + Instead of doing that, pre-emptively refuse to process PMT without any streams + present within. We still do post that section on the bus to inform applications. + Fixes #1181 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2327> + +2022-04-28 00:31:49 +0900 Seungha Yang <seungha@centricular.com> + + * sys/nvcodec/gstnvvp9dec.c: + nvvp9sldec: Increase DPB size to cover render delay + This should've included in the previous MR + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/987 + already, but missed. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2324> + +2022-04-24 00:02:18 +0800 He Junyan <junyan.he@intel.com> + + * sys/va/gstvabasedec.c: + va: dec: Use gst_buffer_pool_config_set_va_alignment() to set alignment. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301> + +2022-04-23 23:59:08 +0800 He Junyan <junyan.he@intel.com> + + * sys/va/gstvapool.h: + va: pool: Replace all tabs with spaces in header file. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301> + +2022-04-23 23:52:34 +0800 He Junyan <junyan.he@intel.com> + + * sys/va/gstvapool.c: + va: pool: Delete the GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT. + The va pool is used for GPU side surface/image, its alignment should + not be changed arbitrarily by others. So we decide not to expose the + GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT flag anymore. + Instead, user can call gst_buffer_pool_config_set_va_alignment() to + set its surface/image alignment. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301> + +2022-04-23 23:40:14 +0800 He Junyan <junyan.he@intel.com> + + * sys/va/gstvapool.c: + * sys/va/gstvapool.h: + va: pool: Add set_va_alignment() API. + We want to use gst_buffer_pool_config_set_va_alignment() to replace + gst_buffer_pool_config_get_video_alignment(). The later one is specific + for GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT option. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301> + +2022-04-26 01:16:06 +0800 He Junyan <junyan.he@intel.com> + + * gst/videoparsers/gstav1parse.c: + av1parse: Fix a latent memory leak in colorimetry setting. + Also delete the useless "have_cinfo" judgement. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2297> + +2022-04-24 22:54:58 +0800 He Junyan <junyan.he@intel.com> + + * gst/videoparsers/gstav1parse.c: + av1parse: Correct the meaning of color_range flag. + According to spec: + color range equal to 0 shall be referred to as the studio swing + representation and color range equal to 1 shall be referred to as + the full swing representation. + The current status is just the opposite. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2297> + +2022-04-22 17:44:06 +0200 Stéphane Cerveau <scerveau@collabora.com> + + * ext/rsvg/gstrsvgdec.h: + rvsg: fix cairo include + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2280> + +2022-04-21 00:38:37 +0900 Sangchul Lee <sc11.lee@samsung.com> + + * ext/webrtc/gstwebrtcbin.c: + webrtcbin: Avoid access of freed memory + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2258> + +2022-04-20 08:09:58 +0900 Wonchul Lee <wonchul.dev@gmail.com> + + * ext/dash/gstdashsink.c: + dashsink: Unlock when failed to get content + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2246> + +2022-04-18 17:50:22 +0900 Camilo Celis Guzman <camilo@pexip.com> + + * gst/videoparsers/gstav1parse.c: + gstav1parse: fixup various possible logical errors + Found via an analyzed build for Clang. Specifically we had: + gstav1parse.c1850,11 in gst_av1_parse_detect_stream_format: Logic error: The left operand of '==' is a garbage value + gstav1parse.c1606,11 in gst_av1_parse_handle_to_small_and_equal_align: Logic error: The left operand of '==' is a garbage value + Also a couple of false-positives: + gstav1parse.c1398,24 in gst_av1_parse_handle_one_obu: Logic error: Branch condition evaluates to a garbage value + gstav1parse.c1440,37 in gst_av1_parse_handle_one_obu: Logic error: The left operand of '-' is a garbage value + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2240> + +2022-04-12 01:01:23 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d11/gstd3d11decoder.cpp: + * sys/d3d11/meson.build: + win32: Enable high-resolution timer for MinGW build + timeapi.h is missing in our MinGW toolchain. Include mmsystem.h + header instead, which defines struct and APIs in case of our MinGW + toolchain. Note that in case of native Windows10 SDK (MSVC build), + mmsystem.h will include timeapi.h + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2167> + +2022-04-14 08:23:51 +0200 Edward Hervey <edward@centricular.com> + + * gst/mpegtsdemux/gstmpegdefs.h: + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Fix AC-4 detection + This regression was introduced by + https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1102 + and has been present since 1.18 + * Stream Type 0x06 is defined in the base mpeg-ts specification as Private PES + Packets. Determining the content should be solely based on descriptors found + within the PMT. + * This was abused in that commit by defining a "bluray-only" stream type for AC4 + : `ST_BD_AUDIO_AC4` + * This should be entirely handled in the regular private pes handling further + down in the code + Fixes #1154 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2176> + +2022-04-11 10:32:40 +0200 Edward Hervey <edward@centricular.com> + + * gst/mxf/mxfdemux.c: + mxfdemux: Fix issue with re-syncing + In case of re-syncing (i.e. moving to another partition to avoid too much of an + interleave), there was previously no checks to figure out whether a given + partition was already fully handled (i.e. when coming across it again after a + previous resync). + In order to handle this at least for single-track partitions, check whether we + have reached the essence track duration, and if so skip the partition. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2162> + +2022-04-11 10:31:15 +0200 Edward Hervey <edward@centricular.com> + + * gst/mxf/mxfdemux.c: + mxfdemux: Don't double-increase track position + The essence track position should only be overriden if we sucesfully switched to
View file
gst-plugins-bad-1.20.1.tar.xz/NEWS -> gst-plugins-bad-1.20.2.tar.xz/NEWS
Changed
@@ -2,13 +2,13 @@ GStreamer 1.20.0 was originally released on 3 February 2022. -The latest bug-fix release in the 1.20 series is 1.20.1 and was released -on 14 March 2022. +The latest bug-fix release in the 1.20 series is 1.20.2 and was released +on 2 May 2022. See https://gstreamer.freedesktop.org/releases/1.20/ for the latest version of this document. -Last updated: Monday 14 March 2022, 00:30 UTC (log) +Last updated: Monday 2 May 2022, 0:30 UTC (log) Introduction @@ -2076,6 +2076,221 @@ - List of Merge Requests applied in 1.20.1 - List of Issues fixed in 1.20.1 +1.20.2 + +The second 1.20 bug-fix release (1.20.2) was released on 2 May 2022. + +This release only contains bugfixes and it should be safe to update from +1.20.x. + +Highlighted bugfixes in 1.20.2 + +- avviddec: Remove vc1/wmv3 override and fix crashes on WMV files with + FFMPEG 5.0+ +- macOS: fix plugin discovery for GStreamer installed via brew and fix + loading of Rust plugins +- rtpbasepayload: various header extension handling fixes +- rtpopusdepay: fix regression in stereo input handling if + sprop-stereo is not advertised +- rtspclientsink: fix possible shutdown deadlock +- mpegts: gracefully handle “empty” program maps and fix AC-4 + detection +- mxfdemux: Handle empty VANC packets and fix EOS handling +- playbin3: various playbin3, uridecodebin3, and playsink fixes +- ptpclock: fix initial sync-up with certain devices +- gltransformation: let graphene alloc its structures memory aligned +- webrtcbin fixes and webrtc sendrecv example improvements +- video4linux2: various fixes including some fixes for Raspberry Pi + users +- videorate segment handling fixes and other fixes +- nvh264dec, nvh265dec: Fix broken key-unit trick modes and reverse + playback +- wpe: Reintroduce persistent WebContext +- cerbero: Make it easier to consume 1.20.1 macOS GStreamer .pkgs +- build fixes and gobject annotation fixes +- bug fixes, security fixes, memory leak fixes, and other stability + and reliability improvements + +gstreamer + +- devicemonitor: clean up signal handlers and hidden providers list +- Leaks tracer: fix pthread_atfork return value check leading to bogus + warning in log +- Rust plugins: Not picked up by the plugin loader on macOS +- Failed to use plugins of latest GStreamer version 1.20.x installed + by brew on macOS +- ptpclock: Allow at least 100ms delay between Sync/Follow_Up and + Delay_Req/Delay_Resp messages. Fixes problems acquiring initial sync + with certain devices +- meson: Add -Wl,-rpath,${libdir} on macOS +- registry: skip Rust dep builddirs when searching for plugins + recursively + +gst-plugins-base + +- appsrc: Clarify buffer ref semantics in signals documentation +- appsrc: fix annotations for bindings +- typefind: Skip extension parsing for data:// URIs, fixing regression + with mp4 files serialised to data uris +- playbin3: various fixes +- playbin3: fix missing lock when unknown stream type in pad-removed + cb +- decodebin3: fix collection leaks +- decodebin3: Don’t duplicate stream selections +- discoverer: chain up to parent finalize methods in all our types to + fix memory leaks +- glmixerbin: slightly better pad/element creation +- gltransformation: let graphene alloc its structures memory aligned +- ogg: fix possible buffer overrun +- rtpbasepayload: Don’t write header extensions if there’s no + corresponding… +- rtpbasepayload: always store input buffer meta before negotiation +- rtpbasepayload: fix transfer annotation for push and push_list +- subparse: don’t try to index string with -1 +- riff-media: fix memory leak after usage for g_strjoin() +- playbin/playbin3: Allow setting a NULL URI +- playsink: Complete reconfiguration on pad release. +- parsebin: Expose streams of unknown type +- pbutils: Fix wmv screen description detection +- subparse: don’t deref a potentially NULL variable +- rawvideoparse: set format from caps in + gst_raw_video_parse_set_config_from_caps +- videodecoder: release stream lock after handling gap events +- videorate: fix assertion when pushing last and only buffer without + duration +- videorate: Revert “don’t reset on segment update” to fix segment + handling regressions +- gst-play-1.0, gst-launch-1.0: Enable win32 high-resolution timer + also for MinGW build + +gst-plugins-good + +- deinterlace: silence unused-but-set werror from imported code +- qtdemux: fix leak of channel_mapping +- rtpopusdepay: missing sprop-stereo should not assume mono +- rtpjitterbuffer: Fix invalid memory access in + rtp_jitter_buffer_pop() +- rtpptdemux: fix leak of caps when ignoring a pt +- rtpredenc: quieten warning about ignoring header extensions +- soup: Fix pre-processor macros in souploader for libsoup-3.0 +- twcc: Note that twcc-stats packet loss counts reordering as loss + + add some logging +- video4linux2: Manual backports for RPi users +- wavparse: handle URI query in any parse state, fixing audio track + selection issue in GES +- wavparse: Unset DISCONT buffer flag for divided into multiple + buffers in push mode + +gst-plugins-bad + +- av1parse: Fix several issues about the colorimetry. +- av1parse: fix up various possible logic errors +- dashsink: fix missing mutex unlock in error code path when failing + to get content +- d3d11videosink: Fix for unhandled mouse double click events +- interlace: Also handle a missing “interlace-mode” field as + progressive +- msdk: fix build with MSVC +- mxfdemux: Fix issues at EOS +- mxfdemux: Handle empty VANC packets +- nvh264dec, nvh265dec: Fix broken key-unit trick and reverse playback +- nvvp9sldec: Increase DPB size to cover render delay +- rvsg: fix cairo include +- tsdemux: Fix AC-4 detection in MPEG-TS +- tsdemux: Handle “empty” PMT gracefully +- va: pool: don’t advertise the GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT + option any more +- v4l2codecs: Fix memory leak +- v4l2videodec: set frame duration according to framerate +- webrtcbin: Update documentation of ‘get-stats’ action signal +- webrtcbin: Check data channel transport for notifying + ‘ice-gathering-state’ +- webrtcbin: Avoid access of freed memory +- wpe: Reintroduce persistent WebContext +- Build: use CMake to find some openssl and exr deps +- Fix multiple “unused-but-set variable” compiler warnings + +gst-plugins-ugly + +- x264enc: Don’t try to fixate ANY allowed caps + +gst-libav + +- video decoders: fix frame leak on negotiation error +- Fix build on systems without C++ compiler +- avviddec: Remove vc1/wmv3 override (fixing crash with FFmpeg 5 +- Segfaults on ASF/WMV files with FFMPEG 5.0+ + +gst-rtsp-server + +- rtspclientsink: fix possible shutdown deadlock in collect_streams() +- Minor spelling fixes + +gstreamer-vaapi + +- No changes + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- Fix build on systems without C++ compiler + +gst-editing-services + +- License clarification: GES is released under the LGPL2+ license + +gst-examples: + +- Fix build on macOS with gtk+-quartz-3.0 +- player android: add missing dummy.cpp +- player android: update for android changes +- webrtc_sendrecv.py: Link pads instead of elements +- webrtc_sendrecv.py: Implement all negotiation modes + bugfixes + +Development build environment + gst-full build
View file
gst-plugins-bad-1.20.1.tar.xz/RELEASE -> gst-plugins-bad-1.20.2.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-bad 1.20.1. +This is GStreamer gst-plugins-bad 1.20.2. The GStreamer team is thrilled to announce a new major feature release of your favourite cross-platform multimedia framework!
View file
gst-plugins-bad-1.20.1.tar.xz/ext/dash/gstdashsink.c -> gst-plugins-bad-1.20.2.tar.xz/ext/dash/gstdashsink.c
Changed
@@ -854,8 +854,10 @@ g_mutex_lock (&sink->mpd_lock); gst_dash_sink_generate_mpd_content (sink, current_stream); - if (!gst_mpd_client_get_xml_content (sink->mpd_client, &mpd_content, &size)) + if (!gst_mpd_client_get_xml_content (sink->mpd_client, &mpd_content, &size)) { + g_mutex_unlock (&sink->mpd_lock); return; + } g_mutex_unlock (&sink->mpd_lock); if (sink->mpd_root_path)
View file
gst-plugins-bad-1.20.1.tar.xz/ext/openexr/meson.build -> gst-plugins-bad-1.20.2.tar.xz/ext/openexr/meson.build
Changed
@@ -1,4 +1,5 @@ -openexr_dep = dependency('OpenEXR', required: get_option('openexr')) +openexr_dep = dependency('OpenEXR', modules: 'OpenEXR::IlmImf', required: get_option('openexr')) + if openexr_dep.found() openexr_override_options = # Older versions of openexr fail to build with -Werror when using GCC >= 9.2
View file
gst-plugins-bad-1.20.1.tar.xz/ext/resindvd/gstpesfilter.c -> gst-plugins-bad-1.20.2.tar.xz/ext/resindvd/gstpesfilter.c
Changed
@@ -114,7 +114,7 @@ guint32 start_code; gboolean STD_buffer_bound_scale G_GNUC_UNUSED; - guint16 STD_buffer_size_bound; + guint16 STD_buffer_size_bound G_GNUC_UNUSED; const guint8 *data; gint avail, datalen; gboolean have_size = FALSE;
View file
gst-plugins-bad-1.20.1.tar.xz/ext/rsvg/gstrsvgdec.h -> gst-plugins-bad-1.20.2.tar.xz/ext/rsvg/gstrsvgdec.h
Changed
@@ -24,7 +24,7 @@ #include <gst/base/gstadapter.h> #include <gst/video/video.h> -#include <cairo/cairo.h> +#include <cairo.h> #include <librsvg/rsvg.h>
View file
gst-plugins-bad-1.20.1.tar.xz/ext/webrtc/gstwebrtcbin.c -> gst-plugins-bad-1.20.2.tar.xz/ext/webrtc/gstwebrtcbin.c
Changed
@@ -1102,7 +1102,11 @@ { #define STATE(val) GST_WEBRTC_ICE_GATHERING_STATE_ ## val GstWebRTCICEGatheringState any_state = 0; - gboolean all_completed = webrtc->priv->transceivers->len > 0; + GstWebRTCICEGatheringState ice_state; + GstWebRTCDTLSTransport *dtls_transport; + GstWebRTCICETransport *transport; + gboolean all_completed = webrtc->priv->transceivers->len > 0 || + webrtc->priv->data_channel_transport; int i; for (i = 0; i < webrtc->priv->transceivers->len; i++) { @@ -1110,9 +1114,6 @@ g_ptr_array_index (webrtc->priv->transceivers, i); WebRTCTransceiver *trans = WEBRTC_TRANSCEIVER (rtp_trans); TransportStream *stream = trans->stream; - GstWebRTCDTLSTransport *dtls_transport; - GstWebRTCICETransport *transport; - GstWebRTCICEGatheringState ice_state; if (rtp_trans->stopped || stream == NULL) { GST_TRACE_OBJECT (webrtc, "transceiver %p stopped or unassociated", @@ -1143,6 +1144,20 @@ all_completed = FALSE; } + /* check data channel transport gathering state */ + if (all_completed && webrtc->priv->data_channel_transport) { + if ((dtls_transport = webrtc->priv->data_channel_transport->transport)) { + transport = dtls_transport->transport; + g_object_get (transport, "gathering-state", &ice_state, NULL); + GST_TRACE_OBJECT (webrtc, + "data channel transport %p gathering state: 0x%x", dtls_transport, + ice_state); + any_state |= (1 << ice_state); + if (ice_state != STATE (COMPLETE)) + all_completed = FALSE; + } + } + GST_TRACE_OBJECT (webrtc, "ICE gathering state: 0x%x", any_state); /* Any of the RTCIceTransport s are in the gathering state. */ @@ -1813,7 +1828,6 @@ caps = _query_pad_caps (webrtc, rtp_trans, pad, filter, error); } - gst_object_unref (pad); if (*error) goto out; @@ -1867,6 +1881,8 @@ out: + if (pad) + gst_object_unref (pad); if (codec_preferences) gst_caps_unref (codec_preferences); @@ -4010,7 +4026,7 @@ goto rejected; } - GST_TRACE_OBJECT (webrtc, "trying to compare %" GST_PTR_FORMAT + GST_LOG_OBJECT (webrtc, "trying to compare %" GST_PTR_FORMAT " and %" GST_PTR_FORMAT, offer_caps, trans_caps); /* FIXME: technically this is a little overreaching as some fields we @@ -4041,6 +4057,8 @@ /* if no transceiver, then we only receive that stream and respond with * the intersection with the transceivers codec preferences caps */ answer_dir = GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY; + GST_WARNING_OBJECT (webrtc, "did not find compatible transceiver for " + "offer caps %" GST_PTR_FORMAT ", will only receive", offer_caps); } if (!rtp_trans) { @@ -7679,25 +7697,29 @@ * "ssrc" G_TYPE_STRING the rtp sequence src in use * "transport-id" G_TYPE_STRING identifier for the associated RTCTransportStats for this stream * "codec-id" G_TYPE_STRING identifier for the associated RTCCodecStats for this stream - * "fir-count" G_TYPE_UINT FIR requests received by the sender (only for local statistics) - * "pli-count" G_TYPE_UINT PLI requests received by the sender (only for local statistics) - * "nack-count" G_TYPE_UINT NACK requests received by the sender (only for local statistics) * * RTCReceivedStreamStats supported fields (https://w3c.github.io/webrtc-stats/#receivedrtpstats-dict*) * - * "packets-received" G_TYPE_UINT64 number of packets received (only for local inbound) - * "bytes-received" G_TYPE_UINT64 number of bytes received (only for local inbound) - * "packets-lost" G_TYPE_UINT number of packets lost - * "jitter" G_TYPE_DOUBLE packet jitter measured in secondss + * "packets-received" G_TYPE_UINT64 number of packets received (only for local inbound) + * "packets-lost" G_TYPE_UINT64 number of packets lost + * "packets-discarded" G_TYPE_UINT64 number of packets discarded + * "packets-repaired" G_TYPE_UINT64 number of packets repaired + * "jitter" G_TYPE_DOUBLE packet jitter measured in seconds * * RTCInboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#inboundrtpstats-dict*) * * "remote-id" G_TYPE_STRING identifier for the associated RTCRemoteOutboundRTPStreamStats + * "bytes-received" G_TYPE_UINT64 number of bytes received (only for local inbound) + * "packets-duplicated" G_TYPE_UINT64 number of packets duplicated + * "fir-count" G_TYPE_UINT FIR packets sent by the receiver + * "pli-count" G_TYPE_UINT PLI packets sent by the receiver + * "nack-count" G_TYPE_UINT NACK packets sent by the receiver * * RTCRemoteInboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#remoteinboundrtpstats-dict*) * * "local-id" G_TYPE_STRING identifier for the associated RTCOutboundRTPSTreamStats * "round-trip-time" G_TYPE_DOUBLE round trip time of packets measured in seconds + * "fraction-lost" G_TYPE_DOUBLE fraction packet loss * * RTCSentRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#sentrtpstats-dict*) * @@ -7707,10 +7729,14 @@ * RTCOutboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#outboundrtpstats-dict*) * * "remote-id" G_TYPE_STRING identifier for the associated RTCRemoteInboundRTPSTreamStats + * "fir-count" G_TYPE_UINT FIR packets received by the sender + * "pli-count" G_TYPE_UINT PLI packets received by the sender + * "nack-count" G_TYPE_UINT NACK packets received by the sender * * RTCRemoteOutboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#remoteoutboundrtpstats-dict*) * * "local-id" G_TYPE_STRING identifier for the associated RTCInboundRTPSTreamStats + * "remote-timestamp" G_TYPE_DOUBLE remote timestamp the statistics were sent by the remote * */ gst_webrtc_bin_signalsGET_STATS_SIGNAL =
View file
gst-plugins-bad-1.20.1.tar.xz/ext/wpe/WPEThreadedView.cpp -> gst-plugins-bad-1.20.2.tar.xz/ext/wpe/WPEThreadedView.cpp
Changed
@@ -346,11 +346,13 @@ WPEView* view = nullptr; dispatch(&() mutable { - auto* manager = webkit_website_data_manager_new_ephemeral(); - auto web_context = webkit_web_context_new_with_website_data_manager(manager); - g_object_unref(manager); - - view = new WPEView(web_context, src, context, display, width, height); + if (!glib.web_context) { + auto *manager = webkit_website_data_manager_new_ephemeral(); + glib.web_context = + webkit_web_context_new_with_website_data_manager(manager); + g_object_unref(manager); + } + view = new WPEView(glib.web_context, src, context, display, width, height); }); if (view && view->hasUri()) {
View file
gst-plugins-bad-1.20.1.tar.xz/gst-libs/gst/mpegts/gst-dvb-section.c -> gst-plugins-bad-1.20.2.tar.xz/gst-libs/gst/mpegts/gst-dvb-section.c
Changed
@@ -203,7 +203,7 @@ _parse_eit (GstMpegtsSection * section) { GstMpegtsEIT *eit = NULL; - guint i = 0, allocated_events = 12; + guint allocated_events = 12; guint8 *data, *end, *duration_ptr; guint16 descriptors_loop_length; @@ -267,8 +267,6 @@ if (event->descriptors == NULL) goto error; data += descriptors_loop_length; - - i += 1; } if (data != end - 4) { @@ -362,7 +360,7 @@ _parse_bat (GstMpegtsSection * section) { GstMpegtsBAT *bat = NULL; - guint i = 0, allocated_streams = 12; + guint allocated_streams = 12; guint8 *data, *end, *entry_begin; guint16 descriptors_loop_length, transport_stream_loop_length; @@ -444,7 +442,6 @@ data += descriptors_loop_length; - i += 1; transport_stream_loop_length -= data - entry_begin; } @@ -540,7 +537,7 @@ _parse_nit (GstMpegtsSection * section) { GstMpegtsNIT *nit = NULL; - guint i = 0, allocated_streams = 12; + guint allocated_streams = 12; guint8 *data, *end, *entry_begin; guint16 descriptors_loop_length, transport_stream_loop_length; @@ -625,7 +622,6 @@ data += descriptors_loop_length; - i += 1; transport_stream_loop_length -= data - entry_begin; } @@ -882,7 +878,7 @@ _parse_sdt (GstMpegtsSection * section) { GstMpegtsSDT *sdt = NULL; - guint i = 0, allocated_services = 8; + guint allocated_services = 8; guint8 *data, *end, *entry_begin; guint tmp; guint sdt_info_length; @@ -954,7 +950,6 @@ data += descriptors_loop_length; sdt_info_length -= data - entry_begin; - i += 1; } if (data != end - 4) { @@ -1313,7 +1308,7 @@ _parse_sit (GstMpegtsSection * section) { GstMpegtsSIT *sit = NULL; - guint i = 0, allocated_services = 8; + guint allocated_services = 8; guint8 *data, *end, *entry_begin; guint sit_info_length; guint descriptors_loop_length; @@ -1373,7 +1368,6 @@ data += descriptors_loop_length; sit_info_length -= data - entry_begin; - i += 1; } if (data != end - 4) {
View file
gst-plugins-bad-1.20.1.tar.xz/gst-plugins-bad.doap -> gst-plugins-bad-1.20.2.tar.xz/gst-plugins-bad.doap
Changed
@@ -35,6 +35,16 @@ <release> <Version> + <revision>1.20.2</revision> + <branch>1.20</branch> + <name></name> + <created>2022-05-02</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.20.2.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.20.1</revision> <branch>1.20</branch> <name></name>
View file
gst-plugins-bad-1.20.1.tar.xz/gst/interlace/gstinterlace.c -> gst-plugins-bad-1.20.2.tar.xz/gst/interlace/gstinterlace.c
Changed
@@ -775,7 +775,8 @@ interlace_mode = gst_structure_get_string (s, "interlace-mode"); /* Do not double the framerate for interlaced - we will either passthrough * or fail to negotiate */ - if (skip_progressive && (g_strcmp0 (interlace_mode, "progressive") != 0)) + if (skip_progressive && (interlace_mode + && g_strcmp0 (interlace_mode, "progressive") != 0)) continue; if (G_VALUE_TYPE (val) == GST_TYPE_FRACTION) { @@ -891,6 +892,8 @@ top_field_first = interlace->top_field_first; GST_OBJECT_UNLOCK (interlace); + GST_DEBUG_OBJECT (pad, "Querying caps with filter %" GST_PTR_FORMAT, filter); + if (filter != NULL) { clean_filter = gst_caps_copy (filter); if (pattern == GST_INTERLACE_PATTERN_1_1) { @@ -928,9 +931,12 @@ } } + GST_DEBUG_OBJECT (pad, "Querying peer with filter %" GST_PTR_FORMAT, + clean_filter); tcaps = gst_pad_get_pad_template_caps (otherpad); othercaps = gst_pad_peer_query_caps (otherpad, clean_filter); othercaps = gst_caps_make_writable (othercaps); + GST_DEBUG_OBJECT (pad, "Other caps %" GST_PTR_FORMAT, othercaps); if (othercaps) { if (pattern == GST_INTERLACE_PATTERN_2_2) { for (i = 0; i < gst_caps_get_size (othercaps); ++i) {
View file
gst-plugins-bad-1.20.1.tar.xz/gst/mpegdemux/gstpesfilter.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegdemux/gstpesfilter.c
Changed
@@ -114,7 +114,7 @@ guint32 start_code; gboolean STD_buffer_bound_scale G_GNUC_UNUSED; - guint16 STD_buffer_size_bound; + guint16 STD_buffer_size_bound G_GNUC_UNUSED; const guint8 *data; gint avail, datalen; gboolean have_size = FALSE;
View file
gst-plugins-bad-1.20.1.tar.xz/gst/mpegtsdemux/gstmpegdefs.h -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegtsdemux/gstmpegdefs.h
Changed
@@ -56,7 +56,6 @@ #define ST_PS_DVD_SUBPICTURE 0xff /* Blu-ray related (registration: 'HDMV'*/ -#define ST_BD_AUDIO_AC4 0x06 #define ST_BD_AUDIO_LPCM 0x80 #define ST_BD_AUDIO_AC3 0x81 #define ST_BD_AUDIO_DTS 0x82
View file
gst-plugins-bad-1.20.1.tar.xz/gst/mpegtsdemux/mpegtsbase.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegtsdemux/mpegtsbase.c
Changed
@@ -1190,6 +1190,12 @@ return TRUE; } + /* Don't attempt to handle pmt without any streams */ + if (G_UNLIKELY (pmt->streams->len == 0)) { + GST_WARNING ("Skipping PMT without any entries"); + return TRUE; + } + program_number = section->subtable_extension; GST_DEBUG ("Applying PMT (program_number:%d, pid:0x%04x)", program_number, section->pid);
View file
gst-plugins-bad-1.20.1.tar.xz/gst/mpegtsdemux/tsdemux.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegtsdemux/tsdemux.c
Changed
@@ -1382,14 +1382,6 @@ is_audio = TRUE; caps = gst_caps_new_empty_simple ("audio/x-eac3"); break; - case ST_BD_AUDIO_AC4: - /* Opus also uses 0x06, and there are bad streams that have HDMV registration ID, - * but contain an Opus registration id, so check for it */ - if (bstream->registration_id != DRF_ID_OPUS) { - is_audio = TRUE; - caps = gst_caps_new_empty_simple ("audio/x-ac4"); - } - break; case ST_BD_AUDIO_AC3_TRUE_HD: is_audio = TRUE; caps = gst_caps_new_empty_simple ("audio/x-true-hd");
View file
gst-plugins-bad-1.20.1.tar.xz/gst/mpegtsmux/gstbasetsmux.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegtsmux/gstbasetsmux.c
Changed
@@ -2112,7 +2112,7 @@ GstIterator *iter; GValue sinkpad_value = G_VALUE_INIT; GstClockTime running_time; - gboolean all_headers, done = FALSE, res = FALSE; + gboolean all_headers, done = FALSE; guint count; if (!gst_video_event_is_force_key_unit (event))
View file
gst-plugins-bad-1.20.1.tar.xz/gst/mxf/mxfdemux.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mxf/mxfdemux.c
Changed
@@ -3109,11 +3109,11 @@ ret = gst_mxf_demux_pad_set_component (demux, pad, pad->current_component_index + 1); - if (ret != GST_FLOW_OK && ret != GST_FLOW_EOS) { - GST_ERROR_OBJECT (demux, "Switching component failed"); - } else { + if (ret == GST_FLOW_OK) { pad->current_essence_track->position = pad->current_essence_track_position; + } else if (ret != GST_FLOW_EOS) { + GST_ERROR_OBJECT (demux, "Switching component failed"); } } else if (etrack->duration > 0 && pad->current_essence_track_position >= etrack->duration) { @@ -4136,6 +4136,7 @@ /* We entered a new partition */ if (ret == GST_FLOW_OK && mxf_is_partition_pack (&klv.key)) { GstMXFDemuxPartition *partition = demux->current_partition; + gboolean partition_done = FALSE; /* Grab footer metadata if needed */ if (demux->pull_footer_metadata @@ -4178,8 +4179,13 @@ "Track already at another position : %" G_GINT64_FORMAT, partition->single_track->position); if (find_edit_entry (demux, partition->single_track, - partition->single_track->position, FALSE, &entry)) + partition->single_track->position, FALSE, &entry)) { lowest_offset = entry.offset; + } else if (partition->single_track->position >= + partition->single_track->duration) { + GST_DEBUG_OBJECT (demux, "Track fully consumed, partition done"); + partition_done = TRUE; + } } } else { guint i; @@ -4207,14 +4213,15 @@ } } - if (lowest_offset != G_MAXUINT64) { + if (partition_done || lowest_offset != G_MAXUINT64) { GstMXFDemuxPartition *next_partition = NULL; GList *cur_part = g_list_find (demux->partitions, partition); if (cur_part && cur_part->next) next_partition = (GstMXFDemuxPartition *) cur_part->next->data; /* If we have completely processed this partition, skip to next partition */ - if (lowest_offset > next_partition->partition.this_partition) { + if (partition_done + || lowest_offset > next_partition->partition.this_partition) { GST_DEBUG_OBJECT (demux, "Partition entirely processed, skipping to next one"); demux->offset = next_partition->partition.this_partition;
View file
gst-plugins-bad-1.20.1.tar.xz/gst/mxf/mxfvanc.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mxf/mxfvanc.c
Changed
@@ -116,7 +116,9 @@ return GST_FLOW_ERROR; } - if (gst_buffer_get_size (buffer) < 2) { + /* Either there is no data or there is at least room for the 16bit length, + * therefore the only invalid packet length is 1 */ + if (gst_buffer_get_size (buffer) == 1) { GST_ERROR ("Invalid VANC essence element size"); gst_buffer_unref (buffer); return GST_FLOW_ERROR; @@ -125,6 +127,11 @@ gst_buffer_map (buffer, &map, GST_MAP_READ); gst_byte_reader_init (&reader, map.data, map.size); + /* Some XDCAM recorders store empty vanc packets (without even the + * length). Treat them as gaps */ + if (map.size == 0) + goto no_data; + num_packets = gst_byte_reader_get_uint16_be_unchecked (&reader); if (num_packets == 0) { /* SMPTE 436-1:2013 5.5 The Number of VI Lines or ANC Packets Property
View file
gst-plugins-bad-1.20.1.tar.xz/gst/speed/gstspeed.c -> gst-plugins-bad-1.20.2.tar.xz/gst/speed/gstspeed.c
Changed
@@ -520,7 +520,7 @@ case GST_EVENT_SEGMENT:{ gdouble rate; GstFormat format; - gint64 start_value, stop_value, base; + gint64 start_value, stop_value; const GstSegment *segment; GstSegment seg; @@ -530,7 +530,6 @@ format = segment->format; start_value = segment->start; stop_value = segment->stop; - base = segment->base; gst_event_unref (event); @@ -545,7 +544,6 @@ start_value /= filter->speed; if (stop_value >= 0) stop_value /= filter->speed; - base /= filter->speed; /* this would only really be correct if we clipped incoming data */ filter->timestamp = start_value;
View file
gst-plugins-bad-1.20.1.tar.xz/gst/videoparsers/gstav1parse.c -> gst-plugins-bad-1.20.2.tar.xz/gst/videoparsers/gstav1parse.c
Changed
@@ -1177,29 +1177,30 @@ if (seq_header.color_config.color_description_present_flag) { GstVideoColorimetry cinfo; - gboolean have_cinfo = TRUE; gchar *colorimetry = NULL; - if (have_cinfo) { - if (seq_header.color_config.color_range) - cinfo.range = GST_VIDEO_COLOR_RANGE_16_235; - else - cinfo.range = GST_VIDEO_COLOR_RANGE_0_255; - - cinfo.matrix = gst_video_color_matrix_from_iso - (seq_header.color_config.matrix_coefficients); - cinfo.transfer = gst_video_transfer_function_from_iso - (seq_header.color_config.transfer_characteristics); - cinfo.primaries = gst_video_color_primaries_from_iso - (seq_header.color_config.color_primaries); - colorimetry = gst_video_colorimetry_to_string (&cinfo); - } + if (seq_header.color_config.color_range) + cinfo.range = GST_VIDEO_COLOR_RANGE_0_255; + else + cinfo.range = GST_VIDEO_COLOR_RANGE_16_235; + + cinfo.matrix = gst_video_color_matrix_from_iso + (seq_header.color_config.matrix_coefficients); + cinfo.transfer = gst_video_transfer_function_from_iso + (seq_header.color_config.transfer_characteristics); + cinfo.primaries = gst_video_color_primaries_from_iso + (seq_header.color_config.color_primaries); + + colorimetry = gst_video_colorimetry_to_string (&cinfo); - if (g_strcmp0 (colorimetry, self->colorimetry)) { - g_clear_pointer (&self->colorimetry, g_free); + if (g_strcmp0 (colorimetry, self->colorimetry) != 0) { + g_free (self->colorimetry); self->colorimetry = colorimetry; + colorimetry = NULL; self->update_caps = TRUE; } + + g_clear_pointer (&colorimetry, g_free); } if (self->subsampling_x != seq_header.color_config.subsampling_x) { @@ -1544,7 +1545,7 @@ GstMapInfo map_info; GstAV1OBU obu; GstFlowReturn ret = GST_FLOW_OK; - GstAV1ParserResult res; + GstAV1ParserResult res = GST_AV1_PARSER_INVALID_OPERATION; GstBuffer *buffer = gst_buffer_ref (frame->buffer); guint32 total_consumed, consumed; gboolean frame_complete; @@ -1773,7 +1774,7 @@ GstAV1Parse *self = GST_AV1_PARSE (parse); GstMapInfo map_info; GstAV1OBU obu; - GstAV1ParserResult res; + GstAV1ParserResult res = GST_AV1_PARSER_INVALID_OPERATION; GstBuffer *buffer = gst_buffer_ref (frame->buffer); gboolean got_seq, got_frame; gboolean frame_complete;
View file
gst-plugins-bad-1.20.1.tar.xz/meson.build -> gst-plugins-bad-1.20.2.tar.xz/meson.build
Changed
@@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.20.1', + version : '1.20.2', meson_version : '>= 0.59', default_options : 'warning_level=1', 'buildtype=debugoptimized' )
View file
gst-plugins-bad-1.20.1.tar.xz/po/gst-plugins-bad-1.0.pot -> gst-plugins-bad-1.20.2.tar.xz/po/gst-plugins-bad-1.0.pot
Changed
@@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: gst-plugins-bad-1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-03-14 11:40+0000\n" +"POT-Creation-Date: 2022-05-02 23:30+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -89,7 +89,7 @@ msgstr "" #: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:4102 -#: gst/mpegtsdemux/mpegtsbase.c:1751 +#: gst/mpegtsdemux/mpegtsbase.c:1757 msgid "Internal data stream error." msgstr ""
View file
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/avfassetsrc.m -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/avfassetsrc.m
Changed
@@ -1011,18 +1011,15 @@ { CMSampleBufferRef cmbuf; AVAssetReaderTrackOutput *areader = NULL; - GstCaps *caps; GstBuffer *buf; CMTime dur, ts; GST_LOG ("Reading %s next buffer", MEDIA_TYPE_TO_STR (type)); if (type == GST_AVF_ASSET_READER_MEDIA_TYPE_AUDIO && audio_track != NULL) { areader = audio_track; - caps = audio_caps; } else if (type == GST_AVF_ASSET_READER_MEDIA_TYPE_VIDEO && video_track != NULL) { areader = video_track; - caps = video_caps; } if (areader == NULL) {
View file
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/avsamplevideosink.m -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/avsamplevideosink.m
Changed
@@ -77,13 +77,11 @@ gst_av_sample_video_sink_class_init (GstAVSampleVideoSinkClass * klass) { GObjectClass *gobject_class; - GstElementClass *gstelement_class; GstBaseSinkClass *gstbasesink_class; GstVideoSinkClass *gstvideosink_class; GstElementClass *element_class; gobject_class = (GObjectClass *) klass; - gstelement_class = (GstElementClass *) klass; gstbasesink_class = (GstBaseSinkClass *) klass; gstvideosink_class = (GstVideoSinkClass *) klass; element_class = GST_ELEMENT_CLASS (klass);
View file
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/corevideobuffer.c -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/corevideobuffer.c
Changed
@@ -206,10 +206,7 @@ gst_apple_core_video_pixel_buffer_unref (gpixbuf); if (info) { - GstVideoMeta *video_meta; - - video_meta = - gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE, + gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE, GST_VIDEO_INFO_FORMAT (info), info->width, info->height, n_planes, offset, stride); }
View file
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/iosurfaceglmemory.c -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/iosurfaceglmemory.c
Changed
@@ -216,7 +216,7 @@ IOSurfaceDecrementUseCount (memory->surface); memory->surface = surface; if (surface) { - GLuint tex_id, tex_target, texifmt, texfmt; + GLuint tex_id, tex_target, texifmt; guint plane; CGLError cglError; @@ -224,9 +224,6 @@ tex_id = gl_mem->tex_id; tex_target = gst_gl_texture_target_to_gl (gl_mem->tex_target); texifmt = gst_gl_format_from_video_info (context, &gl_mem->info, plane); - texfmt = - gst_gl_sized_gl_format_from_gl_format_type (context, texifmt, - GL_UNSIGNED_BYTE); gl->BindTexture (tex_target, tex_id); cglError = CGLTexImageIOSurface2D ((CGLContextObj) gst_gl_context_get_gl_context (context), tex_target, texifmt,
View file
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/videotexturecache.m -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/videotexturecache.m
Changed
@@ -68,18 +68,15 @@ GstVideoFormat in_format, GstCaps * out_caps) { GstCaps *in_caps; - GstCapsFeatures *features; g_return_if_fail (gst_caps_is_fixed (out_caps)); out_caps = gst_caps_copy (out_caps); - features = gst_caps_get_features (out_caps, 0); gst_video_info_from_caps (&cache->output_info, out_caps); in_caps = gst_caps_copy (out_caps); gst_caps_set_simple (in_caps, "format", G_TYPE_STRING, gst_video_format_to_string (in_format), NULL); - features = gst_caps_get_features (in_caps, 0); gst_video_info_from_caps (&cache->input_info, in_caps); gst_caps_take (&cache->in_caps, in_caps);
View file
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/vtdec.c -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/vtdec.c
Changed
@@ -608,7 +608,7 @@ { OSStatus status; CMSampleBufferRef cm_sample_buffer = NULL; - VTDecodeFrameFlags input_flags, output_flags; + VTDecodeFrameFlags input_flags; GstVtdec *vtdec = GST_VTDEC (decoder); GstFlowReturn ret = GST_FLOW_OK; int decode_frame_number = frame->decode_frame_number; @@ -629,7 +629,6 @@ * reordering ourselves. */ input_flags = kVTDecodeFrame_EnableAsynchronousDecompression; - output_flags = 0; cm_sample_buffer = cm_sample_buffer_from_gst_buffer (vtdec, frame->input_buffer);
View file
gst-plugins-bad-1.20.1.tar.xz/sys/d3d11/gstd3d11decoder.cpp -> gst-plugins-bad-1.20.2.tar.xz/sys/d3d11/gstd3d11decoder.cpp
Changed
@@ -58,7 +58,7 @@ #include <string> #ifdef HAVE_WINMM -#include <timeapi.h> +#include <mmsystem.h> #endif GST_DEBUG_CATEGORY_EXTERN (gst_d3d11_decoder_debug);
View file
gst-plugins-bad-1.20.1.tar.xz/sys/d3d11/gstd3d11window_win32.cpp -> gst-plugins-bad-1.20.2.tar.xz/sys/d3d11/gstd3d11window_win32.cpp
Changed
@@ -207,7 +207,7 @@ if (self->external_hwnd) { gst_d3d11_window_win32_release_external_handle (self->external_hwnd); - RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME); + RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME); if (self->internal_hwnd_thread == g_thread_self ()) { /* State changing thread is identical to internal window thread. @@ -223,7 +223,7 @@ * Instead, posts message so that it can be closed from window thread * asynchronously */ GST_INFO_OBJECT (self, "Posting custom destory message"); - PostMessage (self->internal_hwnd, WM_GST_D3D11_DESTROY_INTERNAL_WINDOW, + PostMessageA (self->internal_hwnd, WM_GST_D3D11_DESTROY_INTERNAL_WINDOW, 0, 0); } @@ -264,11 +264,11 @@ if (self->internal_hwnd_thread == g_thread_self ()) { /* We are on message pumping thread already, handle this synchroniously */ - SendMessage (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0); + SendMessageA (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0); } else { /* Post message to message pumping thread. Handling HWND specific message * on message pumping thread is not a worst idea in generall */ - PostMessage (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0); + PostMessageA (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0); } } else { /* XXX: Not sure what's expected behavior if we are drawing on internal @@ -363,7 +363,7 @@ g_main_loop_run (self->loop); - RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME); + RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME); gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd); self->internal_hwnd = NULL; self->internal_hwnd_thread = NULL; @@ -407,20 +407,20 @@ WNDPROC external_window_proc; external_window_proc = - (WNDPROC) GetWindowLongPtr (self->external_hwnd, GWLP_WNDPROC); + (WNDPROC) GetWindowLongPtrA (self->external_hwnd, GWLP_WNDPROC); GST_DEBUG_OBJECT (self, "set external window %" G_GUINTPTR_FORMAT ", original window procedure %p", (guintptr) self->external_hwnd, external_window_proc); - SetProp (self->external_hwnd, EXTERNAL_PROC_PROP_NAME, + SetPropA (self->external_hwnd, EXTERNAL_PROC_PROP_NAME, (HANDLE) external_window_proc); - SetProp (self->external_hwnd, D3D11_WINDOW_PROP_NAME, self); - SetWindowLongPtr (self->external_hwnd, GWLP_WNDPROC, + SetPropA (self->external_hwnd, D3D11_WINDOW_PROP_NAME, self); + SetWindowLongPtrA (self->external_hwnd, GWLP_WNDPROC, (LONG_PTR) sub_class_proc); /* Will create our internal window on parent window's thread */ - SendMessage (self->external_hwnd, WM_GST_D3D11_CONSTRUCT_INTERNAL_WINDOW, + SendMessageA (self->external_hwnd, WM_GST_D3D11_CONSTRUCT_INTERNAL_WINDOW, 0, 0); } @@ -432,7 +432,7 @@ if (!hwnd) return; - external_proc = (WNDPROC) GetProp (hwnd, EXTERNAL_PROC_PROP_NAME); + external_proc = (WNDPROC) GetPropA (hwnd, EXTERNAL_PROC_PROP_NAME); if (!external_proc) { GST_WARNING ("Failed to get original window procedure"); return; @@ -441,38 +441,38 @@ GST_DEBUG ("release external window %" G_GUINTPTR_FORMAT ", original window procedure %p", (guintptr) hwnd, external_proc); - RemoveProp (hwnd, EXTERNAL_PROC_PROP_NAME); - RemoveProp (hwnd, D3D11_WINDOW_PROP_NAME); + RemovePropA (hwnd, EXTERNAL_PROC_PROP_NAME); + RemovePropA (hwnd, D3D11_WINDOW_PROP_NAME); - if (!SetWindowLongPtr (hwnd, GWLP_WNDPROC, (LONG_PTR) external_proc)) + if (!SetWindowLongPtrA (hwnd, GWLP_WNDPROC, (LONG_PTR) external_proc)) GST_WARNING ("Couldn't restore original window procedure"); } static gboolean gst_d3d11_window_win32_create_internal_window (GstD3D11WindowWin32 * self) { - WNDCLASSEX wc; + WNDCLASSEXA wc; ATOM atom = 0; - HINSTANCE hinstance = GetModuleHandle (NULL); + HINSTANCE hinstance = GetModuleHandleA (NULL); GST_LOG_OBJECT (self, "Attempting to create a win32 window"); G_LOCK (create_lock); - atom = GetClassInfoEx (hinstance, "GSTD3D11", &wc); + atom = GetClassInfoExA (hinstance, "GSTD3D11", &wc); if (atom == 0) { GST_LOG_OBJECT (self, "Register internal window class"); - ZeroMemory (&wc, sizeof (WNDCLASSEX)); + ZeroMemory (&wc, sizeof (WNDCLASSEXA)); - wc.cbSize = sizeof (WNDCLASSEX); + wc.cbSize = sizeof (WNDCLASSEXA); wc.lpfnWndProc = window_proc; wc.hInstance = hinstance; wc.hIcon = LoadIcon (NULL, IDI_WINLOGO); - wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; + wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH); wc.lpszClassName = "GSTD3D11"; - atom = RegisterClassEx (&wc); + atom = RegisterClassExA (&wc); if (atom == 0) { G_UNLOCK (create_lock); @@ -488,7 +488,7 @@ self->internal_hwnd = 0; self->visible = FALSE; - self->internal_hwnd = CreateWindowEx (0, + self->internal_hwnd = CreateWindowExA (0, "GSTD3D11", "Direct3D11 renderer", WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW, @@ -540,7 +540,7 @@ if (!window->fullscreen) { /* Restore the window's attributes and size */ - SetWindowLong (hwnd, GWL_STYLE, self->restore_style); + SetWindowLongA (hwnd, GWL_STYLE, self->restore_style); SetWindowPos (hwnd, HWND_NOTOPMOST, self->restore_rect.left, @@ -564,7 +564,7 @@ self->restore_style = GetWindowLong (hwnd, GWL_STYLE); /* Make the window borderless so that the client area can fill the screen */ - SetWindowLong (hwnd, GWL_STYLE, + SetWindowLongA (hwnd, GWL_STYLE, self->restore_style & ~(WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU | WS_THICKFRAME)); @@ -672,7 +672,7 @@ break; case WM_CLOSE: if (self->internal_hwnd) { - RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME); + RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME); ShowWindow (self->internal_hwnd, SW_HIDE); gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd); self->internal_hwnd = NULL; @@ -690,14 +690,7 @@ case WM_MBUTTONDOWN: case WM_MBUTTONUP: case WM_MOUSEMOVE: - /* To handle mouse event only once, do this only for internal window */ - if (self->internal_hwnd && self->internal_hwnd == hWnd) - gst_d3d11_window_win32_on_mouse_event (self, hWnd, uMsg, wParam, - lParam); - - /* DefWindowProc will not chain up mouse event to parent window */ - if (self->external_hwnd && self->external_hwnd != hWnd) - SendMessage (self->external_hwnd, uMsg, wParam, lParam); + gst_d3d11_window_win32_on_mouse_event (self, hWnd, uMsg, wParam, lParam); break; case WM_SYSKEYDOWN: if ((window->fullscreen_toggle_mode & @@ -765,13 +758,13 @@ */ ReleaseDC (hWnd, self->device_handle); - SetProp (hWnd, D3D11_WINDOW_PROP_NAME, self); - } else if (GetProp (hWnd, D3D11_WINDOW_PROP_NAME)) { - HANDLE handle = GetProp (hWnd, D3D11_WINDOW_PROP_NAME); + SetPropA (hWnd, D3D11_WINDOW_PROP_NAME, self); + } else if (GetPropA (hWnd, D3D11_WINDOW_PROP_NAME)) { + HANDLE handle = GetPropA (hWnd, D3D11_WINDOW_PROP_NAME); if (!GST_IS_D3D11_WINDOW_WIN32 (handle)) { GST_WARNING ("%p is not d3d11window object", handle); - goto done; + return DefWindowProcA (hWnd, uMsg, wParam, lParam); } self = GST_D3D11_WINDOW_WIN32 (handle); @@ -780,6 +773,22 @@ gst_d3d11_window_win32_handle_window_proc (self, hWnd, uMsg, wParam, lParam); +
View file
gst-plugins-bad-1.20.1.tar.xz/sys/d3d11/meson.build -> gst-plugins-bad-1.20.2.tar.xz/sys/d3d11/meson.build
Changed
@@ -90,7 +90,7 @@ message('Enable D3D11 Desktop Duplication API') endif # multimedia clock is desktop only API - if has_decoder and winmm_lib.found() and cc.has_header('timeapi.h') + if has_decoder and winmm_lib.found() and cc.has_header('mmsystem.h') extra_args += '-DHAVE_WINMM' extra_dep += winmm_lib endif
View file
gst-plugins-bad-1.20.1.tar.xz/sys/msdk/msdk.c -> gst-plugins-bad-1.20.2.tar.xz/sys/msdk/msdk.c
Changed
@@ -187,7 +187,7 @@ mfxStatus sts = MFX_ERR_NONE; mfxLoader loader = NULL; mfxSession session = NULL; - uint32_t impl_idx = 0; + mfxU32 impl_idx = 0; mfxConfig cfg; mfxVariant impl_value;
View file
gst-plugins-bad-1.20.1.tar.xz/sys/nvcodec/gstnvdec.c -> gst-plugins-bad-1.20.2.tar.xz/sys/nvcodec/gstnvdec.c
Changed
@@ -914,11 +914,17 @@ gst_nvdec_start (GstVideoDecoder * decoder) { GstNvDec *nvdec = GST_NVDEC (decoder); + GstNvDecClass *klass = GST_NVDEC_GET_CLASS (nvdec); nvdec->state = GST_NVDEC_STATE_INIT; nvdec->last_ret = GST_FLOW_OK; gst_video_info_init (&nvdec->out_info); + if (klass->codec_type == cudaVideoCodec_H264) + nvdec->h264_parser = gst_h264_nal_parser_new (); + else if (klass->codec_type == cudaVideoCodec_HEVC) + nvdec->h265_parser = gst_h265_parser_new (); + return TRUE; } @@ -957,6 +963,34 @@ return ret; } +static void +gst_nvdec_clear_codec_data (GstNvDec * self) +{ + GstNvDecClass *klass = GST_NVDEC_GET_CLASS (self); + guint i; + + if (klass->codec_type == cudaVideoCodec_HEVC) { + for (i = 0; i < G_N_ELEMENTS (self->vps_nals); i++) { + gst_clear_buffer (&self->vps_nalsi); + } + } + + if (klass->codec_type == cudaVideoCodec_HEVC || + klass->codec_type == cudaVideoCodec_H264) { + for (i = 0; i < G_N_ELEMENTS (self->sps_nals); i++) { + gst_clear_buffer (&self->sps_nalsi); + } + + for (i = 0; i < G_N_ELEMENTS (self->pps_nals); i++) { + gst_clear_buffer (&self->pps_nalsi); + } + } + + gst_clear_buffer (&self->codec_data); + + self->need_codec_data = TRUE; +} + static gboolean gst_nvdec_stop (GstVideoDecoder * decoder) { @@ -968,33 +1002,18 @@ return FALSE; #ifdef HAVE_NVCODEC_GST_GL - if (nvdec->gl_context) { - gst_object_unref (nvdec->gl_context); - nvdec->gl_context = NULL; - } - - if (nvdec->other_gl_context) { - gst_object_unref (nvdec->other_gl_context); - nvdec->other_gl_context = NULL; - } - - if (nvdec->gl_display) { - gst_object_unref (nvdec->gl_display); - nvdec->gl_display = NULL; - } + gst_clear_object (&nvdec->gl_context); + gst_clear_object (&nvdec->other_gl_context); + gst_clear_object (&nvdec->gl_display); #endif - if (nvdec->input_state) { - gst_video_codec_state_unref (nvdec->input_state); - nvdec->input_state = NULL; - } + g_clear_pointer (&nvdec->input_state, gst_video_codec_state_unref); + g_clear_pointer (&nvdec->output_state, gst_video_codec_state_unref); - if (nvdec->output_state) { - gst_video_codec_state_unref (nvdec->output_state); - nvdec->output_state = NULL; - } + g_clear_pointer (&nvdec->h264_parser, gst_h264_nal_parser_free); + g_clear_pointer (&nvdec->h265_parser, gst_h265_parser_free); - gst_clear_buffer (&nvdec->codec_data); + gst_nvdec_clear_codec_data (nvdec); return TRUE; } @@ -1069,15 +1088,20 @@ gst_cuda_context_pop (NULL); /* store codec data */ + gst_nvdec_clear_codec_data (nvdec); + if (ret && nvdec->input_state->caps) { - const GValue *codec_data_value; GstStructure *str; str = gst_caps_get_structure (nvdec->input_state->caps, 0); - codec_data_value = gst_structure_get_value (str, "codec_data"); - if (codec_data_value && GST_VALUE_HOLDS_BUFFER (codec_data_value)) { - GstBuffer *codec_data = gst_value_get_buffer (codec_data_value); - gst_buffer_replace (&nvdec->codec_data, codec_data); + + if (klass->codec_type == cudaVideoCodec_MPEG4) { + const GValue *codec_data_value; + codec_data_value = gst_structure_get_value (str, "codec_data"); + if (codec_data_value && GST_VALUE_HOLDS_BUFFER (codec_data_value)) { + GstBuffer *codec_data = gst_value_get_buffer (codec_data_value); + gst_buffer_replace (&nvdec->codec_data, codec_data); + } } /* For all CODEC we get complete picture ... */ @@ -1325,11 +1349,315 @@ return TRUE; } +static void +gst_nvdec_store_h264_nal (GstNvDec * self, guint id, + GstH264NalUnitType nal_type, GstH264NalUnit * nalu) +{ + GstBuffer *buf, **store; + guint size = nalu->size, store_size; + static const guint8 start_code = { 0, 0, 1 }; + + if (nal_type == GST_H264_NAL_SPS || nal_type == GST_H264_NAL_SUBSET_SPS) { + store_size = GST_H264_MAX_SPS_COUNT; + store = self->sps_nals; + GST_DEBUG_OBJECT (self, "storing sps %u", id); + } else if (nal_type == GST_H264_NAL_PPS) { + store_size = GST_H264_MAX_PPS_COUNT; + store = self->pps_nals; + GST_DEBUG_OBJECT (self, "storing pps %u", id); + } else { + return; + } + + if (id >= store_size) { + GST_DEBUG_OBJECT (self, "unable to store nal, id out-of-range %d", id); + return; + } + + buf = gst_buffer_new_allocate (NULL, size + sizeof (start_code), NULL); + gst_buffer_fill (buf, 0, start_code, sizeof (start_code)); + gst_buffer_fill (buf, sizeof (start_code), nalu->data + nalu->offset, size); + + if (storeid) + gst_buffer_unref (storeid); + + storeid = buf; +} + +static GstBuffer * +gst_nvdec_handle_h264_buffer (GstNvDec * self, GstBuffer * buffer) +{ + GstH264NalParser *parser = self->h264_parser; + GstH264NalUnit nalu; + GstH264ParserResult pres; + GstMapInfo map; + gboolean have_sps = FALSE; + gboolean have_pps = FALSE; + guint i; + GstBuffer *new_buf; + + if (!gst_buffer_map (buffer, &map, GST_MAP_READ)) { + GST_WARNING_OBJECT (self, "Failed to map input buffer"); + return gst_buffer_ref (buffer); + } + + memset (&nalu, 0, sizeof (GstH264NalUnit)); + + do { + pres = gst_h264_parser_identify_nalu (parser, + map.data, nalu.offset + nalu.size, map.size, &nalu); + + if (pres == GST_H264_PARSER_NO_NAL_END) + pres = GST_H264_PARSER_OK; + + switch (nalu.type) { + case GST_H264_NAL_SPS: + case GST_H264_NAL_SUBSET_SPS:{ + GstH264SPS sps; + + if (nalu.type == GST_H264_NAL_SPS) { + pres = gst_h264_parser_parse_sps (parser, &nalu, &sps); + } else { + pres = gst_h264_parser_parse_subset_sps (parser, &nalu, &sps); + } + + if (pres != GST_H264_PARSER_OK) + break; +
View file
gst-plugins-bad-1.20.1.tar.xz/sys/nvcodec/gstnvdec.h -> gst-plugins-bad-1.20.2.tar.xz/sys/nvcodec/gstnvdec.h
Changed
@@ -34,6 +34,8 @@ #endif #include <gst/video/video.h> +#include <gst/codecparsers/gsth264parser.h> +#include <gst/codecparsers/gsth265parser.h> #include "gstcuvidloader.h" #include "gstcudaloader.h" #include "gstcudacontext.h" @@ -95,6 +97,14 @@ GstBuffer *codec_data; gboolean recv_complete_picture; + + GstH264NalParser *h264_parser; + GstH265Parser *h265_parser; + GstBuffer *vps_nalsGST_H265_MAX_VPS_COUNT; + GstBuffer *sps_nalsGST_H264_MAX_SPS_COUNT; + GstBuffer *pps_nalsGST_H264_MAX_PPS_COUNT; + + gboolean need_codec_data; }; struct _GstNvDecClass
View file
gst-plugins-bad-1.20.1.tar.xz/sys/nvcodec/gstnvvp9dec.c -> gst-plugins-bad-1.20.2.tar.xz/sys/nvcodec/gstnvvp9dec.c
Changed
@@ -273,7 +273,7 @@ cudaVideoCodec_VP9, &info, self->width, self->height, frame_hdr->bit_depth, /* +4 for render delay */ - NUM_OUTPUT_VIEW)) { + NUM_OUTPUT_VIEW + 4)) { GST_ERROR_OBJECT (self, "Failed to configure decoder"); return GST_FLOW_NOT_NEGOTIATED; }
View file
gst-plugins-bad-1.20.1.tar.xz/sys/v4l2codecs/gstv4l2decoder.c -> gst-plugins-bad-1.20.2.tar.xz/sys/v4l2codecs/gstv4l2decoder.c
Changed
@@ -114,6 +114,7 @@ g_free (self->media_device); g_free (self->video_device); gst_queue_array_free (self->request_pool); + gst_queue_array_free (self->pending_requests); G_OBJECT_CLASS (gst_v4l2_decoder_parent_class)->finalize (obj); }
View file
gst-plugins-bad-1.20.1.tar.xz/sys/va/gstvabasedec.c -> gst-plugins-bad-1.20.2.tar.xz/sys/va/gstvabasedec.c
Changed
@@ -362,11 +362,8 @@ gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META); - if (_need_video_crop (base)) { - gst_buffer_pool_config_add_option (config, - GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT); - gst_buffer_pool_config_set_video_alignment (config, &base->valign); - } + if (_need_video_crop (base)) + gst_buffer_pool_config_set_va_alignment (config, &base->valign); gst_buffer_pool_config_set_va_allocation_params (config, VA_SURFACE_ATTRIB_USAGE_HINT_DECODER); @@ -537,11 +534,8 @@ gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META); - if (base->need_valign) { - gst_buffer_pool_config_add_option (config, - GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT); - gst_buffer_pool_config_set_video_alignment (config, &base->valign); - } + if (base->need_valign) + gst_buffer_pool_config_set_va_alignment (config, &base->valign); gst_buffer_pool_config_set_va_allocation_params (config, VA_SURFACE_ATTRIB_USAGE_HINT_DECODER);
View file
gst-plugins-bad-1.20.1.tar.xz/sys/va/gstvapool.c -> gst-plugins-bad-1.20.2.tar.xz/sys/va/gstvapool.c
Changed
@@ -52,9 +52,7 @@ static const gchar ** gst_va_pool_get_options (GstBufferPool * pool) { - static const gchar *options = { GST_BUFFER_POOL_OPTION_VIDEO_META, - GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT, NULL - }; + static const gchar *options = { GST_BUFFER_POOL_OPTION_VIDEO_META, NULL }; return options; } @@ -68,6 +66,17 @@ return TRUE; } +static inline gboolean +gst_buffer_pool_config_get_va_alignment (GstStructure * config, + GstVideoAlignment * align) +{ + return gst_structure_get (config, + "va-padding-top", G_TYPE_UINT, &align->padding_top, + "va-padding-bottom", G_TYPE_UINT, &align->padding_bottom, + "va-padding-left", G_TYPE_UINT, &align->padding_left, + "va-padding-right", G_TYPE_UINT, &align->padding_right, NULL); +} + static gboolean gst_va_pool_set_config (GstBufferPool * pool, GstStructure * config) { @@ -111,12 +120,10 @@ GST_BUFFER_POOL_OPTION_VIDEO_META); /* parse extra alignment info */ - has_alignment = gst_buffer_pool_config_has_option (config, - GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT); + has_alignment = gst_buffer_pool_config_get_va_alignment (config, + &video_align); if (has_alignment) { - gst_buffer_pool_config_get_video_alignment (config, &video_align); - width += video_align.padding_left + video_align.padding_right; height += video_align.padding_bottom + video_align.padding_top; @@ -338,6 +345,17 @@ gst_structure_set (config, "usage-hint", G_TYPE_UINT, usage_hint, NULL); } +void +gst_buffer_pool_config_set_va_alignment (GstStructure * config, + const GstVideoAlignment * align) +{ + gst_structure_set (config, + "va-padding-top", G_TYPE_UINT, align->padding_top, + "va-padding-bottom", G_TYPE_UINT, align->padding_bottom, + "va-padding-left", G_TYPE_UINT, align->padding_left, + "va-padding-right", G_TYPE_UINT, align->padding_right, NULL); +} + gboolean gst_va_pool_requires_video_meta (GstBufferPool * pool) {
View file
gst-plugins-bad-1.20.1.tar.xz/sys/va/gstvapool.h -> gst-plugins-bad-1.20.2.tar.xz/sys/va/gstvapool.h
Changed
@@ -21,6 +21,7 @@ #pragma once #include <gst/gst.h> +#include <gst/video/video.h> G_BEGIN_DECLS @@ -30,14 +31,17 @@ GstBufferPool * gst_va_pool_new (void); gboolean gst_va_pool_requires_video_meta (GstBufferPool * pool); void gst_buffer_pool_config_set_va_allocation_params (GstStructure * config, - guint usage_hint); + guint usage_hint); + +void gst_buffer_pool_config_set_va_alignment (GstStructure * config, + const GstVideoAlignment * align); GstBufferPool * gst_va_pool_new_with_config (GstCaps * caps, - guint size, - guint min_buffers, - guint max_buffers, - guint usage_hint, - GstAllocator * allocator, - GstAllocationParams * alloc_params); + guint size, + guint min_buffers, + guint max_buffers, + guint usage_hint, + GstAllocator * allocator, + GstAllocationParams * alloc_params); G_END_DECLS
View file
gst-plugins-bad-1.20.1.tar.xz/tests/examples/camerabin2/gst-camerabin2-test.c -> gst-plugins-bad-1.20.2.tar.xz/tests/examples/camerabin2/gst-camerabin2-test.c
Changed
@@ -809,7 +809,7 @@ change_mode_after = gst_util_get_timestamp (); } - return TRUE; + return res; error: cleanup_pipeline (); return FALSE;
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.