Changes of Revision 6

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