Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gstreamer-plugins-bad for
openSUSE:Factory checked in at 2021-04-10 15:26:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-bad (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-bad"
Sat Apr 10 15:26:34 2021 rev:114 rq:883604 version:1.18.4
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-plugins-bad/gstreamer-plugins-bad.changes
2021-02-18 20:50:41.311342377 +0100
+++
/work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.2401/gstreamer-plugins-bad.changes
2021-04-10 15:27:20.582376037 +0200
@@ -1,0 +2,22 @@
+Tue Mar 30 09:01:57 UTC 2021 - Antonio Larrosa <[email protected]>
+
+- Update to version 1.18.4:
+ + avwait: Don't post messages with the mutex locked
+ + d3d11h264dec: Reconfigure decoder object on DPB size change
+ and keep track of actually configured DPB size
+ + dashsink: fix double unref of sinkpad caps
+ + decklinkvideosink: Use correct numerator for 29.97fps
+ + decklinkvideosink: fix auto format detection
+ + decklinksrc: Use a more accurate capture time
+ + d3d11videosink: Fix build error on UWP
+ + interlace: negotiation and buffer leak fixes
+ + mpegvideoparse: do not clip, so decoder receives data from
+ keyframe even if it's before the segment start
+ + mpegtsparse: Fix switched DTS/PTS when set-timestamps=false
+ + nvh264sldec: Reopen decoder object if larger DPB size is
+ required
+ + sdpsrc: fix double free if sdp is provided as string via the
+ property
+ + vulkan: Fix elements long name.
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-bad-1.18.3.tar.xz
New:
----
gst-plugins-bad-1.18.4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-bad.spec ++++++
--- /var/tmp/diff_new_pack.i07WaL/_old 2021-04-10 15:27:21.050376587 +0200
+++ /var/tmp/diff_new_pack.i07WaL/_new 2021-04-10 15:27:21.054376592 +0200
@@ -28,7 +28,7 @@
%bcond_with faad
Name: gstreamer-plugins-bad
-Version: 1.18.3
+Version: 1.18.4
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: LGPL-2.1-or-later
@@ -118,7 +118,7 @@
BuildRequires: pkgconfig(zvbi-0.2)
BuildRequires: pkgconfig(zxing)
Requires(post): glib2-tools
-Requires(postun): glib2-tools
+Requires(postun):glib2-tools
# FIXME! - this leads to unresolvables currently
#%%define gstreamer_plugins_bad_req %%(xzgrep --text "^GST.*_REQ" %%{S:0} |
sort -u | sed 's/GST_REQ=/gstreamer >= /;s/GSTPB_REQ=/gstreamer-plugins-base >=
/' | tr '\\n' ' ')
#Requires: %%gstreamer_plugins_bad_req
++++++ _service ++++++
--- /var/tmp/diff_new_pack.i07WaL/_old 2021-04-10 15:27:21.074376616 +0200
+++ /var/tmp/diff_new_pack.i07WaL/_new 2021-04-10 15:27:21.074376616 +0200
@@ -9,7 +9,7 @@
<!--
<param name="changesgenerate">enable</param>
-->
- <param name="revision">1.18.3</param>
+ <param name="revision">1.18.4</param>
<param name="scm">git</param>
</service>
<service name="recompress" mode="disabled">
++++++ gst-plugins-bad-1.18.3.tar.xz -> gst-plugins-bad-1.18.4.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/ChangeLog
new/gst-plugins-bad-1.18.4/ChangeLog
--- old/gst-plugins-bad-1.18.3/ChangeLog 2021-01-13 22:11:24.000000000
+0100
+++ new/gst-plugins-bad-1.18.4/ChangeLog 2021-03-15 18:49:18.000000000
+0100
@@ -1,3 +1,158 @@
+=== release 1.18.4 ===
+
+2021-03-15 17:49:16 +0000 Tim-Philipp M??ller <[email protected]>
+
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
+ * gst-plugins-bad.doap:
+ * meson.build:
+ Release 1.18.4
+
+2021-03-08 14:30:52 +0200 Vivia Nikolaidou <[email protected]>
+
+ * tests/check/elements/interlace.c:
+ * tests/check/meson.build:
+ tests: Add negotiation tests for the interlace elements
+ Many complicated cases exist. Would be good to have some checks.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2067>
+
+2021-03-08 20:59:14 +0200 Vivia Nikolaidou <[email protected]>
+
+ * gst/interlace/gstinterlace.c:
+ interlace: Discard stored_frame on EOS and PAUSED_TO_READY
+ Would otherwise leak it.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2067>
+
+2021-03-08 16:16:25 +0200 Vivia Nikolaidou <[email protected]>
+
+ * docs/plugins/gst_plugins_cache.json:
+ * gst/interlace/gstinterlace.c:
+ interlace: Specify interlace-modes in the sink pad template
+ Especially specify the field-order in the interleaved mode. Otherwise
it
+ might cause the negotiation to fail, because
+ GST_PAD_SET_ACCEPT_INTERSECT is not set on the sinkpad, and the
+ field-order is missing in the sink template but can be present in the
+ outside caps.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2067>
+
+2021-03-10 13:10:28 +0100 St??phane Cerveau <[email protected]>
+
+ * gst/videoparsers/gstmpegvideoparse.c:
+ mpegvideoparse: do not clip the frame
+ If the current buffer is delta unit such as P or B
+ frame, the buffer should not be clipped and need to
+ let the decoder handle the segment boundary situation.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2070>
+
+2021-03-09 13:00:10 +0200 Sebastian Dr??ge <[email protected]>
+
+ * gst/timecode/gstavwait.c:
+ avwait: Don't post messages with the mutex locked
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2068>
+
+2021-03-07 16:47:07 +0900 Seungha Yang <[email protected]>
+
+ * sys/nvcodec/gstnvh264dec.c:
+ nvh264sldec: Reopen decoder object if larger DPB size is required
+ Equivalent to the d3d11h264dec fix
+
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1839
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2060>
+
+2021-03-04 17:42:28 +0900 Seungha Yang <[email protected]>
+
+ * sys/d3d11/gstd3d11h264dec.c:
+ d3d11h264dec: Keep track of actually configured DPB size
+ ... instead of the largest we ever seen.
+ Note that d3d11h264dec element holds previously configured DPB size
+ for later decoder object re-open decision.
+ This is to fix below case:
+ 1) Initial SPS, required DPB size is 6
+ - decoder object is opened with DPB size 6
+ - max_dpb_size is now 6
+ 2) SPS update with resolution change, required DPB size is 1
+ - decoder object is re-opened with DPB size 1
+ - max_dpb_size should be updated to 1, but it didn't happen (BUG)
+ 3) SPS update without resolution change, only required DPB size is
updated to 6
+ - decoder object should be re-opened but didn't happen
+ because we didn't update max_dpb_size at 2).
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2057>
+
+2020-11-26 05:55:29 +0900 Seungha Yang <[email protected]>
+
+ * sys/d3d11/gstd3d11h264dec.c:
+ d3d11h264dec: Reconfigure decoder object on DPB size change
+ Even if resolution and/or bitdepth is not updated, required
+ DPB size can be changed per SPS update and it could be even
+ larger than previously configured size of DPB. If so, we need
+ to reconfigure DPB d3d11 texture pool again.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2057>
+
+2021-03-01 16:23:37 +0100 Jan Alexander Steffens (heftig)
<[email protected]>
+
+ * gst/mpegtsdemux/mpegtsparse.c:
+ mpegtsparse: Fix switched DTS/PTS when set-timestamps=false
+ Fixes 30ee21eae36e7279f63b77167ba1dcf5f70b8e83.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2049>
+
+2021-02-26 16:36:58 +0200 Sebastian Dr??ge <[email protected]>
+
+ * sys/decklink/gstdecklinkvideosink.cpp:
+ decklinkvideosink: Use correct numerator for 29.97fps
+ It's not 0.2997fps.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2043>
+
+2021-02-26 11:39:10 +0100 Edward Hervey <[email protected]>
+
+ * sys/decklink/gstdecklink.cpp:
+ decklinksrc: Use a more accurate capture time
+ Use the hardware reference clock time when the frame was finished
being captured
+ instead of a time much further down the road.
+ This improves the stability/accuracy of buffer times.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2041>
+
+2021-02-24 16:57:06 +0100 V??ctor Manuel J??quez Leal <[email protected]>
+
+ * docs/plugins/gst_plugins_cache.json:
+ * ext/vulkan/vkcolorconvert.c:
+ * ext/vulkan/vkviewconvert.c:
+ vulkan: Fix elements long name.
+ Fix vkcoloconvert and vkviewconvert long names.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2036>
+
+2021-02-19 00:03:00 +0000 Tim-Philipp M??ller <[email protected]>
+
+ * gst/sdp/gstsdpsrc.c:
+ sdpsrc: fix double free if sdp is provided as string via the property
+ Fixes
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1532
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2027>
+
+2021-01-29 02:09:05 -0500 Staz M <[email protected]>
+
+ * sys/decklink/gstdecklink.cpp:
+ decklink: Fixed decklinkvideosink auto format detection
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1998>
+
+2021-01-20 18:16:17 +0800 Haihua Hu <[email protected]>
+
+ * ext/dash/gstmpdhelper.c:
+ dashsink: fix double unref of sinkpad caps
+ no need to unref caps in gst_mpd_helper_get_XXX_codec_from_mime
+ it will be unref in caller gst_dash_sink_get_stream_metadata()
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1991>
+
+2021-01-18 19:23:30 +0900 Seungha Yang <[email protected]>
+
+ * sys/d3d11/gstd3d11videosink.c:
+ d3d11videosink: Fix build error on UWP
+ gstd3d11videosink.c(662): error C2065: 'sink': undeclared identifier
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1972>
+
+2021-01-14 02:17:31 +0000 Tim-Philipp M??ller <[email protected]>
+
+ * meson.build:
+ Back to development
+
=== release 1.18.3 ===
2021-01-13 21:11:22 +0000 Tim-Philipp M??ller <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/NEWS
new/gst-plugins-bad-1.18.4/NEWS
--- old/gst-plugins-bad-1.18.3/NEWS 2021-01-13 22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/NEWS 2021-03-15 18:49:18.000000000 +0100
@@ -2,13 +2,13 @@
GStreamer 1.18.0 was originally released on 8 September 2020.
-The latest bug-fix release in the 1.18 series is 1.18.3 and was released
-on 13 January 2021.
+The latest bug-fix release in the 1.18 series is 1.18.4 and was released
+on 15 March 2021.
See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
version of this document.
-Last updated: Wednesday 13 January 2021, 20:00 UTC (log)
+Last updated: Monday 15 March 2021, 13:00 UTC (log)
Introduction
@@ -2717,6 +2717,168 @@
- List of Merge Requests applied in 1.18.3
- List of Issues fixed in 1.18.3
+1.18.4
+
+The fourth 1.18 bug-fix release (1.18.4) was released on 15 March 2021.
+
+This release only contains bugfixes and security fixes and it should be
+safe to update from 1.18.x.
+
+Highlighted bugfixes in 1.18.4
+
+- important security fixes for ID3 tag reading, matroska and realmedia
+ parsing, and gst-libav audio decoding
+- audiomixer, audioaggregator: input buffer handling fixes
+- decodebin3: improve stream-selection message handling
+- uridecodebin3: make ???caps??? property work
+- wavenc: fix writing of INFO chunks in some cases
+- v4l2: bt601 colorimetry, allow encoder resolution changes, fix
+ decoder frame rate negotiation
+- decklinkvideosink: fix auto format detection, and fixes for 29.97fps
+ framerate output
+- mpeg-2 video handling fixes when seeking
+- avviddec: fix bufferpool negotiation and possible memory corruption
+ when changing resolution
+- various stability, performance and reliability improvements
+- memory leak fixes
+- build fixes: rpicamsrc, qt overlay example, d3d11videosink on UWP
+
+gstreamer
+
+- info: Don???t leak log function user_data if the debug system is
+ compiled out
+- task: Use SetThreadDescription() Win32 API for setting thread names,
+ which preserves thread names in dump files.
+- buffer, memory: Mark info in map functions as caller-allocates and
+ pass allocation params as const pointers where possible
+- clock: define AUTO_CLEANUP_FREE_FUNC for GstClockID
+
+gst-plugins-base
+
+- tag: id3v2: fix frame size check and potential invalid reads
+- audio: Fix gst_audio_buffer_truncate() meta handling for
+ non-interleaved audio
+- audioresample: respect buffer layout when draining
+- audioaggregator: fix input_buffer ownership
+- decodebin3: change stream selection message owner, so that the app
+ sends the stream-selection event to the right element
+- rtspconnection: correct data_size when tunneled mode
+- uridecodebin3: make caps property work
+- video-converter: Don???t upsample invalid lines
+- videodecoder: Fix racy critical when pool negotiation occurs during
+ flush
+- video: Convert gst_video_info_to_caps() to take self as const ptr
+- examples: added qt core dependency for qt overlay example
+
+gst-plugins-good
+
+- matroskademux: header parsing fixes
+- rpicamsrc: depend on posix threads and vchiq_arm to fix build on
+ raspios again
+- wavenc: Fixed INFO chunk corruption, caused by odd sized data not
+ being padded
+- wavpackdec: Add floating point format support to fix distortions in
+ some cases
+- v4l2: recognize V4L2 bt601 colorimetry again
+- v4l2videoenc: support resolution change stream encode
+- v4l2h265codec: fix HEVC profile string issue
+- v4l2object: Need keep same transfer as input caps
+- v4l2videodec: Fix vp8 and vp9 streams can???t play on board with
+ vendor bsp
+- v4l2videodec: fix src side frame rate negotiation
+
+gst-plugins-bad
+
+- avwait: Don???t post messages with the mutex locked
+- d3d11h264dec: Reconfigure decoder object on DPB size change and keep
+ track of actually configured DPB size
+- dashsink: fix double unref of sinkpad caps
+- decklinkvideosink: Use correct numerator for 29.97fps
+- decklinkvideosink: fix auto format detection
+- decklinksrc: Use a more accurate capture time
+- d3d11videosink: Fix build error on UWP
+- interlace: negotiation and buffer leak fixes
+- mpegvideoparse: do not clip, so decoder receives data from keyframe
+ even if it???s before the segment start
+- mpegtsparse: Fix switched DTS/PTS when set-timestamps=false
+- nvh264sldec: Reopen decoder object if larger DPB size is required
+- sdpsrc: fix double free if sdp is provided as string via the
+ property
+- vulkan: Fix elements long name.
+
+gst-plugins-ugly
+
+- rmdemux: Make sure we have enough data available when parsing
+ audio/video packets
+
+gst-libav
+
+- avviddec: take the maximum of the height/coded_height
+- viddec: don???t configure an incorrect buffer pool when receiving a
+ gap event
+- audiodec: fix stack overflow in gst_ffmpeg_channel_layout_to_gst()
+
+gst-rtsp-server
+
+- rtspclientsink: fix deadlock on shutdown if no data has been
+ received yet
+- rtspclientsink: fix leaks in unit tests
+- rtsp-stream: avoid deadlock in send_func
+- rtsp-client: cleanup transports during TEARDOWN
+
+gstreamer-vaapi
+
+- h264 encoder: append encoder exposure to aud
+- postproc: Fix a problem of propose_allocation when passthrough
+- glx: Iterate over FBConfig and select 8 bit color size
+
+gstreamer-sharp
+
+- no changes
+
+gst-omx
+
+- no changes
+
+gst-python
+
+- no changes
+
+gst-editing-services
+
+- group: Use proper group constructor
+
+gst-integration-testsuites
+
+- no changes
+
+gst-build
+
+- no changes
+
+Cerbero build tool and packaging changes in 1.18.4
+
+- macOS: more BigSur fixes
+- glib: Backport patch to set thread names on Windows 10
+
+Contributors to 1.18.4
+
+Alicia Boya Garc??a, Ashley Brighthope, Bing Song, Branko Subasic, Edward
+Hervey, Guillaume Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Alexander
+Steffens (heftig), Jeongki Kim, Jordan Petridis, Knobe, Kristofer
+Bj??rkstr??m, Marijn Suijten, Matthew Waters, Paul Goulpi??, Philipp Zabel,
+Rafa?? Dzi??giel, Sebastian Dr??ge, Seungha Yang, Staz M, St??phane Cerveau,
+Thibault Saunier, Tim-Philipp M??ller, V??ctor Manuel J??quez Leal, Vivia
+Nikolaidou, Vladimir Menshakov,
+
+??? 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.18.4
+
+- List of Merge Requests applied in 1.18.4
+- List of Issues fixed in 1.18.4
+
Schedule for 1.20
Our next major feature release will be 1.20, and 1.19 will be the
@@ -2724,9 +2886,9 @@
development of 1.19/1.20 will happen in the git master branch.
The plan for the 1.20 development cycle is yet to be confirmed, but it
-is now expected that feature freeze will take place some time in
-January/February 2021, with the first 1.20 stable release hopefully
-around February/March 2021.
+is now expected that feature freeze will take place some time in April
+2021, with the first 1.20 stable release hopefully around April/May
+2021.
1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12,
1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/RELEASE
new/gst-plugins-bad-1.18.4/RELEASE
--- old/gst-plugins-bad-1.18.3/RELEASE 2021-01-13 22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/RELEASE 2021-03-15 18:49:18.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-bad 1.18.3.
+This is GStreamer gst-plugins-bad 1.18.4.
The GStreamer team is thrilled to announce a new major feature release
of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.18.3/docs/plugins/gst_plugins_cache.json
new/gst-plugins-bad-1.18.4/docs/plugins/gst_plugins_cache.json
--- old/gst-plugins-bad-1.18.3/docs/plugins/gst_plugins_cache.json
2021-01-13 22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/docs/plugins/gst_plugins_cache.json
2021-03-15 18:49:18.000000000 +0100
@@ -25229,7 +25229,7 @@
"long-name": "Interlace filter",
"pad-templates": {
"sink": {
- "caps": "video/x-raw:\n format: { AYUV, YUY2,
UYVY, I420, YV12, Y42B, Y444, NV12, NV21 }\n width: [ 1, 2147483647
]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1
]\n",
+ "caps": "video/x-raw:\n format: { AYUV, YUY2,
UYVY, I420, YV12, Y42B, Y444, NV12, NV21 }\n width: [ 1, 2147483647
]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n
interlace-mode: progressive\nvideo/x-raw:\n format: { AYUV, YUY2, UYVY,
I420, YV12, Y42B, Y444, NV12, NV21 }\n width: [ 1, 2147483647 ]\n
height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n
interlace-mode: interleaved\n field-order: { (string)top-field-first,
(string)bottom-field-first }\nvideo/x-raw:\n format: { AYUV, YUY2,
UYVY, I420, YV12, Y42B, Y444, NV12, NV21 }\n width: [ 1, 2147483647
]\n height: [ 1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n
interlace-mode: mixed\n\nvideo/x-raw(format:Interlaced):\n format: {
AYUV, YUY2, UYVY, I420, YV12, Y42B, Y444, NV12, NV21 }\n width: [ 1,
2147483647 ]\n height: [ 1, 2147483647 ]\n framerate: [ 0/
1, 2147483647/1 ]\n interlace-mode: alternate\n",
"direction": "sink",
"presence": "always"
},
@@ -222500,7 +222500,7 @@
"GObject"
],
"klass": "Filter/Video/Convert",
- "long-name": "Vulkan Uploader",
+ "long-name": "Vulkan Color Convert",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:VulkanImage):\n
format: { BGRA, RGBA, ABGR, ARGB, BGRx, RGBx, xBGR, xRGB, AYUV, YUY2, NV12 }\n
width: [ 1, 2147483647 ]\n height: [ 1, 2147483647 ]\n
framerate: [ 0/1, 2147483647/1 ]\n",
@@ -222680,7 +222680,7 @@
"GObject"
],
"klass": "Filter/Video/Convert",
- "long-name": "Vulkan Uploader",
+ "long-name": "Vulkan View Convert",
"pad-templates": {
"sink": {
"caps": "video/x-raw(memory:VulkanImage):\n
format: { BGRA, RGBA }\n width: [ 1, 2147483647 ]\n height: [
1, 2147483647 ]\n framerate: [ 0/1, 2147483647/1 ]\n",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/ext/dash/gstmpdhelper.c
new/gst-plugins-bad-1.18.4/ext/dash/gstmpdhelper.c
--- old/gst-plugins-bad-1.18.3/ext/dash/gstmpdhelper.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/ext/dash/gstmpdhelper.c 2021-03-15
18:49:18.000000000 +0100
@@ -103,7 +103,6 @@
}
done:
- gst_caps_unref (caps);
return codec_name;
}
@@ -128,7 +127,6 @@
}
done:
- gst_caps_unref (caps);
return codec_name;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/ext/vulkan/vkcolorconvert.c
new/gst-plugins-bad-1.18.4/ext/vulkan/vkcolorconvert.c
--- old/gst-plugins-bad-1.18.3/ext/vulkan/vkcolorconvert.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/ext/vulkan/vkcolorconvert.c 2021-03-15
18:49:18.000000000 +0100
@@ -895,7 +895,7 @@
gstelement_class = (GstElementClass *) klass;
gstbasetransform_class = (GstBaseTransformClass *) klass;
- gst_element_class_set_metadata (gstelement_class, "Vulkan Uploader",
+ gst_element_class_set_metadata (gstelement_class, "Vulkan Color Convert",
"Filter/Video/Convert", "A Vulkan Color Convert",
"Matthew Waters <[email protected]>");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/ext/vulkan/vkviewconvert.c
new/gst-plugins-bad-1.18.4/ext/vulkan/vkviewconvert.c
--- old/gst-plugins-bad-1.18.3/ext/vulkan/vkviewconvert.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/ext/vulkan/vkviewconvert.c 2021-03-15
18:49:18.000000000 +0100
@@ -607,7 +607,7 @@
GST_TYPE_VULKAN_STEREO_DOWNMIX, DEFAULT_DOWNMIX,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_set_metadata (gstelement_class, "Vulkan Uploader",
+ gst_element_class_set_metadata (gstelement_class, "Vulkan View Convert",
"Filter/Video/Convert", "A Vulkan View Convert",
"Matthew Waters <[email protected]>");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/gst/interlace/gstinterlace.c
new/gst-plugins-bad-1.18.4/gst/interlace/gstinterlace.c
--- old/gst-plugins-bad-1.18.3/gst/interlace/gstinterlace.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/gst/interlace/gstinterlace.c 2021-03-15
18:49:18.000000000 +0100
@@ -186,12 +186,16 @@
);
static GstStaticPadTemplate gst_interlace_sink_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
- ("{AYUV,YUY2,UYVY,I420,YV12,Y42B,Y444,NV12,NV21}")
- )
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (VIDEO_FORMATS)
+ ",interlace-mode=progressive ;" GST_VIDEO_CAPS_MAKE (VIDEO_FORMATS)
+
",interlace-mode=interleaved,field-order={top-field-first,bottom-field-first}; "
+ GST_VIDEO_CAPS_MAKE (VIDEO_FORMATS) ",interlace-mode=mixed ;"
+ GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_FORMAT_INTERLACED,
+ VIDEO_FORMATS)
+ ",interlace-mode=alternate")
);
GType gst_interlace_get_type (void);
@@ -649,6 +653,10 @@
}
#endif
+ if (interlace->stored_frame) {
+ gst_buffer_unref (interlace->stored_frame);
+ interlace->stored_frame = NULL;
+ }
ret = gst_pad_push_event (interlace->srcpad, event);
break;
case GST_EVENT_CAPS:
@@ -1442,6 +1450,9 @@
case GST_STATE_CHANGE_PAUSED_TO_READY:
g_mutex_lock (&interlace->lock);
interlace->src_fps_n = 0;
+ if (interlace->stored_frame) {
+ gst_buffer_unref (interlace->stored_frame);
+ }
g_mutex_unlock (&interlace->lock);
/* why? */
//gst_interlace_reset (interlace);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/gst/mpegtsdemux/mpegtsparse.c
new/gst-plugins-bad-1.18.4/gst/mpegtsdemux/mpegtsparse.c
--- old/gst-plugins-bad-1.18.3/gst/mpegtsdemux/mpegtsparse.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/gst/mpegtsdemux/mpegtsparse.c 2021-03-15
18:49:18.000000000 +0100
@@ -809,8 +809,8 @@
}
/* Copy over input PTS/DTS (if present) */
- GST_BUFFER_DTS (buf) = base->packetizer->last_pts;
- GST_BUFFER_PTS (buf) = base->packetizer->last_dts;
+ GST_BUFFER_DTS (buf) = base->packetizer->last_dts;
+ GST_BUFFER_PTS (buf) = base->packetizer->last_pts;
ret = mpegts_parse_have_buffer (base, gst_buffer_ref (buf));
while (pad && !done) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/gst/sdp/gstsdpsrc.c
new/gst-plugins-bad-1.18.4/gst/sdp/gstsdpsrc.c
--- old/gst-plugins-bad-1.18.3/gst/sdp/gstsdpsrc.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/gst/sdp/gstsdpsrc.c 2021-03-15
18:49:18.000000000 +0100
@@ -159,8 +159,11 @@
if (self->location && strcmp (self->location, "sdp://") != 0) {
/* Do nothing */
} else if (self->sdp) {
+ guint sdp_len = strlen (self->sdp);
+
self->sdp_buffer =
- gst_buffer_new_wrapped (self->sdp, strlen (self->sdp) + 1);
+ gst_buffer_new_wrapped (g_strndup (self->sdp, sdp_len),
+ sdp_len + 1);
} else {
ret = GST_STATE_CHANGE_FAILURE;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/gst/timecode/gstavwait.c
new/gst-plugins-bad-1.18.4/gst/timecode/gstavwait.c
--- old/gst-plugins-bad-1.18.3/gst/timecode/gstavwait.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/gst/timecode/gstavwait.c 2021-03-15
18:49:18.000000000 +0100
@@ -353,7 +353,9 @@
ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
switch (transition) {
- case GST_STATE_CHANGE_PAUSED_TO_READY:
+ case GST_STATE_CHANGE_PAUSED_TO_READY:{
+ gboolean send_message = FALSE;
+
g_mutex_lock (&self->mutex);
if (self->mode != MODE_RUNNING_TIME) {
GST_DEBUG_OBJECT (self, "First time reset in paused to ready");
@@ -364,7 +366,7 @@
}
if (!self->dropping) {
self->dropping = TRUE;
- gst_avwait_send_element_message (self, TRUE, GST_CLOCK_TIME_NONE);
+ send_message = TRUE;
}
gst_segment_init (&self->asegment, GST_FORMAT_UNDEFINED);
self->asegment.position = GST_CLOCK_TIME_NONE;
@@ -377,7 +379,11 @@
gst_video_time_code_free (self->last_seen_tc);
self->last_seen_tc = NULL;
g_mutex_unlock (&self->mutex);
+
+ if (send_message)
+ gst_avwait_send_element_message (self, TRUE, GST_CLOCK_TIME_NONE);
break;
+ }
default:
break;
}
@@ -609,7 +615,9 @@
GST_LOG_OBJECT (pad, "Got %s event", GST_EVENT_TYPE_NAME (event));
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_SEGMENT:
+ case GST_EVENT_SEGMENT:{
+ gboolean send_message = FALSE;
+
g_mutex_lock (&self->mutex);
gst_event_copy_segment (event, &self->vsegment);
if (self->vsegment.format != GST_FORMAT_TIME) {
@@ -625,16 +633,22 @@
self->audio_running_time_to_end_at = GST_CLOCK_TIME_NONE;
if (!self->dropping) {
self->dropping = TRUE;
- gst_avwait_send_element_message (self, TRUE, GST_CLOCK_TIME_NONE);
+ send_message = TRUE;
}
self->vsegment.position = GST_CLOCK_TIME_NONE;
g_mutex_unlock (&self->mutex);
+
+ if (send_message)
+ gst_avwait_send_element_message (self, TRUE, GST_CLOCK_TIME_NONE);
break;
+ }
case GST_EVENT_GAP:
gst_event_unref (event);
return TRUE;
case GST_EVENT_EOS:{
GstClockTime running_time;
+ gboolean send_message = FALSE;
+ GstClockTime audio_running_time_to_end_at;
g_mutex_lock (&self->mutex);
self->video_eos_flag = TRUE;
@@ -661,15 +675,16 @@
if (self->must_send_end_message & END_MESSAGE_AUDIO_PUSHED) {
self->must_send_end_message = END_MESSAGE_NORMAL;
- g_mutex_unlock (&self->mutex);
- gst_avwait_send_element_message (self, TRUE,
- self->audio_running_time_to_end_at);
+ send_message = TRUE;
+ audio_running_time_to_end_at = self->audio_running_time_to_end_at;
} else if (self->must_send_end_message & END_MESSAGE_STREAM_ENDED) {
self->must_send_end_message |= END_MESSAGE_VIDEO_PUSHED;
- g_mutex_unlock (&self->mutex);
- } else {
- g_mutex_unlock (&self->mutex);
}
+ g_mutex_unlock (&self->mutex);
+
+ if (send_message)
+ gst_avwait_send_element_message (self, TRUE,
+ audio_running_time_to_end_at);
break;
}
case GST_EVENT_FLUSH_START:
@@ -678,7 +693,9 @@
g_cond_signal (&self->audio_cond);
g_mutex_unlock (&self->mutex);
break;
- case GST_EVENT_FLUSH_STOP:
+ case GST_EVENT_FLUSH_STOP:{
+ gboolean send_message = FALSE;
+
g_mutex_lock (&self->mutex);
self->video_flush_flag = FALSE;
GST_DEBUG_OBJECT (self, "First time reset in video flush");
@@ -688,12 +705,16 @@
self->audio_running_time_to_end_at = GST_CLOCK_TIME_NONE;
if (!self->dropping) {
self->dropping = TRUE;
- gst_avwait_send_element_message (self, TRUE, GST_CLOCK_TIME_NONE);
+ send_message = TRUE;
}
gst_segment_init (&self->vsegment, GST_FORMAT_UNDEFINED);
self->vsegment.position = GST_CLOCK_TIME_NONE;
g_mutex_unlock (&self->mutex);
+
+ if (send_message)
+ gst_avwait_send_element_message (self, TRUE, GST_CLOCK_TIME_NONE);
break;
+ }
case GST_EVENT_CAPS:{
GstCaps *caps;
gst_event_parse_caps (event, &caps);
@@ -748,22 +769,27 @@
g_mutex_unlock (&self->mutex);
break;
case GST_EVENT_EOS:{
+ gboolean send_message = FALSE;
+ GstClockTime audio_running_time_to_end_at;
+
g_mutex_lock (&self->mutex);
self->audio_eos_flag = TRUE;
g_cond_signal (&self->audio_cond);
if ((self->must_send_end_message & END_MESSAGE_VIDEO_PUSHED)) {
self->must_send_end_message = END_MESSAGE_NORMAL;
- g_mutex_unlock (&self->mutex);
- gst_avwait_send_element_message (self, TRUE,
- self->audio_running_time_to_end_at);
+ audio_running_time_to_end_at = self->audio_running_time_to_end_at;
+ send_message = TRUE;
} else if (self->must_send_end_message & END_MESSAGE_STREAM_ENDED) {
self->must_send_end_message |= END_MESSAGE_AUDIO_PUSHED;
- g_mutex_unlock (&self->mutex);
} else {
self->must_send_end_message = END_MESSAGE_NORMAL;
- g_mutex_unlock (&self->mutex);
}
+ g_mutex_unlock (&self->mutex);
+
+ if (send_message)
+ gst_avwait_send_element_message (self, TRUE,
+ audio_running_time_to_end_at);
break;
}
case GST_EVENT_FLUSH_STOP:
@@ -803,6 +829,9 @@
GstVideoTimeCodeMeta *tc_meta;
gboolean retry = FALSE;
gboolean ret = GST_FLOW_OK;
+ gboolean send_message = FALSE;
+ GstClockTime message_running_time;
+ gboolean message_dropping;
timestamp = GST_BUFFER_TIMESTAMP (inbuf);
if (timestamp == GST_CLOCK_TIME_NONE) {
@@ -898,8 +927,9 @@
inbuf = NULL;
}
} else if (emit_passthrough_signal && self->recording) {
- gst_avwait_send_element_message (self, FALSE,
- self->running_time_to_wait_for);
+ send_message = TRUE;
+ message_running_time = self->running_time_to_wait_for;
+ message_dropping = FALSE;
}
}
break;
@@ -924,8 +954,11 @@
if (self->recording) {
self->audio_running_time_to_wait_for = running_time;
}
- if (self->recording)
- gst_avwait_send_element_message (self, FALSE, running_time);
+ if (self->recording) {
+ send_message = TRUE;
+ message_running_time = running_time;
+ message_dropping = FALSE;
+ }
}
if (GST_CLOCK_TIME_IS_VALID (self->end_running_time)
@@ -948,8 +981,9 @@
inbuf = NULL;
}
} else if (emit_passthrough_signal && self->recording) {
- gst_avwait_send_element_message (self, FALSE,
- self->running_time_to_wait_for);
+ send_message = TRUE;
+ message_running_time = self->running_time_to_wait_for;
+ message_dropping = FALSE;
}
break;
@@ -964,9 +998,11 @@
}
if (self->dropping) {
self->dropping = FALSE;
- if (self->recording)
- gst_avwait_send_element_message (self, FALSE,
- self->running_time_to_wait_for);
+ if (self->recording) {
+ send_message = TRUE;
+ message_running_time = self->running_time_to_wait_for;
+ message_dropping = FALSE;
+ }
}
}
break;
@@ -1015,7 +1051,9 @@
&& running_time > self->running_time_to_wait_for) {
/* We just started recording: synchronise the audio */
self->audio_running_time_to_wait_for = running_time;
- gst_avwait_send_element_message (self, FALSE, running_time);
+ send_message = TRUE;
+ message_running_time = running_time;
+ message_dropping = FALSE;
} else {
/* We will start in the future when running_time_to_wait_for is
* reached */
@@ -1044,6 +1082,11 @@
g_cond_signal (&self->cond);
g_mutex_unlock (&self->mutex);
+ if (send_message)
+ gst_avwait_send_element_message (self, message_dropping,
+ message_running_time);
+ send_message = FALSE;
+
if (inbuf) {
GST_DEBUG_OBJECT (self,
"Pass video buffer %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT,
@@ -1058,22 +1101,24 @@
g_mutex_lock (&self->mutex);
if (self->must_send_end_message & END_MESSAGE_AUDIO_PUSHED) {
self->must_send_end_message = END_MESSAGE_NORMAL;
- g_mutex_unlock (&self->mutex);
- gst_avwait_send_element_message (self, TRUE,
- self->audio_running_time_to_end_at);
+ send_message = TRUE;
+ message_dropping = TRUE;
+ message_running_time = self->audio_running_time_to_end_at;
} else if (self->must_send_end_message & END_MESSAGE_STREAM_ENDED) {
if (self->audio_eos_flag) {
self->must_send_end_message = END_MESSAGE_NORMAL;
- g_mutex_unlock (&self->mutex);
- gst_avwait_send_element_message (self, TRUE,
- self->audio_running_time_to_end_at);
+ send_message = TRUE;
+ message_dropping = TRUE;
+ message_running_time = self->audio_running_time_to_end_at;
} else {
self->must_send_end_message |= END_MESSAGE_VIDEO_PUSHED;
- g_mutex_unlock (&self->mutex);
}
- } else {
- g_mutex_unlock (&self->mutex);
}
+ g_mutex_unlock (&self->mutex);
+
+ if (send_message)
+ gst_avwait_send_element_message (self, message_dropping,
+ message_running_time);
return ret;
}
@@ -1284,20 +1329,25 @@
}
if (send_element_message) {
+ gboolean send_message = FALSE;
+ GstClockTime audio_running_time_to_end_at;
+
g_mutex_lock (&self->mutex);
if ((self->must_send_end_message & END_MESSAGE_VIDEO_PUSHED) ||
self->video_eos_flag) {
self->must_send_end_message = END_MESSAGE_NORMAL;
- g_mutex_unlock (&self->mutex);
- gst_avwait_send_element_message (self, TRUE,
- self->audio_running_time_to_end_at);
+ send_message = TRUE;
+ audio_running_time_to_end_at = self->audio_running_time_to_end_at;
} else if (self->must_send_end_message & END_MESSAGE_STREAM_ENDED) {
self->must_send_end_message |= END_MESSAGE_AUDIO_PUSHED;
- g_mutex_unlock (&self->mutex);
} else {
g_assert_not_reached ();
- g_mutex_unlock (&self->mutex);
}
+ g_mutex_unlock (&self->mutex);
+
+ if (send_message)
+ gst_avwait_send_element_message (self, TRUE,
+ audio_running_time_to_end_at);
}
send_element_message = FALSE;
return ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.18.3/gst/videoparsers/gstmpegvideoparse.c
new/gst-plugins-bad-1.18.4/gst/videoparsers/gstmpegvideoparse.c
--- old/gst-plugins-bad-1.18.3/gst/videoparsers/gstmpegvideoparse.c
2021-01-13 22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/gst/videoparsers/gstmpegvideoparse.c
2021-03-15 18:49:18.000000000 +0100
@@ -999,9 +999,6 @@
mpvparse->send_codec_tag = FALSE;
}
- /* usual clipping applies */
- frame->flags |= GST_BASE_PARSE_FRAME_FLAG_CLIP;
-
if (mpvparse->send_mpeg_meta) {
GstBuffer *buf;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/gst-plugins-bad.doap
new/gst-plugins-bad-1.18.4/gst-plugins-bad.doap
--- old/gst-plugins-bad-1.18.3/gst-plugins-bad.doap 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/gst-plugins-bad.doap 2021-03-15
18:49:18.000000000 +0100
@@ -35,6 +35,16 @@
<release>
<Version>
+ <revision>1.18.4</revision>
+ <branch>1.18</branch>
+ <name></name>
+ <created>2021-03-15</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.18.4.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.18.3</revision>
<branch>1.18</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/meson.build
new/gst-plugins-bad-1.18.4/meson.build
--- old/gst-plugins-bad-1.18.3/meson.build 2021-01-13 22:11:24.000000000
+0100
+++ new/gst-plugins-bad-1.18.4/meson.build 2021-03-15 18:49:18.000000000
+0100
@@ -1,5 +1,5 @@
project('gst-plugins-bad', 'c', 'cpp',
- version : '1.18.3',
+ version : '1.18.4',
meson_version : '>= 0.49',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/sys/d3d11/gstd3d11h264dec.c
new/gst-plugins-bad-1.18.4/sys/d3d11/gstd3d11h264dec.c
--- old/gst-plugins-bad-1.18.3/sys/d3d11/gstd3d11h264dec.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/sys/d3d11/gstd3d11h264dec.c 2021-03-15
18:49:18.000000000 +0100
@@ -99,6 +99,8 @@
guint chroma_format_idc;
GstVideoFormat out_format;
+ gint max_dpb_size;
+
/* Array of DXVA_Slice_H264_Short */
GArray *slice_list;
@@ -288,6 +290,20 @@
GST_ELEMENT_CLASS (parent_class)->set_context (element, context);
}
+/* Clear all codec specific (e.g., SPS) data */
+static void
+gst_d3d11_h264_dec_reset (GstD3D11H264Dec * self)
+{
+ self->width = 0;
+ self->height = 0;
+ self->coded_width = 0;
+ self->coded_height = 0;
+ self->bitdepth = 0;
+ self->chroma_format_idc = 0;
+ self->out_format = GST_VIDEO_FORMAT_UNKNOWN;
+ self->max_dpb_size = 0;
+}
+
static gboolean
gst_d3d11_h264_dec_open (GstVideoDecoder * decoder)
{
@@ -308,6 +324,8 @@
return FALSE;
}
+ gst_d3d11_h264_dec_reset (self);
+
return TRUE;
}
@@ -419,6 +437,12 @@
modified = TRUE;
}
+ if (self->max_dpb_size < max_dpb_size) {
+ GST_INFO_OBJECT (self, "Requires larger DPB size (%d -> %d)",
+ self->max_dpb_size, max_dpb_size);
+ modified = TRUE;
+ }
+
if (modified || !self->d3d11_decoder->opened) {
GstVideoInfo info;
@@ -446,6 +470,12 @@
gst_video_info_set_format (&info,
self->out_format, self->width, self->height);
+ /* Store configured DPB size here. Then, it will be referenced later
+ * to decide whether we need to re-open decoder object or not.
+ * For instance, if every configuration is same apart from DPB size and
+ * new DPB size is decreased, we can reuse existing decoder object.
+ */
+ self->max_dpb_size = max_dpb_size;
gst_d3d11_decoder_reset (self->d3d11_decoder);
if (!gst_d3d11_decoder_open (self->d3d11_decoder, GST_D3D11_CODEC_H264,
&info, self->coded_width, self->coded_height,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/sys/d3d11/gstd3d11videosink.c
new/gst-plugins-bad-1.18.4/sys/d3d11/gstd3d11videosink.c
--- old/gst-plugins-bad-1.18.3/sys/d3d11/gstd3d11videosink.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/sys/d3d11/gstd3d11videosink.c 2021-03-15
18:49:18.000000000 +0100
@@ -559,7 +559,7 @@
#if GST_D3D11_WINAPI_ONLY_APP
if (window_type != GST_D3D11_WINDOW_NATIVE_TYPE_CORE_WINDOW &&
window_type != GST_D3D11_WINDOW_NATIVE_TYPE_SWAP_CHAIN_PANEL) {
- GST_ERROR_OBJECT (sink, "Overlay handle must be set before READY state");
+ GST_ERROR_OBJECT (self, "Overlay handle must be set before READY state");
return FALSE;
}
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/sys/decklink/gstdecklink.cpp
new/gst-plugins-bad-1.18.4/sys/decklink/gstdecklink.cpp
--- old/gst-plugins-bad-1.18.3/sys/decklink/gstdecklink.cpp 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/sys/decklink/gstdecklink.cpp 2021-03-15
18:49:18.000000000 +0100
@@ -661,7 +661,8 @@
}
f = vinfo.finfo->format;
- return gst_decklink_type_from_video_format (f);
+ *format =
gst_decklink_pixel_format_from_type(gst_decklink_type_from_video_format (f));
+ return TRUE;
}
static GstStructure *
@@ -1022,6 +1023,41 @@
if (clock) {
capture_time = gst_clock_get_time (clock);
+ if (video_frame) {
+ // If we have the actual capture time for the frame, compensate the
+ // capture time accordingly.
+ //
+ // We do this by subtracting the belay between "now" in hardware
+ // reference clock and the time when the frame was finished being
+ // capture based on the same hardware reference clock.
+ //
+ // We then subtract that difference from the "now" on the gst clock.
+ //
+ // *Technically* we should be compensating that difference for the
+ // difference in clock rate between the "hardware reference clock" and
+ // the GStreamer clock. But since the values are quite small this has
+ // very little impact.
+ BMDTimeValue hardware_now;
+ res = m_input->input->GetHardwareReferenceClock (GST_SECOND,
&hardware_now, NULL, NULL);
+ if (res == S_OK) {
+ res =
+ video_frame->GetHardwareReferenceTimestamp (GST_SECOND,
+ &hardware_time,
&hardware_duration);
+ if (res != S_OK) {
+ GST_ERROR ("Failed to get hardware time: 0x%08lx", (unsigned long)
res);
+ hardware_time = GST_CLOCK_TIME_NONE;
+ hardware_duration = GST_CLOCK_TIME_NONE;
+ } else {
+ GstClockTime hardware_diff = hardware_now - hardware_time;
+ GST_LOG ("Compensating capture time by %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (hardware_diff));
+ if (capture_time > hardware_diff)
+ capture_time -= hardware_diff;
+ else
+ capture_time = 0;
+ }
+ }
+ }
if (capture_time > base_time)
capture_time -= base_time;
else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.18.3/sys/decklink/gstdecklinkvideosink.cpp
new/gst-plugins-bad-1.18.4/sys/decklink/gstdecklinkvideosink.cpp
--- old/gst-plugins-bad-1.18.3/sys/decklink/gstdecklinkvideosink.cpp
2021-01-13 22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/sys/decklink/gstdecklinkvideosink.cpp
2021-03-15 18:49:18.000000000 +0100
@@ -823,7 +823,7 @@
gst_byte_writer_put_uint8_unchecked (&bw, 0x2f);
} else if (mode->fps_n == 25 && mode->fps_d == 1) {
gst_byte_writer_put_uint8_unchecked (&bw, 0x3f);
- } else if (mode->fps_n == 30 && mode->fps_d == 1001) {
+ } else if (mode->fps_n == 30000 && mode->fps_d == 1001) {
gst_byte_writer_put_uint8_unchecked (&bw, 0x4f);
} else if (mode->fps_n == 30 && mode->fps_d == 1) {
gst_byte_writer_put_uint8_unchecked (&bw, 0x5f);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/sys/nvcodec/gstnvh264dec.c
new/gst-plugins-bad-1.18.4/sys/nvcodec/gstnvh264dec.c
--- old/gst-plugins-bad-1.18.3/sys/nvcodec/gstnvh264dec.c 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/sys/nvcodec/gstnvh264dec.c 2021-03-15
18:49:18.000000000 +0100
@@ -112,6 +112,7 @@
guint coded_width, coded_height;
guint bitdepth;
guint chroma_format_idc;
+ gint max_dpb_size;
GstVideoFormat out_format;
/* For OpenGL interop. */
@@ -232,6 +233,20 @@
GST_ELEMENT_CLASS (parent_class)->set_context (element, context);
}
+/* Clear all codec specific (e.g., SPS) data */
+static void
+gst_d3d11_h264_dec_reset (GstNvH264Dec * self)
+{
+ self->width = 0;
+ self->height = 0;
+ self->coded_width = 0;
+ self->coded_height = 0;
+ self->bitdepth = 0;
+ self->chroma_format_idc = 0;
+ self->out_format = GST_VIDEO_FORMAT_UNKNOWN;
+ self->max_dpb_size = 0;
+}
+
static gboolean
gst_nv_h264_dec_open (GstVideoDecoder * decoder)
{
@@ -245,6 +260,8 @@
return FALSE;
}
+ gst_d3d11_h264_dec_reset (self);
+
return TRUE;
}
@@ -362,6 +379,12 @@
modified = TRUE;
}
+ if (self->max_dpb_size < max_dpb_size) {
+ GST_INFO_OBJECT (self, "Requires larger DPB size (%d -> %d)",
+ self->max_dpb_size, max_dpb_size);
+ modified = TRUE;
+ }
+
if (modified || !self->decoder) {
GstVideoInfo info;
@@ -391,6 +414,7 @@
gst_video_info_set_format (&info,
self->out_format, self->width, self->height);
+ self->max_dpb_size = max_dpb_size;
/* FIXME: add support cudaVideoCodec_H264_SVC and cudaVideoCodec_H264_MVC
*/
self->decoder = gst_nv_decoder_new (self->context, cudaVideoCodec_H264,
&info,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.18.3/tests/check/elements/interlace.c
new/gst-plugins-bad-1.18.4/tests/check/elements/interlace.c
--- old/gst-plugins-bad-1.18.3/tests/check/elements/interlace.c 1970-01-01
01:00:00.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/tests/check/elements/interlace.c 2021-03-15
18:49:18.000000000 +0100
@@ -0,0 +1,216 @@
+/* GStreamer
+ * unit test for interlace
+ *
+ * Copyright (C) 2021 Vivia Nikolaidou <vivia at ahiru dot eu>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gst/check/gstcheck.h>
+#include <gst/check/gstharness.h>
+#include <gst/video/video.h>
+
+GST_START_TEST (test_passthrough)
+{
+ GstBuffer *buffer;
+ GstHarness *h;
+
+ h = gst_harness_new ("interlace");
+
+ gst_harness_set (h, "interlace", "field-pattern", 1, "top-field-first", TRUE,
+ NULL);
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=interleaved,field-order=top-field-first,format=AYUV,height=1,width=1,framerate=1/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer), GST_FLOW_OK);
+
+ gst_harness_set (h, "interlace", "field-pattern", 1, "top-field-first",
FALSE,
+ NULL);
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=interleaved,field-order=bottom-field-first,format=AYUV,width=1,height=1,framerate=1/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer), GST_FLOW_OK);
+
+ gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_reject_passthrough_mixed)
+{
+ GstHarness *h;
+ GstBuffer *buffer;
+
+ h = gst_harness_new ("interlace");
+ gst_harness_play (h);
+
+ gst_harness_set (h, "interlace", "field-pattern", 3, NULL);
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=mixed,format=AYUV,width=1,height=1,framerate=1/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer),
+ GST_FLOW_NOT_NEGOTIATED);
+
+ gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_field_switch)
+{
+ GstHarness *h;
+ GstBuffer *buffer;
+
+ h = gst_harness_new ("interlace");
+
+ gst_harness_set (h, "interlace", "field-pattern", 1, "top-field-first",
FALSE,
+ NULL);
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=interleaved,field-order=top-field-first,format=AYUV,width=1,height=1,framerate=1/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer), GST_FLOW_OK);
+
+ gst_harness_set (h, "interlace", "field-pattern", 1, "top-field-first", TRUE,
+ NULL);
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=interleaved,field-order=bottom-field-first,format=AYUV,width=1,height=1,framerate=1/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer), GST_FLOW_OK);
+
+ gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_framerate_2_2)
+{
+ GstHarness *h;
+ GstBuffer *buffer;
+
+ h = gst_harness_new ("interlace");
+
+ gst_harness_set (h, "interlace", "field-pattern", 1, "top-field-first", TRUE,
+ NULL);
+ gst_harness_set_sink_caps_str (h, "video/x-raw,framerate=1/1");
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=progressive,format=AYUV,width=1,height=1,framerate=1/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer), GST_FLOW_OK);
+
+ gst_harness_set_sink_caps_str (h, "video/x-raw,framerate=1/1");
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=progressive,format=AYUV,width=1,height=1,framerate=2/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer),
+ GST_FLOW_NOT_NEGOTIATED);
+
+ gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_framerate_1_1)
+{
+ GstHarness *h;
+ GstBuffer *buffer;
+
+ h = gst_harness_new ("interlace");
+
+ gst_harness_set (h, "interlace", "field-pattern", 0, "top-field-first", TRUE,
+ NULL);
+ gst_harness_set_sink_caps_str (h, "video/x-raw,framerate=1/1");
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=progressive,format=AYUV,width=1,height=1,framerate=1/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer),
+ GST_FLOW_NOT_NEGOTIATED);
+
+ gst_harness_set_sink_caps_str (h, "video/x-raw,framerate=1/1");
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=progressive,format=AYUV,width=1,height=1,framerate=2/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer), GST_FLOW_OK);
+
+ gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_framerate_3_2)
+{
+ GstHarness *h;
+ GstBuffer *buffer;
+
+ h = gst_harness_new ("interlace");
+
+ gst_harness_set (h, "interlace", "field-pattern", 2, NULL);
+ gst_harness_set_sink_caps_str (h, "video/x-raw,framerate=30/1");
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=progressive,format=AYUV,width=1,height=1,framerate=24/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer), GST_FLOW_OK);
+
+ gst_harness_set_sink_caps_str (h, "video/x-raw,framerate=1/1");
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=progressive,format=AYUV,width=1,height=1,framerate=1/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer),
+ GST_FLOW_NOT_NEGOTIATED);
+
+ gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_framerate_empty_not_negotiated)
+{
+ GstHarness *h;
+ GstBuffer *buffer;
+
+ h = gst_harness_new ("interlace");
+
+ gst_harness_set_sink_caps_str (h, "EMPTY");
+ gst_harness_set_src_caps_str (h,
+
"video/x-raw,interlace-mode=progressive,format=AYUV,width=1,height=1,framerate=24/1");
+ buffer = gst_harness_create_buffer (h, 4);
+ fail_unless_equals_int (gst_harness_push (h, buffer),
+ GST_FLOW_NOT_NEGOTIATED);
+
+ gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+static Suite *
+interlace_suite (void)
+{
+ Suite *s = suite_create ("interlace");
+ TCase *tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+
+ tcase_add_test (tc_chain, test_passthrough);
+ tcase_add_test (tc_chain, test_reject_passthrough_mixed);
+ tcase_add_test (tc_chain, test_field_switch);
+ tcase_add_test (tc_chain, test_framerate_2_2);
+ tcase_add_test (tc_chain, test_framerate_1_1);
+ tcase_add_test (tc_chain, test_framerate_3_2);
+ tcase_add_test (tc_chain, test_framerate_empty_not_negotiated);
+
+ return s;
+}
+
+GST_CHECK_MAIN (interlace);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.18.3/tests/check/meson.build
new/gst-plugins-bad-1.18.4/tests/check/meson.build
--- old/gst-plugins-bad-1.18.3/tests/check/meson.build 2021-01-13
22:11:24.000000000 +0100
+++ new/gst-plugins-bad-1.18.4/tests/check/meson.build 2021-03-15
18:49:18.000000000 +0100
@@ -33,6 +33,7 @@
[['elements/h265parse.c'], false, [libparser_dep, gstcodecparsers_dep]],
[['elements/hlsdemux_m3u8.c'], not hls_dep.found(), [hls_dep]],
[['elements/id3mux.c']],
+ [['elements/interlace.c']],
[['elements/jpeg2000parse.c'], false, [libparser_dep, gstcodecparsers_dep]],
[['elements/mfvideosrc.c'], host_machine.system() != 'windows', ],
[['elements/mpegtsdemux.c'], false, [gstmpegts_dep]],