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 17
View file
gstreamer-plugins-bad-codecs.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Sat Jul 1 15:54:57 UTC 2023 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.22.4 + +------------------------------------------------------------------- Thu May 25 17:06:42 UTC 2023 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.22.3
View file
gstreamer-plugins-bad-codecs.spec
Changed
@@ -7,7 +7,7 @@ %define _version 1.22.0 Name: gstreamer-plugins-bad-codecs -Version: 1.22.3 +Version: 1.22.4 Release: 0 Summary: Codecs/plugins for gstreamer-plugins-bad License: LGPL-2.1-or-later
View file
gst-plugins-bad-1.22.3.tar.xz/ChangeLog -> gst-plugins-bad-1.22.4.tar.xz/ChangeLog
Changed
@@ -1,3 +1,255 @@ +=== release 1.22.4 === + +2023-06-20 17:42:25 +0100 Tim-Philipp Müller <tim@centricular.com> + + * NEWS: + * RELEASE: + * gst-plugins-bad.doap: + * meson.build: + Release 1.22.4 + +2023-06-13 14:25:04 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/dvdspu/gstspu-pgs.c: + dvdspu: Avoid integer overflow when checking if enough data is available + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4899> + +2023-06-13 14:23:47 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/dvdspu/gstspu-pgs.c: + dvdspu: Make sure enough data is allocated for the available data + If the size read from the stream is smaller than the currently available + data then the size is bogus and the data should simply be discarded. + Fixes ZDI-CAN-20994 + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2660 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4899> + +2023-04-18 09:59:36 +0200 Andoni Morales Alastruey <amorales@fluendo.com> + + * sys/applemedia/vtenc.c: + * sys/applemedia/vtenc.h: + vtenc: remove duplicated framerate and size variables + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4888> + +2023-03-30 15:38:22 +0200 Andoni Morales Alastruey <amorales@fluendo.com> + + * sys/applemedia/meson.build: + * sys/applemedia/vtdec.h: + * sys/applemedia/vtenc.c: + * sys/applemedia/vtenc.h: + * tests/validate/meson.build: + * tests/validate/vtenc/vtenc_h264.validatetest: + * tests/validate/vtenc/vtenc_h264/flow-expectations/log-enc-src-expected: + * tests/validate/vtenc/vtenc_h264_b_frames.validatetest: + * tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations/log-enc-src-expected: + * tests/validate/vtenc/vtenc_h265.validatetest: + * tests/validate/vtenc/vtenc_h265/flow-expectations/log-enc-src-expected: + * tests/validate/vtenc/vtenc_h265_b_frames.validatetest: + * tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations/log-enc-src-expected: + vtenc: apply DTS offset to ensure DTS <= PTS + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4888> + +2023-03-23 20:04:49 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/videoparsers/gsth265parse.c: + h265parse: Don't override upstream framerate + The framerate should only be replaced (and corrected for alternating field) + when it is parsed from the bitstream. Otherwise, the upstream framerate + from caps should be trusted and assumed correct. + Related to gst-plugins-bad!2020 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352> + +2023-03-23 20:02:16 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/videoparsers/gsth265parse.c: + * gst/videoparsers/gsth265parse.h: + h265parse: Rename parsed_framerate to framerate_from_caps + That meaning of parsed_framerate is ambigious, it is set whenever the + framerate has been parsed from caps, which can be confused with being + parsed from the bitstream. Rename this as framerate_from_caps. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352> + +2023-02-15 13:10:39 +0800 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com> + + * gst/videoparsers/gsth265parse.c: + h265parse: Fix to check returned value + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352> + +2023-05-11 15:28:35 +0200 Michael Olbrich <m.olbrich@pengutronix.de> + + * gst/sdp/gstsdpdemux.c: + sdpdemux: ensure that only one srcpad is created per stream + If two senders use the same multicast IP and port then new_session_pad() + may try to add a srcpad to the same stream twice. + stream->srcpad is updated but gst_element_add_pad() fails the second + time. As a result stream->srcpad points to a deleted object and + access in gst_sdp_demux_stream_free() fails with a segfault. + Just ignore the second pad. Nothing useful can be done with it anyway. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4873> + +2023-06-11 22:22:36 +0200 Marek Vasut <marex@denx.de> + + * sys/kms/gstkmssink.c: + kmssink: Add ST STM32 LTDC auto-detection + Add STM32 LTDC controller into list of auto-detected modules. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4872> + +2023-06-11 22:22:25 +0200 Marek Vasut <marex@denx.de> + + * sys/kms/gstkmssink.c: + kmssink: Add NXP i.MX8M Plus LCDIFv3 auto-detection + Add i.MX8M Plus LCDIFv3 controller into list of auto-detected modules. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4872> + +2023-04-28 22:25:11 +0800 He Junyan <junyan.he@intel.com> + + * sys/va/gstvah265enc.c: + va: h265enc: map the mbbrc to correct enum value in get_property() + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4870> + +2023-04-28 22:26:34 +0800 He Junyan <junyan.he@intel.com> + + * sys/va/gstvah264enc.c: + va: h264enc: map the mbbrc to correct enum value in get_property() + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4870> + +2023-06-14 10:08:51 +0200 François Laignel <francois@centricular.com> + + * ext/srtp/gstsrtpdec.c: + srtpdec: fix Got data flow before segment event + A race condition can occur in `srtpdec` during the READY -> NULL transition: + an RTCP buffer can make its way to `gst_srtp_dec_chain` while the element is + partially stopped, resulting in the following critical warning: + > Got data flow before segment event + The problematic sequence is the following: + 1. An RTCP buffer is being handled by the chain function for the + `rtcp_sinkpad`. Since, this is the first buffer, we try pushing the sticky + events to `rtcp_srcpad`. + 2. At the same moment, the element is being transitioned from PAUSED to READY. + 3. While checking and pushing the sticky events for `rtcp_srcpad`, we reach the + Segment event. For this, we try to get it from the "otherpad", in this case + `rtp_srcpad`. In the problematic case, `rtp_srcpad` has already been + deactivated so its sticky events have been cleared. We won't be pushing any + Segment event to `rtcp_srcpad`. + 4. We return to the chain function for `rtcp_sinkpad` and try pushing the + buffer to `rtcp_srcpad` for which deactivation hasn't started yet, hence the + "Got data flow before segment event". + This commit: + - Adds a boolean return value to `gst_srtp_dec_push_early_events`: in case the + Segment event can't be retrieved, `gst_srtp_dec_chain` can return an error + instead of calling `gst_pad_push`. + - Replaces the obsolete `gst_pad_set_caps` with `gst_pad_push_event`. The + additional preconditions checked by previous function are guaranteed here + since we push a fixed Caps which was built in the same function. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4860> + +2023-06-15 11:11:39 +0200 François Laignel <francois@centricular.com> + + * ext/srtp/gstsrtpdec.c: + srtpdec: backport for fix assertion 'parent->numsinkpads <= 1' failed + Commit 96450f4c uses the new function `gst_element_decorate_stream_id` which + was introduced by 39633967 in 1.23. + This commit backports 96450f4c with a simplified version of + `gst_element_decorate_stream_id_internal` as a private srtpdec function. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4860> + +2023-06-15 01:36:25 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3dvideosink/d3dvideosink.c: + d3dvideosink: Fix navigation event leak + Fixing regression introduced in 6c2f6c3bd4dd525eb02c6d7000e84b76663d3daf + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4868> + +2023-06-13 01:29:14 +0100 Tim-Philipp Müller <tim@centricular.com> + + * gst/asfmux/gstasfobjects.c: + asfmux: fix potentially unaligned write on 32-bit ARM + Fixes #2665 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4855> + +2023-06-01 15:16:47 +0300 Sebastian Dröge <sebastian@centricular.com> + + * sys/decklink/gstdecklink.h: + decklink: Implement Windows string conversion with common API between MinGW and MSVC + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786> + +2023-06-01 15:17:26 +0300 Sebastian Dröge <sebastian@centricular.com> + + * sys/decklink/gstdecklink.h: + decklink: Add some newlines in long defines + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786> + +2023-05-31 23:44:42 +0300 Maksym Khomenko <maksym.khomenko@skelia.partners> + + * sys/decklink/gstdecklink.h: + decklink: Calculate string size before malloc + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786> + +2023-05-30 15:27:21 +0300 Sebastian Dröge <sebastian@centricular.com> + + * sys/decklink/gstdecklink.h: + decklink: Use the macOS version of the SDK on macOS and not the Linux one + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786> + +2023-05-30 13:23:28 +0300 Sebastian Dröge <sebastian@centricular.com> + + * sys/decklink/gstdecklink.h: + decklink: Free SDK strings after usage on Linux + While they're const char* they still need to be freed like on Windows + and macOS and would be leaked otherwise.
View file
gst-plugins-bad-1.22.3.tar.xz/NEWS -> gst-plugins-bad-1.22.4.tar.xz/NEWS
Changed
@@ -2,13 +2,13 @@ GStreamer 1.22.0 was originally released on 23 January 2023. -The latest bug-fix release in the stable 1.22 series is 1.22.3 and was -released on 19 May 2023. +The latest bug-fix release in the stable 1.22 series is 1.22.4 and was +released on 20 June 2023. See https://gstreamer.freedesktop.org/releases/1.22/ for the latest version of this document. -Last updated: Friday 19 May 2023, 01:00 UTC (log) +Last updated: Tuesday 20 June 2023, 16:30 UTC (log) Introduction @@ -1831,6 +1831,183 @@ - List of Merge Requests applied in 1.22.3 - List of Issues fixed in 1.22.3 +1.22.4 + +The fourth 1.22 bug-fix release (1.22.4) was released on 20 June 2023. + +This release only contains bugfixes and security fixes and it should be +safe to update from 1.22.x. + +Highlighted bugfixes in 1.22.4 + +- Security fixes for flacparse, dvdspu, and subparse +- d3d11videosink: Fix error on pause and play +- decklink: Correctly handle SDK strings on macOS and free strings + after usage on Linux +- filesink: Fix buffered mode writing of buffer lists and buffers with + multiple memories +- gldownload: handle passthrough without a critical +- h265parse: Fix framerate handling regression +- oggdemux: vp8 fixes +- mp4mux, qtmux, qtdemux: Opus audio mapping fixes +- pngdec: Fix wrong colours output from 16bit RGB images +- ptp clock: Work around ptpd bug in default configuration +- srtpdec: fix critical warnings on shutdown +- v4l2src: fix support for bayer format +- v4l2videoenc: support force-keyframe event in v4l2 encoder +- vtenc: apply DTS offset to ensure DTS <= PTS +- gst-python: allow more functions to be called before gst_init() +- cerbero: fix vaapi variant; add qt6 build on windows; ensure errors + on unguarded use of new APIs, require macOS 10.13 +- packages: ship codecalpha, rtponvif, dvbsubenc, switchbin, + videosignal plugins; fix pango crash on 32-bit windows +- various bug fixes, memory leak fixes, and other stability and + reliability improvements + +gstreamer + +- filesink: Fix buffered mode writing of buffer lists and buffers with + multiple memories +- basesink: Clear EOS flag on STREAM-START event +- typefindhelper: downgrade bogus error level debug log message +- ptp: Correctly parse clock ID from the commandline parameters in the + helper +- ptp: Work around bug in ptpd in default configuration + +gst-plugins-base + +- alsasink: Fix stall for transition from PAUSED to READY with USB + speakerphone. +- appsink: unref buffer in prev sample early so buffers from v4l2 can + be released properly +- basetextoverlay: Fix typo in “text-y” property description +- gldownload: handle passthrough without a critical +- glfilter: add parent meta to output buffer for input buffer +- oggdemux: vp8: Push headers downstream and detect keyframe packets +- opus: Fix potential crash when getting unexpected channel position +- streamsynchronizer: reset eos on STREAM_START +- subparse: Look for the closing > of a tag after the opening < +- video: convertframe: Add D3D11 specific conversion path +- videometa: Only validate the alignment only when it contains some + info +- video-blend: Fix linking error with C++ + +gst-plugins-good + +- flacparse: Avoid integer overflow in available data check for image + tags +- flvmux: use the correct timestamp to calculate wait times +- isomp4: Fix (E)AC-3 channel count handling +- jpegdec: fixes related to interlaced jpeg +- pngdec: Fix wrong colours output from 16bit RGB images +- qtmux, qtdemux: fix byte order for opus extension +- rtspsrc: Do not try send dropped get/set parameter +- qt5, qt6: Add more meson options and eliminate all automagic +- qt: glrenderer: don’t attempt to use QWindow from non-Qt main thread +- qml6glsink: Support building on win32 +- v4l2src: fix support for bayer format +- v4l2: Change to query only up to + V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS +- v4l2videodec: treat MPEG-1 format as MPEG-2 +- v4l2videoenc: support force keyframe event in v4l2 encoder +- tests: rtpbin_buffer_list: fix possible unaligned write/read on + 32-bit ARM + +gst-plugins-bad + +- asfmux: fix possible unaligned write on 32-bit ARM +- d3d11videosink: Fix error on pause and play +- d3dvideosink: Fix navigation event leak +- decklink: Correctly handle SDK strings on macOS and free strings + after usage on Linux +- dvdspu: Make sure enough data is allocated for the available data +- fdkaacdec: Support up to 5 rear channels +- h265parse: Fix framerate handling +- kmssink: Add STM32 LTDC and NXP i.MX8M Plus LCDIFv3 auto-detection +- sdpdemux: ensure that only one srcpad is created per stream +- srtpdec: fix critical warnings on shutdown +- testsrcbin: Remove spurious caps unref +- va: map the mbbrc to correct enum value in get_property() +- vtenc: apply DTS offset to ensure DTS <= PTS +- vtdec: time glitches on h264 playback +- waylandsink: Emit “map” signal boarder surface is ready + +gst-plugins-ugly + +- No changes + +gst-libav + +- No changes + +gst-rtsp-server + +- No changes + +gstreamer-vaapi + +- vaapidecodebin: don’t load vaapipostproc if not available + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- python: More functions can be called before gst_init() + +gst-editing-services + +- ges: launcher: Never put sinks in a GstPipeline + +gst-validate + gst-integration-testsuites + +- No changes + +gst-examples + +- No changes + +Development build environment + +- No changes + +Cerbero build tool and packaging changes in 1.22.4 + +- Ship codecalpha, rtponvif, dvbsubenc, switchbin, videosignal plugins +- pango: Fix crash on Windows 32bit build +- qml6: Add support for building the qml6 plugin on Windows and bump + meson to 1.1.1 +- vaapi: update vaapi variant/recipe for meson option changes +- packages: Put libass in the same category as assrender +- cerbero: Don’t extract if already extracted in fetch +- darwin: Ensure errors on unguarded use of new APIs, require macOS + 10.13 + +Contributors to 1.22.4 + +Andoni Morales Alastruey, Arun Raghavan, Colin Kinloch, Daniel Morin, +Edward Hervey, ekwange, Elliot Chen, François Laignel, Guillaume +Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Alexander Steffens +(heftig), Jochen Henneberg, Jordan Petridis, Kevin Song, Maksym +Khomenko, Marek Vasut, Mathieu Duponchelle, Matthew Waters, +Mengkejiergeli Ba, Michael Olbrich, Nicolas Beland, Nicolas Dufresne, +Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Sebastian Dröge, +Seungha Yang, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez +Leal, William Manley, Xavier Claessens, Yuri Fedoseev, + +… and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! + +List of merge requests and issues fixed in 1.22.4 + +- List of Merge Requests applied in 1.22.4 +- List of Issues fixed in 1.22.4 + Schedule for 1.24
View file
gst-plugins-bad-1.22.3.tar.xz/RELEASE -> gst-plugins-bad-1.22.4.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-bad 1.22.3. +This is GStreamer gst-plugins-bad 1.22.4. 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.22.3.tar.xz/ext/fdkaac/gstfdkaacdec.c -> gst-plugins-bad-1.22.4.tar.xz/ext/fdkaac/gstfdkaacdec.c
Changed
@@ -237,7 +237,7 @@ DEF_CHANSET (front, 7); DEF_CHANSET (side, 2); - DEF_CHANSET (rear, 3); + DEF_CHANSET (rear, 5); DEF_CHANSET (lfe, 2); DEF_CHANSET (top_front, 3); DEF_CHANSET (top_center, 3);
View file
gst-plugins-bad-1.22.3.tar.xz/ext/gtk/gstgtkwaylandsink.c -> gst-plugins-bad-1.22.4.tar.xz/ext/gtk/gstgtkwaylandsink.c
Changed
@@ -432,6 +432,17 @@ } static void +wl_window_map_cb (GstWlWindow * wl_window, GstGtkWaylandSink * self) +{ + GstGtkWaylandSinkPrivate *priv = + gst_gtk_wayland_sink_get_instance_private (self); + + GST_DEBUG_OBJECT (self, "waylandsink surface is ready"); + + gtk_gst_base_widget_queue_draw (GTK_GST_BASE_WIDGET (priv->gtk_widget)); +} + +static void setup_wl_window (GstGtkWaylandSink * self) { GstGtkWaylandSinkPrivate *priv = @@ -457,6 +468,8 @@ wl_surface, &priv->render_lock); gst_wl_window_set_rotate_method (priv->wl_window, priv->current_rotate_method); + g_signal_connect_object (priv->wl_window, "map", + G_CALLBACK (wl_window_map_cb), self, 0); } /* In order to position the subsurface correctly within a scrollable widget,
View file
gst-plugins-bad-1.22.3.tar.xz/ext/srtp/gstsrtpdec.c -> gst-plugins-bad-1.22.4.tar.xz/ext/srtp/gstsrtpdec.c
Changed
@@ -1260,7 +1260,54 @@ return gst_srtp_dec_iterate_internal_links (pad, parent, TRUE); } -static void +/* Partial backport to 1.22 of `gst_element_decorate_stream_id_internal`, + * which was introduced in 1.23 */ +static gchar * +decorate_stream_id_private (GstElement * element, const gchar * stream_id) +{ + gchar *upstream_stream_id = NULL, *new_stream_id; + GstQuery *query; + gchar *uri = NULL; + + /* Try to generate a stream-id from the URI query and + * if it fails take a random number instead */ + query = gst_query_new_uri (); + if (gst_element_query (element, query)) { + gst_query_parse_uri (query, &uri); + } + + if (uri) { + GChecksum *cs; + + /* And then generate an SHA256 sum of the URI */ + cs = g_checksum_new (G_CHECKSUM_SHA256); + g_checksum_update (cs, (const guchar *) uri, strlen (uri)); + g_free (uri); + upstream_stream_id = g_strdup (g_checksum_get_string (cs)); + g_checksum_free (cs); + } else { + /* Just get some random number if the URI query fails */ + GST_FIXME_OBJECT (element, "Creating random stream-id, consider " + "implementing a deterministic way of creating a stream-id"); + upstream_stream_id = + g_strdup_printf ("%08x%08x%08x%08x", g_random_int (), g_random_int (), + g_random_int (), g_random_int ()); + } + + gst_query_unref (query); + + if (stream_id) { + new_stream_id = g_strconcat (upstream_stream_id, "/", stream_id, NULL); + } else { + new_stream_id = g_strdup (upstream_stream_id); + } + + g_free (upstream_stream_id); + + return new_stream_id; +} + +static gboolean gst_srtp_dec_push_early_events (GstSrtpDec * filter, GstPad * pad, GstPad * otherpad, gboolean is_rtcp) { @@ -1283,7 +1330,7 @@ is_rtcp ? "rtcp" : "rtp"); gst_event_unref (otherev); } else { - new_stream_id = gst_pad_create_stream_id (pad, GST_ELEMENT (filter), + new_stream_id = decorate_stream_id_private (GST_ELEMENT (filter), is_rtcp ? "rtcp" : "rtp"); } @@ -1304,7 +1351,8 @@ else caps = gst_caps_new_empty_simple ("application/x-rtp"); - gst_pad_set_caps (pad, caps); + ev = gst_event_new_caps (caps); + gst_pad_push_event (pad, ev); gst_caps_unref (caps); } @@ -1314,8 +1362,16 @@ } else { ev = gst_pad_get_sticky_event (otherpad, GST_EVENT_SEGMENT, 0); - if (ev) + if (ev) { gst_pad_push_event (pad, ev); + } else if (GST_PAD_IS_FLUSHING (otherpad)) { + /* We didn't get a Segment event from otherpad + * and otherpad is flushing => we are most likely shutting down */ + goto err; + } else { + GST_WARNING_OBJECT (filter, "No Segment event to push"); + goto err; + } } if (is_rtcp) @@ -1323,6 +1379,10 @@ else filter->rtp_has_segment = TRUE; + return TRUE; + +err: + return FALSE; } /* @@ -1500,15 +1560,24 @@ /* Push buffer to source pad */ if (is_rtcp) { otherpad = filter->rtcp_srcpad; - if (!filter->rtcp_has_segment) - gst_srtp_dec_push_early_events (filter, filter->rtcp_srcpad, - filter->rtp_srcpad, TRUE); + if (!filter->rtcp_has_segment) { + if (!gst_srtp_dec_push_early_events (filter, filter->rtcp_srcpad, + filter->rtp_srcpad, TRUE)) { + ret = GST_FLOW_FLUSHING; + goto drop_buffer; + } + } } else { otherpad = filter->rtp_srcpad; - if (!filter->rtp_has_segment) - gst_srtp_dec_push_early_events (filter, filter->rtp_srcpad, - filter->rtcp_srcpad, FALSE); + if (!filter->rtp_has_segment) { + if (!gst_srtp_dec_push_early_events (filter, filter->rtp_srcpad, + filter->rtcp_srcpad, FALSE)) { + ret = GST_FLOW_FLUSHING; + goto drop_buffer; + } + } } + ret = gst_pad_push (otherpad, buf); return ret;
View file
gst-plugins-bad-1.22.3.tar.xz/gst-libs/gst/wayland/gstwlwindow.c -> gst-plugins-bad-1.22.4.tar.xz/gst-libs/gst/wayland/gstwlwindow.c
Changed
@@ -79,6 +79,7 @@ enum { CLOSED, + MAP, LAST_SIGNAL }; @@ -155,6 +156,9 @@ signalsCLOSED = g_signal_new ("closed", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); + signalsMAP = g_signal_new ("map", G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); + } static void @@ -509,6 +513,7 @@ gst_wl_window_update_borders (self); wl_surface_commit (priv->area_surface_wrapper); priv->is_area_surface_mapped = TRUE; + g_signal_emit (self, signalsMAP, 0); } } else { /* clear both video and parent surfaces */
View file
gst-plugins-bad-1.22.3.tar.xz/gst-plugins-bad.doap -> gst-plugins-bad-1.22.4.tar.xz/gst-plugins-bad.doap
Changed
@@ -35,6 +35,16 @@ <release> <Version> + <revision>1.22.4</revision> + <branch>1.22</branch> + <name></name> + <created>2023-06-20</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.22.4.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.22.3</revision> <branch>1.22</branch> <name></name>
View file
gst-plugins-bad-1.22.3.tar.xz/gst/asfmux/gstasfobjects.c -> gst-plugins-bad-1.22.4.tar.xz/gst/asfmux/gstasfobjects.c
Changed
@@ -311,14 +311,10 @@ void gst_asf_put_guid (guint8 * buf, Guid guid) { - guint32 *aux32 = (guint32 *) buf; - guint16 *aux16 = (guint16 *) & (buf4); - guint64 *aux64 = (guint64 *) & (buf8); - *aux32 = GUINT32_TO_LE (guid.v1); - *aux16 = GUINT16_TO_LE (guid.v2); - aux16 = (guint16 *) & (buf6); - *aux16 = GUINT16_TO_LE (guid.v3); - *aux64 = GUINT64_TO_BE (guid.v4); + GST_WRITE_UINT32_LE (buf + 0, guid.v1); + GST_WRITE_UINT16_LE (buf + 4, guid.v2); + GST_WRITE_UINT16_LE (buf + 6, guid.v3); + GST_WRITE_UINT64_BE (buf + 8, guid.v4); } /**
View file
gst-plugins-bad-1.22.3.tar.xz/gst/debugutils/gsttestsrcbin.c -> gst-plugins-bad-1.22.4.tar.xz/gst/debugutils/gsttestsrcbin.c
Changed
@@ -343,7 +343,6 @@ capsfilter = gst_element_factory_make ("capsfilter", NULL); if (caps) { g_object_set (capsfilter, "caps", caps, NULL); - gst_caps_unref (caps); } src = gst_element_factory_make (srcfactory, NULL);
View file
gst-plugins-bad-1.22.3.tar.xz/gst/dvdspu/gstspu-pgs.c -> gst-plugins-bad-1.22.4.tar.xz/gst/dvdspu/gstspu-pgs.c
Changed
@@ -593,6 +593,9 @@ obj->rle_data_size = GST_READ_UINT24_BE (payload); payload += 3; + if (end - payload > obj->rle_data_size) + return 0; + PGS_DUMP ("%d bytes of RLE data, of %d bytes total.\n", (int) (end - payload), obj->rle_data_size); @@ -604,7 +607,8 @@ PGS_DUMP ("%d bytes of additional RLE data\n", (int) (end - payload)); /* Check that the data chunk is for this object version, and fits in the buffer */ if (obj->rle_data_ver == obj_ver && - obj->rle_data_used + end - payload <= obj->rle_data_size) { + end - payload <= obj->rle_data_size && + obj->rle_data_used <= obj->rle_data_size - (end - payload)) { memcpy (obj->rle_data + obj->rle_data_used, payload, end - payload); obj->rle_data_used += end - payload;
View file
gst-plugins-bad-1.22.3.tar.xz/gst/sdp/gstsdpdemux.c -> gst-plugins-bad-1.22.4.tar.xz/gst/sdp/gstsdpdemux.c
Changed
@@ -536,6 +536,9 @@ if (stream == NULL) goto unknown_stream; + if (stream->srcpad) + goto unexpected_pad; + stream->ssrc = ssrc; /* no need for a timeout anymore now */ @@ -576,6 +579,13 @@ return; /* ERRORS */ +unexpected_pad: + { + GST_DEBUG_OBJECT (demux, "ignoring unexpected session pad"); + GST_SDP_STREAM_UNLOCK (demux); + g_free (name); + return; + } unknown_stream: { GST_DEBUG_OBJECT (demux, "ignoring unknown stream");
View file
gst-plugins-bad-1.22.3.tar.xz/gst/videoparsers/gsth265parse.c -> gst-plugins-bad-1.22.4.tar.xz/gst/videoparsers/gsth265parse.c
Changed
@@ -2155,7 +2155,7 @@ } /* 0/1 is set as the default in the codec parser */ - if (vui->timing_info_present_flag) { + if (vui->timing_info_present_flag && !h265parse->framerate_from_caps) { gint fps_num = 0, fps_den = 1; if (!(sps->fps_num == 0 && sps->fps_den == 1)) { @@ -2166,15 +2166,19 @@ fps_num = sps->vui_params.time_scale; fps_den = sps->vui_params.num_units_in_tick; - if (gst_h265_parse_is_field_interlaced (h265parse) - && h265parse->parsed_framerate) { + if (gst_h265_parse_is_field_interlaced (h265parse)) { gint new_fps_num, new_fps_den; - gst_util_fraction_multiply (fps_num, fps_den, 1, 2, &new_fps_num, - &new_fps_den); - fps_num = new_fps_num; - fps_den = new_fps_den; - h265parse->parsed_framerate = FALSE; + if (!gst_util_fraction_multiply (fps_num, fps_den, 1, 2, &new_fps_num, + &new_fps_den)) { + GST_WARNING_OBJECT (h265parse, "Error calculating the new framerate" + " - integer overflow; setting it to 0/1"); + fps_num = 0; + fps_den = 1; + } else { + fps_num = new_fps_num; + fps_den = new_fps_den; + } } } @@ -2197,7 +2201,6 @@ h265parse->parsed_par_n, h265parse->parsed_par_d); modified = TRUE; } - } if (vui->video_signal_type_present_flag && @@ -2251,7 +2254,7 @@ gst_caps_set_simple (caps, "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL); - h265parse->parsed_framerate = FALSE; + h265parse->framerate_from_caps = FALSE; /* upstream overrides */ if (s && gst_structure_has_field (s, "framerate")) gst_structure_get_fraction (s, "framerate", &fps_num, &fps_den); @@ -2269,9 +2272,9 @@ &h265parse->parsed_fps_d); gst_base_parse_set_frame_rate (GST_BASE_PARSE (h265parse), fps_num, fps_den, 0, 0); - val = sps->profile_tier_level.interlaced_source_flag ? GST_SECOND / 2 : + val = gst_h265_parse_is_field_interlaced (h265parse) ? GST_SECOND / 2 : GST_SECOND; - h265parse->parsed_framerate = TRUE; + h265parse->framerate_from_caps = TRUE; /* If we know the frame duration, and if we are not in one of the zero * latency pattern, add one frame of latency */
View file
gst-plugins-bad-1.22.3.tar.xz/gst/videoparsers/gsth265parse.h -> gst-plugins-bad-1.22.4.tar.xz/gst/videoparsers/gsth265parse.h
Changed
@@ -110,7 +110,7 @@ gboolean predicted; gboolean bidirectional; gboolean header; - gboolean parsed_framerate; + gboolean framerate_from_caps; /* AU state */ gboolean picture_start;
View file
gst-plugins-bad-1.22.3.tar.xz/meson.build -> gst-plugins-bad-1.22.4.tar.xz/meson.build
Changed
@@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.22.3', + version : '1.22.4', meson_version : '>= 0.62', default_options : 'warning_level=1', 'buildtype=debugoptimized' )
View file
gst-plugins-bad-1.22.3.tar.xz/po/gst-plugins-bad-1.0.pot -> gst-plugins-bad-1.22.4.tar.xz/po/gst-plugins-bad-1.0.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-bad-1.22.3\n" +"Project-Id-Version: gst-plugins-bad-1.22.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-19 09:26+0100\n" +"POT-Creation-Date: 2023-06-20 17:48+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"
View file
gst-plugins-bad-1.22.3.tar.xz/po/gst-plugins-bad.pot -> gst-plugins-bad-1.22.4.tar.xz/po/gst-plugins-bad.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-bad-1.22.3\n" +"Project-Id-Version: gst-plugins-bad-1.22.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-19 09:26+0100\n" +"POT-Creation-Date: 2023-06-20 17:48+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"
View file
gst-plugins-bad-1.22.3.tar.xz/sys/applemedia/meson.build -> gst-plugins-bad-1.22.4.tar.xz/sys/applemedia/meson.build
Changed
@@ -15,12 +15,14 @@ '-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type', '-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer', '-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new', - '-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type' + '-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type', + '-DGST_USE_UNSTABLE_API' applemedia_objc_args = applemedia_option = get_option('applemedia') if not 'darwin', 'ios'.contains(host_system) or applemedia_option.disabled() + applemedia_found_deps = false subdir_done() endif
View file
gst-plugins-bad-1.22.3.tar.xz/sys/applemedia/vtdec.h -> gst-plugins-bad-1.22.4.tar.xz/sys/applemedia/vtdec.h
Changed
@@ -30,7 +30,6 @@ #if defined(APPLEMEDIA_MOLTENVK) #include <gst/vulkan/vulkan.h> #endif -#define GST_USE_UNSTABLE_API #include <gst/codecparsers/gsth264parser.h> G_BEGIN_DECLS
View file
gst-plugins-bad-1.22.3.tar.xz/sys/applemedia/vtenc.c -> gst-plugins-bad-1.22.4.tar.xz/sys/applemedia/vtenc.c
Changed
@@ -86,6 +86,8 @@ #define GST_VTENC_CODEC_DETAILS_QDATA \ g_quark_from_static_string ("vtenc-codec-details") +#define CMTIME_TO_GST_CLOCK_TIME(time) time.value / (time.timescale / GST_SECOND) + /* define EnableHardwareAcceleratedVideoEncoder in < 10.9 */ #if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < 1090 const CFStringRef @@ -240,7 +242,7 @@ if (__builtin_available (macOS 13.0, *)) { /* Can't negate a __builtin_available check */ } else { - /* Disable ARGB64/RGBA64 if we're on M1 Pro/Max and macOS < 13.0 + /* Disable ARGB64/RGBA64 if we're on M1 Pro/Max and macOS < 13.0 * due to a bug within VideoToolbox which causes encoding to fail. */ retval = sysctlbyname ("machdep.cpu.brand_string", &cpu_name, &cpu_len, NULL, 0); @@ -713,6 +715,9 @@ { GstVTEnc *self = GST_VTENC_CAST (enc); + /* DTS can be negative if b-frames are enabled */ + gst_video_encoder_set_min_pts (enc, GST_SECOND * 60 * 60 * 1000); + self->cur_outframes = g_async_queue_new (); return TRUE; @@ -739,8 +744,8 @@ gst_video_codec_state_unref (self->input_state); self->input_state = NULL; - self->negotiated_width = self->negotiated_height = 0; - self->negotiated_fps_n = self->negotiated_fps_d = 0; + self->video_info.width = self->video_info.height = 0; + self->video_info.fps_n = self->video_info.fps_d = 0; gst_vtenc_clear_cached_caps_downstream (self); @@ -750,13 +755,12 @@ return TRUE; } -static CFStringRef -gst_vtenc_h264_profile_level_key (GstVTEnc * self, const gchar * profile, +static gboolean +gst_vtenc_h264_parse_profile_level_key (GstVTEnc * self, const gchar * profile, const gchar * level_arg) { char level64; gchar *key = NULL; - CFStringRef ret = NULL; if (profile == NULL) profile = "main"; @@ -767,13 +771,16 @@ if (!strcmp (profile, "constrained-baseline") || !strcmp (profile, "baseline")) { profile = "Baseline"; + self->h264_profile = GST_H264_PROFILE_BASELINE; } else if (g_str_has_prefix (profile, "high")) { profile = "High"; + self->h264_profile = GST_H264_PROFILE_HIGH; } else if (!strcmp (profile, "main")) { profile = "Main"; + self->h264_profile = GST_H264_PROFILE_MAIN; } else { GST_ERROR_OBJECT (self, "invalid profile: %s", profile); - return ret; + return FALSE; } if (strlen (level) == 1) { @@ -784,22 +791,21 @@ } key = g_strdup_printf ("H264_%s_%s", profile, level); - ret = CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key), + self->profile_level = + CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key), kCFStringEncodingASCII, 0); - GST_INFO_OBJECT (self, "negotiated profile and level %s", key); g_free (key); - return ret; + return TRUE; } -static CFStringRef -gst_vtenc_hevc_profile_level_key (GstVTEnc * self, const gchar * profile, +static gboolean +gst_vtenc_hevc_parse_profile_level_key (GstVTEnc * self, const gchar * profile, const gchar * level_arg) { gchar *key = NULL; - CFStringRef ret = NULL; if (profile == NULL || !strcmp (profile, "main")) profile = "Main"; @@ -811,18 +817,18 @@ profile = "Main42210"; else { GST_ERROR_OBJECT (self, "invalid profile: %s", profile); - return ret; + return FALSE; } /* VT does not support specific levels for HEVC */ key = g_strdup_printf ("HEVC_%s_AutoLevel", profile); - ret = CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key), + self->profile_level = + CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key), kCFStringEncodingASCII, 0); - GST_INFO_OBJECT (self, "negotiated profile and level %s", key); g_free (key); - return ret; + return TRUE; } static gboolean @@ -834,20 +840,11 @@ if (self->profile_level) CFRelease (self->profile_level); - if (self->specific_format_id == kCMVideoCodecType_HEVC) - self->profile_level = - gst_vtenc_hevc_profile_level_key (self, profile, level); - else - self->profile_level = - gst_vtenc_h264_profile_level_key (self, profile, level); - - if (self->profile_level == NULL) { - GST_ERROR_OBJECT (self, "unsupported profile '%s' or level '%s'", - profile, level); - return FALSE; + if (self->specific_format_id == kCMVideoCodecType_HEVC) { + return gst_vtenc_hevc_parse_profile_level_key (self, profile, level); + } else { + return gst_vtenc_h264_parse_profile_level_key (self, profile, level); } - - return TRUE; } static gboolean @@ -931,10 +928,6 @@ gst_video_codec_state_unref (self->input_state); self->input_state = gst_video_codec_state_ref (state); - self->negotiated_width = state->info.width; - self->negotiated_height = state->info.height; - self->negotiated_fps_n = state->info.fps_n; - self->negotiated_fps_d = state->info.fps_d; self->video_info = state->info; GST_OBJECT_LOCK (self); @@ -954,7 +947,7 @@ static gboolean gst_vtenc_is_negotiated (GstVTEnc * self) { - return self->negotiated_width != 0; + return self->video_info.width != 0; } /* @@ -987,10 +980,10 @@ GstStructure *s; GstVideoCodecState *state; - if (self->caps_width == self->negotiated_width && - self->caps_height == self->negotiated_height && - self->caps_fps_n == self->negotiated_fps_n && - self->caps_fps_d == self->negotiated_fps_d) { + if (self->caps_width == self->video_info.width && + self->caps_height == self->video_info.height && + self->caps_fps_n == self->video_info.fps_n && + self->caps_fps_d == self->video_info.fps_d) { return TRUE; } @@ -998,10 +991,10 @@ caps = gst_caps_make_writable (caps); s = gst_caps_get_structure (caps, 0); gst_structure_set (s, - "width", G_TYPE_INT, self->negotiated_width, - "height", G_TYPE_INT, self->negotiated_height, + "width", G_TYPE_INT, self->video_info.width, + "height", G_TYPE_INT, self->video_info.height, "framerate", GST_TYPE_FRACTION, - self->negotiated_fps_n, self->negotiated_fps_d, NULL); + self->video_info.fps_n, self->video_info.fps_d, NULL); switch (self->details->format_id) { case kCMVideoCodecType_H264: @@ -1068,10 +1061,10 @@ gst_video_codec_state_unref (state);
View file
gst-plugins-bad-1.22.3.tar.xz/sys/applemedia/vtenc.h -> gst-plugins-bad-1.22.4.tar.xz/sys/applemedia/vtenc.h
Changed
@@ -21,6 +21,7 @@ #define __GST_VTENC_H__ #include <gst/gst.h> +#include <gst/codecparsers/gsth264parser.h> #include <gst/video/video.h> #include <VideoToolbox/VideoToolbox.h> @@ -60,6 +61,7 @@ CMVideoCodecType specific_format_id; CFStringRef profile_level; + GstH264Profile h264_profile; guint bitrate; gboolean allow_frame_reordering; gboolean realtime; @@ -72,8 +74,6 @@ gboolean dump_properties; gboolean dump_attributes; - gint negotiated_width, negotiated_height; - gint negotiated_fps_n, negotiated_fps_d; gint caps_width, caps_height; gint caps_fps_n, caps_fps_d; gboolean have_field_order; @@ -81,6 +81,7 @@ GstVideoInfo video_info; VTCompressionSessionRef session; CFDictionaryRef keyframe_props; + GstClockTime dts_offset; GAsyncQueue * cur_outframes; };
View file
gst-plugins-bad-1.22.3.tar.xz/sys/d3d11/gstd3d11videosink.cpp -> gst-plugins-bad-1.22.4.tar.xz/sys/d3d11/gstd3d11videosink.cpp
Changed
@@ -1440,8 +1440,6 @@ ret = GST_FLOW_ERROR; } - gst_clear_buffer (&self->prepared_buffer); - return ret; }
View file
gst-plugins-bad-1.22.3.tar.xz/sys/d3dvideosink/d3dvideosink.c -> gst-plugins-bad-1.22.4.tar.xz/sys/d3dvideosink/d3dvideosink.c
Changed
@@ -634,6 +634,7 @@ gst_element_post_message (GST_ELEMENT_CAST (sink), gst_navigation_message_new_event (GST_OBJECT_CAST (sink), event)); } + gst_event_unref (event); gst_object_unref (pad); } }
View file
gst-plugins-bad-1.22.3.tar.xz/sys/decklink/gstdecklink.h -> gst-plugins-bad-1.22.4.tar.xz/sys/decklink/gstdecklink.h
Changed
@@ -28,33 +28,58 @@ #include <stdint.h> -#ifdef G_OS_UNIX -#include "linux/DeckLinkAPI.h" -#endif - #ifdef G_OS_WIN32 #include "win/DeckLinkAPI.h" #include <stdio.h> -#include <comutil.h> #define bool BOOL #define COMSTR_T BSTR -/* MinGW does not have comsuppw.lib, so no _com_util::ConvertBSTRToString */ -# ifdef __MINGW32__ -# define CONVERT_COM_STRING(s) G_STMT_START { BSTR _s = (BSTR)s; s = (char*) malloc(100); wcstombs(s, _s, 100); ::SysFreeString(_s); } G_STMT_END -# define FREE_COM_STRING(s) free(s); -# define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = (BSTR) malloc(100); mbstowcs(s, _s, 100); g_free(_s); } G_STMT_END -# else -# define CONVERT_COM_STRING(s) G_STMT_START { BSTR _s = (BSTR)s; s = _com_util::ConvertBSTRToString(_s); ::SysFreeString(_s); } G_STMT_END -# define FREE_COM_STRING(s) G_STMT_START { delete s; } G_STMT_END -# define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = _com_util::ConvertStringToBSTR(_s); g_free(_s); } G_STMT_END -# endif /* __MINGW32__ */ -#else +#define CONVERT_COM_STRING(s) G_STMT_START { \ + BSTR _s = (BSTR)s; \ + int _s_length = ::SysStringLen(_s); \ + int _length = ::WideCharToMultiByte(CP_ACP, 0, (wchar_t*)_s, _s_length, NULL, 0, NULL, NULL); \ + s = (char *) malloc(_length); \ + ::WideCharToMultiByte(CP_ACP, 0, (wchar_t*)_s, _s_length, s, _length, NULL, NULL); \ + ::SysFreeString(_s); \ +} G_STMT_END +#define FREE_COM_STRING(s) free(s); +#define CONVERT_TO_COM_STRING(s) G_STMT_START { \ + char * _s = (char *)s; \ + int _s_length = strlen((char*)_s); \ + int _length = ::MultiByteToWideChar(CP_ACP, 0, (char*)_s, _s_length, NULL, 0); \ + s = ::SysAllocStringLen(NULL, _length); \ + ::MultiByteToWideChar(CP_ACP, 0, (char*)_s, _s_length, s, _length); \ + g_free(_s); \ +} G_STMT_END +#elif defined(__APPLE__) +#include "osx/DeckLinkAPI.h" + +#define COMSTR_T CFStringRef +#define CONVERT_COM_STRING(s) G_STMT_START { \ + CFStringRef _s = (CFStringRef)s; \ + CFIndex _length; \ + CFStringGetBytes(_s, CFRangeMake(0, CFStringGetLength(_s)), kCFStringEncodingUTF8, 0, FALSE, NULL, 0, &_length); \ + _length += 1; \ + s = (char *) malloc(_length); \ + CFStringGetCString(_s, s, _length, kCFStringEncodingUTF8); \ + CFRelease(_s); \ +} G_STMT_END +#define FREE_COM_STRING(s) free(s); +#define CONVERT_TO_COM_STRING(s) G_STMT_START { \ + char * _s = (char *)s; \ + s = CFStringCreateWithCString(kCFAllocatorDefault, _s, kCFStringEncodingUTF8); \ + g_free(_s); \ +} G_STMT_END +#define WINAPI +#else /* Linux */ +#include "linux/DeckLinkAPI.h" + #define COMSTR_T const char* #define CONVERT_COM_STRING(s) #define CONVERT_TO_COM_STRING(s) -#define FREE_COM_STRING(s) +/* While this is a const char*, the string still has to be freed */ +#define FREE_COM_STRING(s) free(s); #define WINAPI #endif /* G_OS_WIN32 */
View file
gst-plugins-bad-1.22.3.tar.xz/sys/kms/gstkmssink.c -> gst-plugins-bad-1.22.4.tar.xz/sys/kms/gstkmssink.c
Changed
@@ -481,8 +481,8 @@ kms_open (gchar ** driver) { static const char *drivers = { "i915", "radeon", "nouveau", "vmwgfx", - "exynos", "amdgpu", "imx-drm", "rockchip", "atmel-hlcdc", "msm", - "xlnx", "vc4", "meson", "sun4i-drm", "mxsfb-drm", "tegra", + "exynos", "amdgpu", "imx-drm", "imx-lcdif", "rockchip", "atmel-hlcdc", + "msm", "xlnx", "vc4", "meson", "stm", "sun4i-drm", "mxsfb-drm", "tegra", "xilinx_drm", /* DEPRECATED. Replaced by xlnx */ }; int i, fd = -1;
View file
gst-plugins-bad-1.22.3.tar.xz/sys/va/gstvah264enc.c -> gst-plugins-bad-1.22.4.tar.xz/sys/va/gstvah264enc.c
Changed
@@ -3412,9 +3412,30 @@ case PROP_CC: g_value_set_boolean (value, self->prop.cc); break; - case PROP_MBBRC: - g_value_set_enum (value, self->prop.mbbrc); + case PROP_MBBRC:{ + GstVaFeature mbbrc = GST_VA_FEATURE_AUTO; + /* Macroblock-level rate control. + * 0: use default, + * 1: always enable, + * 2: always disable, + * other: reserved. */ + switch (self->prop.mbbrc) { + case 2: + mbbrc = GST_VA_FEATURE_DISABLED; + break; + case 1: + mbbrc = GST_VA_FEATURE_ENABLED; + break; + case 0: + mbbrc = GST_VA_FEATURE_AUTO; + break; + default: + g_assert_not_reached (); + } + + g_value_set_enum (value, mbbrc); break; + } case PROP_BITRATE: g_value_set_uint (value, self->prop.bitrate); break;
View file
gst-plugins-bad-1.22.3.tar.xz/sys/va/gstvah265enc.c -> gst-plugins-bad-1.22.4.tar.xz/sys/va/gstvah265enc.c
Changed
@@ -4874,9 +4874,30 @@ case PROP_AUD: g_value_set_boolean (value, self->prop.aud); break; - case PROP_MBBRC: - g_value_set_enum (value, self->prop.mbbrc); + case PROP_MBBRC:{ + GstVaFeature mbbrc = GST_VA_FEATURE_AUTO; + /* Macroblock-level rate control. + * 0: use default, + * 1: always enable, + * 2: always disable, + * other: reserved. */ + switch (self->prop.mbbrc) { + case 2: + mbbrc = GST_VA_FEATURE_DISABLED; + break; + case 1: + mbbrc = GST_VA_FEATURE_ENABLED; + break; + case 0: + mbbrc = GST_VA_FEATURE_AUTO; + break; + default: + g_assert_not_reached (); + } + + g_value_set_enum (value, mbbrc); break; + } case PROP_BITRATE: g_value_set_uint (value, self->prop.bitrate); break;
View file
gst-plugins-bad-1.22.3.tar.xz/tests/validate/meson.build -> gst-plugins-bad-1.22.4.tar.xz/tests/validate/meson.build
Changed
@@ -7,6 +7,10 @@ {'path': 'opencv/cvtracker'}, {'path': 'testsrcbin/caps_spec'}, {'path': 'wpe/load_bytes_first', 'skip': not building_wpe}, + {'path': 'vtenc/vtenc_h264', 'skip': not applemedia_found_deps}, + {'path': 'vtenc/vtenc_h264_b_frames', 'skip': not applemedia_found_deps}, + {'path': 'vtenc/vtenc_h265', 'skip': not applemedia_found_deps}, + {'path': 'vtenc/vtenc_h265_b_frames', 'skip': not applemedia_found_deps}, env = environment()
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc
Added
+(directory)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264
Added
+(directory)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264.validatetest
Added
@@ -0,0 +1,7 @@ +meta, + args = { + "videotestsrc num-buffers=5 ! video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc allow-frame-reordering=false ! fakesink", + }, + configs = { + "$(validateflow), pad=enc:src, record-buffers=true", + }
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264/flow-expectations
Added
+(directory)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264/flow-expectations/log-enc-src-expected
Added
@@ -0,0 +1,9 @@ +event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1; +event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, codec_data=(buffer)014d000dffe1000d274d000dab40a0fd350601060201000428ee3c80, colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, interlace-mode=(string)progressive, level=(string)1.3, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, profile=(string)main, stream-format=(string)avc, width=(int)320; +event segment: format=TIME, start=1000:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=1000:00:00.000000000 +buffer: dts=1000:00:00.000000000, pts=1000:00:00.000000000, dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.080000000, pts=1000:00:00.080000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.160000000, pts=1000:00:00.160000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +event eos: (no structure)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264_b_frames
Added
+(directory)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264_b_frames.validatetest
Added
@@ -0,0 +1,7 @@ +meta, + args = { + "videotestsrc num-buffers=5 ! video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc allow-frame-reordering=true ! fakesink", + }, + configs = { + "$(validateflow), pad=enc:src, record-buffers=true", + }
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations
Added
+(directory)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations/log-enc-src-expected
Added
@@ -0,0 +1,9 @@ +event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1; +event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, codec_data=(buffer)014d000dffe1000d274d000dab60a0fd350601060201000428ee3c80, colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, interlace-mode=(string)progressive, level=(string)1.3, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, profile=(string)main, stream-format=(string)avc, width=(int)320; +event segment: format=TIME, start=1000:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=1000:00:00.000000000 +buffer: dts=999:59:59.960000000, pts=1000:00:00.000000000, dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.000000000, pts=1000:00:00.080000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.080000000, pts=1000:00:00.160000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +event eos: (no structure)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265
Added
+(directory)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265.validatetest
Added
@@ -0,0 +1,7 @@ +meta, + args = { + "videotestsrc num-buffers=5 ! video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc allow-frame-reordering=false ! fakesink", + }, + configs = { + "$(validateflow), pad=enc:src, record-buffers=true", + }
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265/flow-expectations
Added
+(directory)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265/flow-expectations/log-enc-src-expected
Added
@@ -0,0 +1,9 @@ +event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1; +event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, codec_data=(buffer)014d000dffe1000d274d000dab40a0fd350601060201000428ee3c80, colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, interlace-mode=(string)progressive, level=(string)1.3, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, profile=(string)main, stream-format=(string)avc, width=(int)320; +event segment: format=TIME, start=1000:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=1000:00:00.000000000 +buffer: dts=1000:00:00.000000000, pts=1000:00:00.000000000, dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.080000000, pts=1000:00:00.080000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.160000000, pts=1000:00:00.160000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +event eos: (no structure)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265_b_frames
Added
+(directory)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265_b_frames.validatetest
Added
@@ -0,0 +1,7 @@ +meta, + args = { + "videotestsrc num-buffers=5 ! video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc allow-frame-reordering=true ! fakesink", + }, + configs = { + "$(validateflow), pad=enc:src, record-buffers=true", + }
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations
Added
+(directory)
View file
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations/log-enc-src-expected
Added
@@ -0,0 +1,9 @@ +event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1; +event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, codec_data=(buffer)014d000dffe1000d274d000dab60a0fd350601060201000428ee3c80, colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, interlace-mode=(string)progressive, level=(string)1.3, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, profile=(string)main, stream-format=(string)avc, width=(int)320; +event segment: format=TIME, start=1000:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=1000:00:00.000000000 +buffer: dts=999:59:59.960000000, pts=1000:00:00.000000000, dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.000000000, pts=1000:00:00.080000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.080000000, pts=1000:00:00.160000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta +event eos: (no structure)
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
.