Overview

Request 5804 (accepted)

Verbump

Submit package home:zait...sentials / gstreamer...d-codecs to package Essentials / gstreamer-plugins-bad-codecs

gstreamer-plugins-bad-codecs.changes Changed
x
 
1
@@ -1,4 +1,9 @@
2
 -------------------------------------------------------------------
3
+Sat Jul  1 15:54:57 UTC 2023 - Bjørn Lie <zaitor@opensuse.org>
4
+
5
+- Update to version 1.22.4
6
+
7
+-------------------------------------------------------------------
8
 Thu May 25 17:06:42 UTC 2023 - Bjørn Lie <zaitor@opensuse.org>
9
 
10
 - Update to version 1.22.3
11
gstreamer-plugins-bad-codecs.spec Changed
10
 
1
@@ -7,7 +7,7 @@
2
 %define _version 1.22.0
3
 
4
 Name:           gstreamer-plugins-bad-codecs
5
-Version:        1.22.3
6
+Version:        1.22.4
7
 Release:        0
8
 Summary:        Codecs/plugins for gstreamer-plugins-bad
9
 License:        LGPL-2.1-or-later
10
gst-plugins-bad-1.22.3.tar.xz/ChangeLog -> gst-plugins-bad-1.22.4.tar.xz/ChangeLog Changed
257
 
1
@@ -1,3 +1,255 @@
2
+=== release 1.22.4 ===
3
+
4
+2023-06-20 17:42: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.22.4
11
+
12
+2023-06-13 14:25:04 +0300  Sebastian Dröge <sebastian@centricular.com>
13
+
14
+   * gst/dvdspu/gstspu-pgs.c:
15
+     dvdspu: Avoid integer overflow when checking if enough data is available
16
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4899>
17
+
18
+2023-06-13 14:23:47 +0300  Sebastian Dröge <sebastian@centricular.com>
19
+
20
+   * gst/dvdspu/gstspu-pgs.c:
21
+     dvdspu: Make sure enough data is allocated for the available data
22
+     If the size read from the stream is smaller than the currently available
23
+     data then the size is bogus and the data should simply be discarded.
24
+     Fixes ZDI-CAN-20994
25
+     Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2660
26
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4899>
27
+
28
+2023-04-18 09:59:36 +0200  Andoni Morales Alastruey <amorales@fluendo.com>
29
+
30
+   * sys/applemedia/vtenc.c:
31
+   * sys/applemedia/vtenc.h:
32
+     vtenc: remove duplicated framerate and size variables
33
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4888>
34
+
35
+2023-03-30 15:38:22 +0200  Andoni Morales Alastruey <amorales@fluendo.com>
36
+
37
+   * sys/applemedia/meson.build:
38
+   * sys/applemedia/vtdec.h:
39
+   * sys/applemedia/vtenc.c:
40
+   * sys/applemedia/vtenc.h:
41
+   * tests/validate/meson.build:
42
+   * tests/validate/vtenc/vtenc_h264.validatetest:
43
+   * tests/validate/vtenc/vtenc_h264/flow-expectations/log-enc-src-expected:
44
+   * tests/validate/vtenc/vtenc_h264_b_frames.validatetest:
45
+   * tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations/log-enc-src-expected:
46
+   * tests/validate/vtenc/vtenc_h265.validatetest:
47
+   * tests/validate/vtenc/vtenc_h265/flow-expectations/log-enc-src-expected:
48
+   * tests/validate/vtenc/vtenc_h265_b_frames.validatetest:
49
+   * tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations/log-enc-src-expected:
50
+     vtenc: apply DTS offset to ensure DTS <= PTS
51
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4888>
52
+
53
+2023-03-23 20:04:49 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
54
+
55
+   * gst/videoparsers/gsth265parse.c:
56
+     h265parse: Don't override upstream framerate
57
+     The framerate should only be replaced (and corrected for alternating field)
58
+     when it is parsed from the bitstream. Otherwise, the upstream framerate
59
+     from caps should be trusted and assumed correct.
60
+     Related to gst-plugins-bad!2020
61
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
62
+
63
+2023-03-23 20:02:16 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
64
+
65
+   * gst/videoparsers/gsth265parse.c:
66
+   * gst/videoparsers/gsth265parse.h:
67
+     h265parse: Rename parsed_framerate to framerate_from_caps
68
+     That meaning of parsed_framerate is ambigious, it is set whenever the
69
+     framerate has been parsed from caps, which can be confused with being
70
+     parsed from the bitstream. Rename this as framerate_from_caps.
71
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
72
+
73
+2023-02-15 13:10:39 +0800  Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>
74
+
75
+   * gst/videoparsers/gsth265parse.c:
76
+     h265parse: Fix to check returned value
77
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
78
+
79
+2023-05-11 15:28:35 +0200  Michael Olbrich <m.olbrich@pengutronix.de>
80
+
81
+   * gst/sdp/gstsdpdemux.c:
82
+     sdpdemux: ensure that only one srcpad is created per stream
83
+     If two senders use the same multicast IP and port then new_session_pad()
84
+     may try to add a srcpad to the same stream twice.
85
+     stream->srcpad is updated but gst_element_add_pad() fails the second
86
+     time. As a result stream->srcpad points to a deleted object and
87
+     access in gst_sdp_demux_stream_free() fails with a segfault.
88
+     Just ignore the second pad. Nothing useful can be done with it anyway.
89
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4873>
90
+
91
+2023-06-11 22:22:36 +0200  Marek Vasut <marex@denx.de>
92
+
93
+   * sys/kms/gstkmssink.c:
94
+     kmssink: Add ST STM32 LTDC auto-detection
95
+     Add STM32 LTDC controller into list of auto-detected modules.
96
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4872>
97
+
98
+2023-06-11 22:22:25 +0200  Marek Vasut <marex@denx.de>
99
+
100
+   * sys/kms/gstkmssink.c:
101
+     kmssink: Add NXP i.MX8M Plus LCDIFv3 auto-detection
102
+     Add i.MX8M Plus LCDIFv3 controller into list of auto-detected modules.
103
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4872>
104
+
105
+2023-04-28 22:25:11 +0800  He Junyan <junyan.he@intel.com>
106
+
107
+   * sys/va/gstvah265enc.c:
108
+     va: h265enc: map the mbbrc to correct enum value in get_property()
109
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4870>
110
+
111
+2023-04-28 22:26:34 +0800  He Junyan <junyan.he@intel.com>
112
+
113
+   * sys/va/gstvah264enc.c:
114
+     va: h264enc: map the mbbrc to correct enum value in get_property()
115
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4870>
116
+
117
+2023-06-14 10:08:51 +0200  François Laignel <francois@centricular.com>
118
+
119
+   * ext/srtp/gstsrtpdec.c:
120
+     srtpdec: fix Got data flow before segment event
121
+     A race condition can occur in `srtpdec` during the READY -> NULL transition:
122
+     an RTCP buffer can make its way to `gst_srtp_dec_chain` while the element is
123
+     partially stopped, resulting in the following critical warning:
124
+     > Got data flow before segment event
125
+     The problematic sequence is the following:
126
+     1. An RTCP buffer is being handled by the chain function for the
127
+     `rtcp_sinkpad`. Since, this is the first buffer, we try pushing the sticky
128
+     events to `rtcp_srcpad`.
129
+     2. At the same moment, the element is being transitioned from PAUSED to READY.
130
+     3. While checking and pushing the sticky events for `rtcp_srcpad`, we reach the
131
+     Segment event. For this, we try to get it from the "otherpad", in this case
132
+     `rtp_srcpad`. In the problematic case, `rtp_srcpad` has already been
133
+     deactivated so its sticky events have been cleared. We won't be pushing any
134
+     Segment event to `rtcp_srcpad`.
135
+     4. We return to the chain function for `rtcp_sinkpad` and try pushing the
136
+     buffer to `rtcp_srcpad` for which deactivation hasn't started yet, hence the
137
+     "Got data flow before segment event".
138
+     This commit:
139
+     - Adds a boolean return value to `gst_srtp_dec_push_early_events`: in case the
140
+     Segment event can't be retrieved, `gst_srtp_dec_chain` can return  an error
141
+     instead of calling `gst_pad_push`.
142
+     - Replaces the obsolete `gst_pad_set_caps` with `gst_pad_push_event`. The
143
+     additional preconditions checked by previous function are guaranteed here
144
+     since we push a fixed Caps which was built in the same function.
145
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4860>
146
+
147
+2023-06-15 11:11:39 +0200  François Laignel <francois@centricular.com>
148
+
149
+   * ext/srtp/gstsrtpdec.c:
150
+     srtpdec: backport for fix assertion 'parent->numsinkpads <= 1' failed
151
+     Commit 96450f4c uses the new function `gst_element_decorate_stream_id` which
152
+     was introduced by 39633967 in 1.23.
153
+     This commit backports 96450f4c with a simplified version of
154
+     `gst_element_decorate_stream_id_internal` as a private srtpdec function.
155
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4860>
156
+
157
+2023-06-15 01:36:25 +0900  Seungha Yang <seungha@centricular.com>
158
+
159
+   * sys/d3dvideosink/d3dvideosink.c:
160
+     d3dvideosink: Fix navigation event leak
161
+     Fixing regression introduced in 6c2f6c3bd4dd525eb02c6d7000e84b76663d3daf
162
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4868>
163
+
164
+2023-06-13 01:29:14 +0100  Tim-Philipp Müller <tim@centricular.com>
165
+
166
+   * gst/asfmux/gstasfobjects.c:
167
+     asfmux: fix potentially unaligned write on 32-bit ARM
168
+     Fixes #2665
169
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4855>
170
+
171
+2023-06-01 15:16:47 +0300  Sebastian Dröge <sebastian@centricular.com>
172
+
173
+   * sys/decklink/gstdecklink.h:
174
+     decklink: Implement Windows string conversion with common API between MinGW and MSVC
175
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
176
+
177
+2023-06-01 15:17:26 +0300  Sebastian Dröge <sebastian@centricular.com>
178
+
179
+   * sys/decklink/gstdecklink.h:
180
+     decklink: Add some newlines in long defines
181
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
182
+
183
+2023-05-31 23:44:42 +0300  Maksym Khomenko <maksym.khomenko@skelia.partners>
184
+
185
+   * sys/decklink/gstdecklink.h:
186
+     decklink: Calculate string size before malloc
187
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
188
+
189
+2023-05-30 15:27:21 +0300  Sebastian Dröge <sebastian@centricular.com>
190
+
191
+   * sys/decklink/gstdecklink.h:
192
+     decklink: Use the macOS version of the SDK on macOS and not the Linux one
193
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
194
+
195
+2023-05-30 13:23:28 +0300  Sebastian Dröge <sebastian@centricular.com>
196
+
197
+   * sys/decklink/gstdecklink.h:
198
+     decklink: Free SDK strings after usage on Linux
199
+     While they're const char* they still need to be freed like on Windows
200
+     and macOS and would be leaked otherwise.
201
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
202
+
203
+2023-05-30 13:22:44 +0300  Sebastian Dröge <sebastian@centricular.com>
204
+
205
+   * sys/decklink/gstdecklink.h:
206
+     decklink: Correctly handle SDK strings on macOS
207
+     They're CFStringRef* and not plain NUL-terminated char* C strings.
208
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
209
+
210
+2023-05-26 13:26:42 +0100  Colin Kinloch <colin.kinloch@collabora.com>
211
+
212
+   * ext/gtk/gstgtkwaylandsink.c:
213
+   * gst-libs/gst/wayland/gstwlwindow.c:
214
+     waylandsink: Emit "map" signal boarder surface is ready
215
+     This allows gtkwaylandsink to queue a draw of its gtk widget at the
216
+     correct time, avoiding a race.
217
+     Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>
218
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4754>
219
+
220
+2023-05-25 17:02:24 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>
221
+
222
+   * ext/fdkaac/gstfdkaacdec.c:
223
+     fdkaacdec: Support up to 5 rear channels
224
+     The `switch (n_rear)` supports up to 5 rear channels, but our channel
225
+     set only had space for 3. Size the set properly to fix this.
226
+     This didn't actually cause any memory unsafety as `PUSH_CHAN` would stop
227
+     incrementing `n_rear` if the channel set is already full.
228
+     Thanks to @alatiera for noticing this.
229
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4740>
230
+
231
+2023-05-24 22:12:51 +0900  Seungha Yang <seungha@centricular.com>
232
+
233
+   * sys/d3d11/gstd3d11videosink.cpp:
234
+     d3d11videosink: Fix error on pause and play
235
+     The show_frame() can be called without prepare() call on paused to
236
+     playing state change. Thus the prepared buffer should not be cleared
237
+     on show_frame()
238
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4714>
239
+
240
+2023-05-18 09:27:29 -0400  Thibault Saunier <tsaunier@igalia.com>
241
+
242
+   * gst/debugutils/gsttestsrcbin.c:
243
+     testsrcbin: Remove spurious caps unref
244
+     Caps are cleared at the end of the function
245
+     Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2575
246
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4685>
247
+
248
+2023-05-19 12:36:19 +0100  Tim-Philipp Müller <tim@centricular.com>
249
+
250
+   * meson.build:
251
+     Back to development
252
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4679>
253
+
254
 === release 1.22.3 ===
255
 
256
 2023-05-19 09:23:19 +0100  Tim-Philipp Müller <tim@centricular.com>
257
gst-plugins-bad-1.22.3.tar.xz/NEWS -> gst-plugins-bad-1.22.4.tar.xz/NEWS Changed
202
 
1
@@ -2,13 +2,13 @@
2
 
3
 GStreamer 1.22.0 was originally released on 23 January 2023.
4
 
5
-The latest bug-fix release in the stable 1.22 series is 1.22.3 and was
6
-released on 19 May 2023.
7
+The latest bug-fix release in the stable 1.22 series is 1.22.4 and was
8
+released on 20 June 2023.
9
 
10
 See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
11
 version of this document.
12
 
13
-Last updated: Friday 19 May 2023, 01:00 UTC (log)
14
+Last updated: Tuesday 20 June 2023, 16:30 UTC (log)
15
 
16
 Introduction
17
 
18
@@ -1831,6 +1831,183 @@
19
 -   List of Merge Requests applied in 1.22.3
20
 -   List of Issues fixed in 1.22.3
21
 
22
+1.22.4
23
+
24
+The fourth 1.22 bug-fix release (1.22.4) was released on 20 June 2023.
25
+
26
+This release only contains bugfixes and security fixes and it should be
27
+safe to update from 1.22.x.
28
+
29
+Highlighted bugfixes in 1.22.4
30
+
31
+-   Security fixes for flacparse, dvdspu, and subparse
32
+-   d3d11videosink: Fix error on pause and play
33
+-   decklink: Correctly handle SDK strings on macOS and free strings
34
+    after usage on Linux
35
+-   filesink: Fix buffered mode writing of buffer lists and buffers with
36
+    multiple memories
37
+-   gldownload: handle passthrough without a critical
38
+-   h265parse: Fix framerate handling regression
39
+-   oggdemux: vp8 fixes
40
+-   mp4mux, qtmux, qtdemux: Opus audio mapping fixes
41
+-   pngdec: Fix wrong colours output from 16bit RGB images
42
+-   ptp clock: Work around ptpd bug in default configuration
43
+-   srtpdec: fix critical warnings on shutdown
44
+-   v4l2src: fix support for bayer format
45
+-   v4l2videoenc: support force-keyframe event in v4l2 encoder
46
+-   vtenc: apply DTS offset to ensure DTS <= PTS
47
+-   gst-python: allow more functions to be called before gst_init()
48
+-   cerbero: fix vaapi variant; add qt6 build on windows; ensure errors
49
+    on unguarded use of new APIs, require macOS 10.13
50
+-   packages: ship codecalpha, rtponvif, dvbsubenc, switchbin,
51
+    videosignal plugins; fix pango crash on 32-bit windows
52
+-   various bug fixes, memory leak fixes, and other stability and
53
+    reliability improvements
54
+
55
+gstreamer
56
+
57
+-   filesink: Fix buffered mode writing of buffer lists and buffers with
58
+    multiple memories
59
+-   basesink: Clear EOS flag on STREAM-START event
60
+-   typefindhelper: downgrade bogus error level debug log message
61
+-   ptp: Correctly parse clock ID from the commandline parameters in the
62
+    helper
63
+-   ptp: Work around bug in ptpd in default configuration
64
+
65
+gst-plugins-base
66
+
67
+-   alsasink: Fix stall for transition from PAUSED to READY with USB
68
+    speakerphone.
69
+-   appsink: unref buffer in prev sample early so buffers from v4l2 can
70
+    be released properly
71
+-   basetextoverlay: Fix typo in “text-y” property description
72
+-   gldownload: handle passthrough without a critical
73
+-   glfilter: add parent meta to output buffer for input buffer
74
+-   oggdemux: vp8: Push headers downstream and detect keyframe packets
75
+-   opus: Fix potential crash when getting unexpected channel position
76
+-   streamsynchronizer: reset eos on STREAM_START
77
+-   subparse: Look for the closing > of a tag after the opening <
78
+-   video: convertframe: Add D3D11 specific conversion path
79
+-   videometa: Only validate the alignment only when it contains some
80
+    info
81
+-   video-blend: Fix linking error with C++
82
+
83
+gst-plugins-good
84
+
85
+-   flacparse: Avoid integer overflow in available data check for image
86
+    tags
87
+-   flvmux: use the correct timestamp to calculate wait times
88
+-   isomp4: Fix (E)AC-3 channel count handling
89
+-   jpegdec: fixes related to interlaced jpeg
90
+-   pngdec: Fix wrong colours output from 16bit RGB images
91
+-   qtmux, qtdemux: fix byte order for opus extension
92
+-   rtspsrc: Do not try send dropped get/set parameter
93
+-   qt5, qt6: Add more meson options and eliminate all automagic
94
+-   qt: glrenderer: don’t attempt to use QWindow from non-Qt main thread
95
+-   qml6glsink: Support building on win32
96
+-   v4l2src: fix support for bayer format
97
+-   v4l2: Change to query only up to
98
+    V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
99
+-   v4l2videodec: treat MPEG-1 format as MPEG-2
100
+-   v4l2videoenc: support force keyframe event in v4l2 encoder
101
+-   tests: rtpbin_buffer_list: fix possible unaligned write/read on
102
+    32-bit ARM
103
+
104
+gst-plugins-bad
105
+
106
+-   asfmux: fix possible unaligned write on 32-bit ARM
107
+-   d3d11videosink: Fix error on pause and play
108
+-   d3dvideosink: Fix navigation event leak
109
+-   decklink: Correctly handle SDK strings on macOS and free strings
110
+    after usage on Linux
111
+-   dvdspu: Make sure enough data is allocated for the available data
112
+-   fdkaacdec: Support up to 5 rear channels
113
+-   h265parse: Fix framerate handling
114
+-   kmssink: Add STM32 LTDC and NXP i.MX8M Plus LCDIFv3 auto-detection
115
+-   sdpdemux: ensure that only one srcpad is created per stream
116
+-   srtpdec: fix critical warnings on shutdown
117
+-   testsrcbin: Remove spurious caps unref
118
+-   va: map the mbbrc to correct enum value in get_property()
119
+-   vtenc: apply DTS offset to ensure DTS <= PTS
120
+-   vtdec: time glitches on h264 playback
121
+-   waylandsink: Emit “map” signal boarder surface is ready
122
+
123
+gst-plugins-ugly
124
+
125
+-   No changes
126
+
127
+gst-libav
128
+
129
+-   No changes
130
+
131
+gst-rtsp-server
132
+
133
+-   No changes
134
+
135
+gstreamer-vaapi
136
+
137
+-   vaapidecodebin: don’t load vaapipostproc if not available
138
+
139
+gstreamer-sharp
140
+
141
+-   No changes
142
+
143
+gst-omx
144
+
145
+-   No changes
146
+
147
+gst-python
148
+
149
+-   python: More functions can be called before gst_init()
150
+
151
+gst-editing-services
152
+
153
+-   ges: launcher: Never put sinks in a GstPipeline
154
+
155
+gst-validate + gst-integration-testsuites
156
+
157
+-   No changes
158
+
159
+gst-examples
160
+
161
+-   No changes
162
+
163
+Development build environment
164
+
165
+-   No changes
166
+
167
+Cerbero build tool and packaging changes in 1.22.4
168
+
169
+-   Ship codecalpha, rtponvif, dvbsubenc, switchbin, videosignal plugins
170
+-   pango: Fix crash on Windows 32bit build
171
+-   qml6: Add support for building the qml6 plugin on Windows and bump
172
+    meson to 1.1.1
173
+-   vaapi: update vaapi variant/recipe for meson option changes
174
+-   packages: Put libass in the same category as assrender
175
+-   cerbero: Don’t extract if already extracted in fetch
176
+-   darwin: Ensure errors on unguarded use of new APIs, require macOS
177
+    10.13
178
+
179
+Contributors to 1.22.4
180
+
181
+Andoni Morales Alastruey, Arun Raghavan, Colin Kinloch, Daniel Morin,
182
+Edward Hervey, ekwange, Elliot Chen, François Laignel, Guillaume
183
+Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Alexander Steffens
184
+(heftig), Jochen Henneberg, Jordan Petridis, Kevin Song, Maksym
185
+Khomenko, Marek Vasut, Mathieu Duponchelle, Matthew Waters,
186
+Mengkejiergeli Ba, Michael Olbrich, Nicolas Beland, Nicolas Dufresne,
187
+Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Sebastian Dröge,
188
+Seungha Yang, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez
189
+Leal, William Manley, Xavier Claessens, Yuri Fedoseev,
190
+
191
+… and many others who have contributed bug reports, translations, sent
192
+suggestions or helped testing. Thank you all!
193
+
194
+List of merge requests and issues fixed in 1.22.4
195
+
196
+-   List of Merge Requests applied in 1.22.4
197
+-   List of Issues fixed in 1.22.4
198
+
199
 Schedule for 1.24
200
 
201
 Our next major feature release will be 1.24, and 1.23 will be the
202
gst-plugins-bad-1.22.3.tar.xz/RELEASE -> gst-plugins-bad-1.22.4.tar.xz/RELEASE Changed
7
 
1
@@ -1,4 +1,4 @@
2
-This is GStreamer gst-plugins-bad 1.22.3.
3
+This is GStreamer gst-plugins-bad 1.22.4.
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.22.3.tar.xz/ext/fdkaac/gstfdkaacdec.c -> gst-plugins-bad-1.22.4.tar.xz/ext/fdkaac/gstfdkaacdec.c Changed
10
 
1
@@ -237,7 +237,7 @@
2
 
3
   DEF_CHANSET (front, 7);
4
   DEF_CHANSET (side, 2);
5
-  DEF_CHANSET (rear, 3);
6
+  DEF_CHANSET (rear, 5);
7
   DEF_CHANSET (lfe, 2);
8
   DEF_CHANSET (top_front, 3);
9
   DEF_CHANSET (top_center, 3);
10
gst-plugins-bad-1.22.3.tar.xz/ext/gtk/gstgtkwaylandsink.c -> gst-plugins-bad-1.22.4.tar.xz/ext/gtk/gstgtkwaylandsink.c Changed
28
 
1
@@ -432,6 +432,17 @@
2
 }
3
 
4
 static void
5
+wl_window_map_cb (GstWlWindow * wl_window, GstGtkWaylandSink * self)
6
+{
7
+  GstGtkWaylandSinkPrivate *priv =
8
+      gst_gtk_wayland_sink_get_instance_private (self);
9
+
10
+  GST_DEBUG_OBJECT (self, "waylandsink surface is ready");
11
+
12
+  gtk_gst_base_widget_queue_draw (GTK_GST_BASE_WIDGET (priv->gtk_widget));
13
+}
14
+
15
+static void
16
 setup_wl_window (GstGtkWaylandSink * self)
17
 {
18
   GstGtkWaylandSinkPrivate *priv =
19
@@ -457,6 +468,8 @@
20
         wl_surface, &priv->render_lock);
21
     gst_wl_window_set_rotate_method (priv->wl_window,
22
         priv->current_rotate_method);
23
+    g_signal_connect_object (priv->wl_window, "map",
24
+        G_CALLBACK (wl_window_map_cb), self, 0);
25
   }
26
 
27
   /* In order to position the subsurface correctly within a scrollable widget,
28
gst-plugins-bad-1.22.3.tar.xz/ext/srtp/gstsrtpdec.c -> gst-plugins-bad-1.22.4.tar.xz/ext/srtp/gstsrtpdec.c Changed
136
 
1
@@ -1260,7 +1260,54 @@
2
   return gst_srtp_dec_iterate_internal_links (pad, parent, TRUE);
3
 }
4
 
5
-static void
6
+/* Partial backport to 1.22 of `gst_element_decorate_stream_id_internal`,
7
+ * which was introduced in 1.23 */
8
+static gchar *
9
+decorate_stream_id_private (GstElement * element, const gchar * stream_id)
10
+{
11
+  gchar *upstream_stream_id = NULL, *new_stream_id;
12
+  GstQuery *query;
13
+  gchar *uri = NULL;
14
+
15
+  /* Try to generate a stream-id from the URI query and
16
+   * if it fails take a random number instead */
17
+  query = gst_query_new_uri ();
18
+  if (gst_element_query (element, query)) {
19
+    gst_query_parse_uri (query, &uri);
20
+  }
21
+
22
+  if (uri) {
23
+    GChecksum *cs;
24
+
25
+    /* And then generate an SHA256 sum of the URI */
26
+    cs = g_checksum_new (G_CHECKSUM_SHA256);
27
+    g_checksum_update (cs, (const guchar *) uri, strlen (uri));
28
+    g_free (uri);
29
+    upstream_stream_id = g_strdup (g_checksum_get_string (cs));
30
+    g_checksum_free (cs);
31
+  } else {
32
+    /* Just get some random number if the URI query fails */
33
+    GST_FIXME_OBJECT (element, "Creating random stream-id, consider "
34
+        "implementing a deterministic way of creating a stream-id");
35
+    upstream_stream_id =
36
+        g_strdup_printf ("%08x%08x%08x%08x", g_random_int (), g_random_int (),
37
+        g_random_int (), g_random_int ());
38
+  }
39
+
40
+  gst_query_unref (query);
41
+
42
+  if (stream_id) {
43
+    new_stream_id = g_strconcat (upstream_stream_id, "/", stream_id, NULL);
44
+  } else {
45
+    new_stream_id = g_strdup (upstream_stream_id);
46
+  }
47
+
48
+  g_free (upstream_stream_id);
49
+
50
+  return new_stream_id;
51
+}
52
+
53
+static gboolean
54
 gst_srtp_dec_push_early_events (GstSrtpDec * filter, GstPad * pad,
55
     GstPad * otherpad, gboolean is_rtcp)
56
 {
57
@@ -1283,7 +1330,7 @@
58
           is_rtcp ? "rtcp" : "rtp");
59
       gst_event_unref (otherev);
60
     } else {
61
-      new_stream_id = gst_pad_create_stream_id (pad, GST_ELEMENT (filter),
62
+      new_stream_id = decorate_stream_id_private (GST_ELEMENT (filter),
63
           is_rtcp ? "rtcp" : "rtp");
64
     }
65
 
66
@@ -1304,7 +1351,8 @@
67
     else
68
       caps = gst_caps_new_empty_simple ("application/x-rtp");
69
 
70
-    gst_pad_set_caps (pad, caps);
71
+    ev = gst_event_new_caps (caps);
72
+    gst_pad_push_event (pad, ev);
73
     gst_caps_unref (caps);
74
   }
75
 
76
@@ -1314,8 +1362,16 @@
77
   } else {
78
     ev = gst_pad_get_sticky_event (otherpad, GST_EVENT_SEGMENT, 0);
79
 
80
-    if (ev)
81
+    if (ev) {
82
       gst_pad_push_event (pad, ev);
83
+    } else if (GST_PAD_IS_FLUSHING (otherpad)) {
84
+      /* We didn't get a Segment event from otherpad
85
+       * and otherpad is flushing => we are most likely shutting down */
86
+      goto err;
87
+    } else {
88
+      GST_WARNING_OBJECT (filter, "No Segment event to push");
89
+      goto err;
90
+    }
91
   }
92
 
93
   if (is_rtcp)
94
@@ -1323,6 +1379,10 @@
95
   else
96
     filter->rtp_has_segment = TRUE;
97
 
98
+  return TRUE;
99
+
100
+err:
101
+  return FALSE;
102
 }
103
 
104
 /*
105
@@ -1500,15 +1560,24 @@
106
   /* Push buffer to source pad */
107
   if (is_rtcp) {
108
     otherpad = filter->rtcp_srcpad;
109
-    if (!filter->rtcp_has_segment)
110
-      gst_srtp_dec_push_early_events (filter, filter->rtcp_srcpad,
111
-          filter->rtp_srcpad, TRUE);
112
+    if (!filter->rtcp_has_segment) {
113
+      if (!gst_srtp_dec_push_early_events (filter, filter->rtcp_srcpad,
114
+              filter->rtp_srcpad, TRUE)) {
115
+        ret = GST_FLOW_FLUSHING;
116
+        goto drop_buffer;
117
+      }
118
+    }
119
   } else {
120
     otherpad = filter->rtp_srcpad;
121
-    if (!filter->rtp_has_segment)
122
-      gst_srtp_dec_push_early_events (filter, filter->rtp_srcpad,
123
-          filter->rtcp_srcpad, FALSE);
124
+    if (!filter->rtp_has_segment) {
125
+      if (!gst_srtp_dec_push_early_events (filter, filter->rtp_srcpad,
126
+              filter->rtcp_srcpad, FALSE)) {
127
+        ret = GST_FLOW_FLUSHING;
128
+        goto drop_buffer;
129
+      }
130
+    }
131
   }
132
+
133
   ret = gst_pad_push (otherpad, buf);
134
 
135
   return ret;
136
gst-plugins-bad-1.22.3.tar.xz/gst-libs/gst/wayland/gstwlwindow.c -> gst-plugins-bad-1.22.4.tar.xz/gst-libs/gst/wayland/gstwlwindow.c Changed
27
 
1
@@ -79,6 +79,7 @@
2
 enum
3
 {
4
   CLOSED,
5
+  MAP,
6
   LAST_SIGNAL
7
 };
8
 
9
@@ -155,6 +156,9 @@
10
 
11
   signalsCLOSED = g_signal_new ("closed", G_TYPE_FROM_CLASS (gobject_class),
12
       G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
13
+  signalsMAP = g_signal_new ("map", G_TYPE_FROM_CLASS (gobject_class),
14
+      G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
15
+
16
 }
17
 
18
 static void
19
@@ -509,6 +513,7 @@
20
       gst_wl_window_update_borders (self);
21
       wl_surface_commit (priv->area_surface_wrapper);
22
       priv->is_area_surface_mapped = TRUE;
23
+      g_signal_emit (self, signalsMAP, 0);
24
     }
25
   } else {
26
     /* clear both video and parent surfaces */
27
gst-plugins-bad-1.22.3.tar.xz/gst-plugins-bad.doap -> gst-plugins-bad-1.22.4.tar.xz/gst-plugins-bad.doap Changed
18
 
1
@@ -35,6 +35,16 @@
2
 
3
  <release>
4
   <Version>
5
+   <revision>1.22.4</revision>
6
+   <branch>1.22</branch>
7
+   <name></name>
8
+   <created>2023-06-20</created>
9
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.22.4.tar.xz" />
10
+  </Version>
11
+ </release>
12
+
13
+ <release>
14
+  <Version>
15
    <revision>1.22.3</revision>
16
    <branch>1.22</branch>
17
    <name></name>
18
gst-plugins-bad-1.22.3.tar.xz/gst/asfmux/gstasfobjects.c -> gst-plugins-bad-1.22.4.tar.xz/gst/asfmux/gstasfobjects.c Changed
20
 
1
@@ -311,14 +311,10 @@
2
 void
3
 gst_asf_put_guid (guint8 * buf, Guid guid)
4
 {
5
-  guint32 *aux32 = (guint32 *) buf;
6
-  guint16 *aux16 = (guint16 *) & (buf4);
7
-  guint64 *aux64 = (guint64 *) & (buf8);
8
-  *aux32 = GUINT32_TO_LE (guid.v1);
9
-  *aux16 = GUINT16_TO_LE (guid.v2);
10
-  aux16 = (guint16 *) & (buf6);
11
-  *aux16 = GUINT16_TO_LE (guid.v3);
12
-  *aux64 = GUINT64_TO_BE (guid.v4);
13
+  GST_WRITE_UINT32_LE (buf + 0, guid.v1);
14
+  GST_WRITE_UINT16_LE (buf + 4, guid.v2);
15
+  GST_WRITE_UINT16_LE (buf + 6, guid.v3);
16
+  GST_WRITE_UINT64_BE (buf + 8, guid.v4);
17
 }
18
 
19
 /**
20
gst-plugins-bad-1.22.3.tar.xz/gst/debugutils/gsttestsrcbin.c -> gst-plugins-bad-1.22.4.tar.xz/gst/debugutils/gsttestsrcbin.c Changed
9
 
1
@@ -343,7 +343,6 @@
2
   capsfilter = gst_element_factory_make ("capsfilter", NULL);
3
   if (caps) {
4
     g_object_set (capsfilter, "caps", caps, NULL);
5
-    gst_caps_unref (caps);
6
   }
7
 
8
   src = gst_element_factory_make (srcfactory, NULL);
9
gst-plugins-bad-1.22.3.tar.xz/gst/dvdspu/gstspu-pgs.c -> gst-plugins-bad-1.22.4.tar.xz/gst/dvdspu/gstspu-pgs.c Changed
21
 
1
@@ -593,6 +593,9 @@
2
     obj->rle_data_size = GST_READ_UINT24_BE (payload);
3
     payload += 3;
4
 
5
+    if (end - payload > obj->rle_data_size)
6
+      return 0;
7
+
8
     PGS_DUMP ("%d bytes of RLE data, of %d bytes total.\n",
9
         (int) (end - payload), obj->rle_data_size);
10
 
11
@@ -604,7 +607,8 @@
12
     PGS_DUMP ("%d bytes of additional RLE data\n", (int) (end - payload));
13
     /* Check that the data chunk is for this object version, and fits in the buffer */
14
     if (obj->rle_data_ver == obj_ver &&
15
-        obj->rle_data_used + end - payload <= obj->rle_data_size) {
16
+        end - payload <= obj->rle_data_size &&
17
+        obj->rle_data_used <= obj->rle_data_size - (end - payload)) {
18
 
19
       memcpy (obj->rle_data + obj->rle_data_used, payload, end - payload);
20
       obj->rle_data_used += end - payload;
21
gst-plugins-bad-1.22.3.tar.xz/gst/sdp/gstsdpdemux.c -> gst-plugins-bad-1.22.4.tar.xz/gst/sdp/gstsdpdemux.c Changed
25
 
1
@@ -536,6 +536,9 @@
2
   if (stream == NULL)
3
     goto unknown_stream;
4
 
5
+  if (stream->srcpad)
6
+    goto unexpected_pad;
7
+
8
   stream->ssrc = ssrc;
9
 
10
   /* no need for a timeout anymore now */
11
@@ -576,6 +579,13 @@
12
   return;
13
 
14
   /* ERRORS */
15
+unexpected_pad:
16
+  {
17
+    GST_DEBUG_OBJECT (demux, "ignoring unexpected session pad");
18
+    GST_SDP_STREAM_UNLOCK (demux);
19
+    g_free (name);
20
+    return;
21
+  }
22
 unknown_stream:
23
   {
24
     GST_DEBUG_OBJECT (demux, "ignoring unknown stream");
25
gst-plugins-bad-1.22.3.tar.xz/gst/videoparsers/gsth265parse.c -> gst-plugins-bad-1.22.4.tar.xz/gst/videoparsers/gsth265parse.c Changed
66
 
1
@@ -2155,7 +2155,7 @@
2
     }
3
 
4
     /* 0/1 is set as the default in the codec parser */
5
-    if (vui->timing_info_present_flag) {
6
+    if (vui->timing_info_present_flag && !h265parse->framerate_from_caps) {
7
       gint fps_num = 0, fps_den = 1;
8
 
9
       if (!(sps->fps_num == 0 && sps->fps_den == 1)) {
10
@@ -2166,15 +2166,19 @@
11
         fps_num = sps->vui_params.time_scale;
12
         fps_den = sps->vui_params.num_units_in_tick;
13
 
14
-        if (gst_h265_parse_is_field_interlaced (h265parse)
15
-            && h265parse->parsed_framerate) {
16
+        if (gst_h265_parse_is_field_interlaced (h265parse)) {
17
           gint new_fps_num, new_fps_den;
18
 
19
-          gst_util_fraction_multiply (fps_num, fps_den, 1, 2, &new_fps_num,
20
-              &new_fps_den);
21
-          fps_num = new_fps_num;
22
-          fps_den = new_fps_den;
23
-          h265parse->parsed_framerate = FALSE;
24
+          if (!gst_util_fraction_multiply (fps_num, fps_den, 1, 2, &new_fps_num,
25
+                  &new_fps_den)) {
26
+            GST_WARNING_OBJECT (h265parse, "Error calculating the new framerate"
27
+                " - integer overflow; setting it to 0/1");
28
+            fps_num = 0;
29
+            fps_den = 1;
30
+          } else {
31
+            fps_num = new_fps_num;
32
+            fps_den = new_fps_den;
33
+          }
34
         }
35
       }
36
 
37
@@ -2197,7 +2201,6 @@
38
             h265parse->parsed_par_n, h265parse->parsed_par_d);
39
         modified = TRUE;
40
       }
41
-
42
     }
43
 
44
     if (vui->video_signal_type_present_flag &&
45
@@ -2251,7 +2254,7 @@
46
       gst_caps_set_simple (caps, "width", G_TYPE_INT, width,
47
           "height", G_TYPE_INT, height, NULL);
48
 
49
-      h265parse->parsed_framerate = FALSE;
50
+      h265parse->framerate_from_caps = FALSE;
51
       /* upstream overrides */
52
       if (s && gst_structure_has_field (s, "framerate"))
53
         gst_structure_get_fraction (s, "framerate", &fps_num, &fps_den);
54
@@ -2269,9 +2272,9 @@
55
             &h265parse->parsed_fps_d);
56
         gst_base_parse_set_frame_rate (GST_BASE_PARSE (h265parse),
57
             fps_num, fps_den, 0, 0);
58
-        val = sps->profile_tier_level.interlaced_source_flag ? GST_SECOND / 2 :
59
+        val = gst_h265_parse_is_field_interlaced (h265parse) ? GST_SECOND / 2 :
60
             GST_SECOND;
61
-        h265parse->parsed_framerate = TRUE;
62
+        h265parse->framerate_from_caps = TRUE;
63
 
64
         /* If we know the frame duration, and if we are not in one of the zero
65
          * latency pattern, add one frame of latency */
66
gst-plugins-bad-1.22.3.tar.xz/gst/videoparsers/gsth265parse.h -> gst-plugins-bad-1.22.4.tar.xz/gst/videoparsers/gsth265parse.h Changed
10
 
1
@@ -110,7 +110,7 @@
2
   gboolean predicted;
3
   gboolean bidirectional;
4
   gboolean header;
5
-  gboolean parsed_framerate;
6
+  gboolean framerate_from_caps;
7
   /* AU state */
8
   gboolean picture_start;
9
 
10
gst-plugins-bad-1.22.3.tar.xz/meson.build -> gst-plugins-bad-1.22.4.tar.xz/meson.build Changed
8
 
1
@@ -1,5 +1,5 @@
2
 project('gst-plugins-bad', 'c', 'cpp',
3
-  version : '1.22.3',
4
+  version : '1.22.4',
5
   meson_version : '>= 0.62',
6
   default_options :  'warning_level=1',
7
                       'buildtype=debugoptimized' )
8
gst-plugins-bad-1.22.3.tar.xz/po/gst-plugins-bad-1.0.pot -> gst-plugins-bad-1.22.4.tar.xz/po/gst-plugins-bad-1.0.pot Changed
13
 
1
@@ -6,9 +6,9 @@
2
 #, fuzzy
3
 msgid ""
4
 msgstr ""
5
-"Project-Id-Version: gst-plugins-bad-1.22.3\n"
6
+"Project-Id-Version: gst-plugins-bad-1.22.4\n"
7
 "Report-Msgid-Bugs-To: \n"
8
-"POT-Creation-Date: 2023-05-19 09:26+0100\n"
9
+"POT-Creation-Date: 2023-06-20 17:48+0100\n"
10
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12
 "Language-Team: LANGUAGE <LL@li.org>\n"
13
gst-plugins-bad-1.22.3.tar.xz/po/gst-plugins-bad.pot -> gst-plugins-bad-1.22.4.tar.xz/po/gst-plugins-bad.pot Changed
13
 
1
@@ -6,9 +6,9 @@
2
 #, fuzzy
3
 msgid ""
4
 msgstr ""
5
-"Project-Id-Version: gst-plugins-bad-1.22.3\n"
6
+"Project-Id-Version: gst-plugins-bad-1.22.4\n"
7
 "Report-Msgid-Bugs-To: \n"
8
-"POT-Creation-Date: 2023-05-19 09:26+0100\n"
9
+"POT-Creation-Date: 2023-06-20 17:48+0100\n"
10
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12
 "Language-Team: LANGUAGE <LL@li.org>\n"
13
gst-plugins-bad-1.22.3.tar.xz/sys/applemedia/meson.build -> gst-plugins-bad-1.22.4.tar.xz/sys/applemedia/meson.build Changed
17
 
1
@@ -15,12 +15,14 @@
2
     '-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type',
3
     '-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer',
4
     '-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new',
5
-    '-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type'
6
+    '-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type',
7
+    '-DGST_USE_UNSTABLE_API'
8
 
9
 
10
 applemedia_objc_args = 
11
 applemedia_option = get_option('applemedia')
12
 if not 'darwin', 'ios'.contains(host_system) or applemedia_option.disabled()
13
+  applemedia_found_deps = false
14
   subdir_done()
15
 endif
16
 
17
gst-plugins-bad-1.22.3.tar.xz/sys/applemedia/vtdec.h -> gst-plugins-bad-1.22.4.tar.xz/sys/applemedia/vtdec.h Changed
9
 
1
@@ -30,7 +30,6 @@
2
 #if defined(APPLEMEDIA_MOLTENVK)
3
 #include <gst/vulkan/vulkan.h>
4
 #endif
5
-#define GST_USE_UNSTABLE_API
6
 #include <gst/codecparsers/gsth264parser.h>
7
 
8
 G_BEGIN_DECLS
9
gst-plugins-bad-1.22.3.tar.xz/sys/applemedia/vtenc.c -> gst-plugins-bad-1.22.4.tar.xz/sys/applemedia/vtenc.c Changed
347
 
1
@@ -86,6 +86,8 @@
2
 #define GST_VTENC_CODEC_DETAILS_QDATA \
3
     g_quark_from_static_string ("vtenc-codec-details")
4
 
5
+#define CMTIME_TO_GST_CLOCK_TIME(time) time.value / (time.timescale / GST_SECOND)
6
+
7
 /* define EnableHardwareAcceleratedVideoEncoder in < 10.9 */
8
 #if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < 1090
9
 const CFStringRef
10
@@ -240,7 +242,7 @@
11
     if (__builtin_available (macOS 13.0, *)) {
12
       /* Can't negate a __builtin_available check */
13
     } else {
14
-      /* Disable ARGB64/RGBA64 if we're on M1 Pro/Max and macOS < 13.0 
15
+      /* Disable ARGB64/RGBA64 if we're on M1 Pro/Max and macOS < 13.0
16
        * due to a bug within VideoToolbox which causes encoding to fail. */
17
       retval = sysctlbyname ("machdep.cpu.brand_string", &cpu_name, &cpu_len,
18
           NULL, 0);
19
@@ -713,6 +715,9 @@
20
 {
21
   GstVTEnc *self = GST_VTENC_CAST (enc);
22
 
23
+  /* DTS can be negative if b-frames are enabled */
24
+  gst_video_encoder_set_min_pts (enc, GST_SECOND * 60 * 60 * 1000);
25
+
26
   self->cur_outframes = g_async_queue_new ();
27
 
28
   return TRUE;
29
@@ -739,8 +744,8 @@
30
     gst_video_codec_state_unref (self->input_state);
31
   self->input_state = NULL;
32
 
33
-  self->negotiated_width = self->negotiated_height = 0;
34
-  self->negotiated_fps_n = self->negotiated_fps_d = 0;
35
+  self->video_info.width = self->video_info.height = 0;
36
+  self->video_info.fps_n = self->video_info.fps_d = 0;
37
 
38
   gst_vtenc_clear_cached_caps_downstream (self);
39
 
40
@@ -750,13 +755,12 @@
41
   return TRUE;
42
 }
43
 
44
-static CFStringRef
45
-gst_vtenc_h264_profile_level_key (GstVTEnc * self, const gchar * profile,
46
+static gboolean
47
+gst_vtenc_h264_parse_profile_level_key (GstVTEnc * self, const gchar * profile,
48
     const gchar * level_arg)
49
 {
50
   char level64;
51
   gchar *key = NULL;
52
-  CFStringRef ret = NULL;
53
 
54
   if (profile == NULL)
55
     profile = "main";
56
@@ -767,13 +771,16 @@
57
   if (!strcmp (profile, "constrained-baseline") ||
58
       !strcmp (profile, "baseline")) {
59
     profile = "Baseline";
60
+    self->h264_profile = GST_H264_PROFILE_BASELINE;
61
   } else if (g_str_has_prefix (profile, "high")) {
62
     profile = "High";
63
+    self->h264_profile = GST_H264_PROFILE_HIGH;
64
   } else if (!strcmp (profile, "main")) {
65
     profile = "Main";
66
+    self->h264_profile = GST_H264_PROFILE_MAIN;
67
   } else {
68
     GST_ERROR_OBJECT (self, "invalid profile: %s", profile);
69
-    return ret;
70
+    return FALSE;
71
   }
72
 
73
   if (strlen (level) == 1) {
74
@@ -784,22 +791,21 @@
75
   }
76
 
77
   key = g_strdup_printf ("H264_%s_%s", profile, level);
78
-  ret = CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key),
79
+  self->profile_level =
80
+      CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key),
81
       kCFStringEncodingASCII, 0);
82
-
83
   GST_INFO_OBJECT (self, "negotiated profile and level %s", key);
84
 
85
   g_free (key);
86
 
87
-  return ret;
88
+  return TRUE;
89
 }
90
 
91
-static CFStringRef
92
-gst_vtenc_hevc_profile_level_key (GstVTEnc * self, const gchar * profile,
93
+static gboolean
94
+gst_vtenc_hevc_parse_profile_level_key (GstVTEnc * self, const gchar * profile,
95
     const gchar * level_arg)
96
 {
97
   gchar *key = NULL;
98
-  CFStringRef ret = NULL;
99
 
100
   if (profile == NULL || !strcmp (profile, "main"))
101
     profile = "Main";
102
@@ -811,18 +817,18 @@
103
     profile = "Main42210";
104
   else {
105
     GST_ERROR_OBJECT (self, "invalid profile: %s", profile);
106
-    return ret;
107
+    return FALSE;
108
   }
109
 
110
   /* VT does not support specific levels for HEVC */
111
   key = g_strdup_printf ("HEVC_%s_AutoLevel", profile);
112
-  ret = CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key),
113
+  self->profile_level =
114
+      CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key),
115
       kCFStringEncodingASCII, 0);
116
-
117
   GST_INFO_OBJECT (self, "negotiated profile and level %s", key);
118
 
119
   g_free (key);
120
-  return ret;
121
+  return TRUE;
122
 }
123
 
124
 static gboolean
125
@@ -834,20 +840,11 @@
126
   if (self->profile_level)
127
     CFRelease (self->profile_level);
128
 
129
-  if (self->specific_format_id == kCMVideoCodecType_HEVC)
130
-    self->profile_level =
131
-        gst_vtenc_hevc_profile_level_key (self, profile, level);
132
-  else
133
-    self->profile_level =
134
-        gst_vtenc_h264_profile_level_key (self, profile, level);
135
-
136
-  if (self->profile_level == NULL) {
137
-    GST_ERROR_OBJECT (self, "unsupported profile '%s' or level '%s'",
138
-        profile, level);
139
-    return FALSE;
140
+  if (self->specific_format_id == kCMVideoCodecType_HEVC) {
141
+    return gst_vtenc_hevc_parse_profile_level_key (self, profile, level);
142
+  } else {
143
+    return gst_vtenc_h264_parse_profile_level_key (self, profile, level);
144
   }
145
-
146
-  return TRUE;
147
 }
148
 
149
 static gboolean
150
@@ -931,10 +928,6 @@
151
     gst_video_codec_state_unref (self->input_state);
152
   self->input_state = gst_video_codec_state_ref (state);
153
 
154
-  self->negotiated_width = state->info.width;
155
-  self->negotiated_height = state->info.height;
156
-  self->negotiated_fps_n = state->info.fps_n;
157
-  self->negotiated_fps_d = state->info.fps_d;
158
   self->video_info = state->info;
159
 
160
   GST_OBJECT_LOCK (self);
161
@@ -954,7 +947,7 @@
162
 static gboolean
163
 gst_vtenc_is_negotiated (GstVTEnc * self)
164
 {
165
-  return self->negotiated_width != 0;
166
+  return self->video_info.width != 0;
167
 }
168
 
169
 /*
170
@@ -987,10 +980,10 @@
171
   GstStructure *s;
172
   GstVideoCodecState *state;
173
 
174
-  if (self->caps_width == self->negotiated_width &&
175
-      self->caps_height == self->negotiated_height &&
176
-      self->caps_fps_n == self->negotiated_fps_n &&
177
-      self->caps_fps_d == self->negotiated_fps_d) {
178
+  if (self->caps_width == self->video_info.width &&
179
+      self->caps_height == self->video_info.height &&
180
+      self->caps_fps_n == self->video_info.fps_n &&
181
+      self->caps_fps_d == self->video_info.fps_d) {
182
     return TRUE;
183
   }
184
 
185
@@ -998,10 +991,10 @@
186
   caps = gst_caps_make_writable (caps);
187
   s = gst_caps_get_structure (caps, 0);
188
   gst_structure_set (s,
189
-      "width", G_TYPE_INT, self->negotiated_width,
190
-      "height", G_TYPE_INT, self->negotiated_height,
191
+      "width", G_TYPE_INT, self->video_info.width,
192
+      "height", G_TYPE_INT, self->video_info.height,
193
       "framerate", GST_TYPE_FRACTION,
194
-      self->negotiated_fps_n, self->negotiated_fps_d, NULL);
195
+      self->video_info.fps_n, self->video_info.fps_d, NULL);
196
 
197
   switch (self->details->format_id) {
198
     case kCMVideoCodecType_H264:
199
@@ -1068,10 +1061,10 @@
200
   gst_video_codec_state_unref (state);
201
   result = gst_video_encoder_negotiate (GST_VIDEO_ENCODER_CAST (self));
202
 
203
-  self->caps_width = self->negotiated_width;
204
-  self->caps_height = self->negotiated_height;
205
-  self->caps_fps_n = self->negotiated_fps_n;
206
-  self->caps_fps_d = self->negotiated_fps_d;
207
+  self->caps_width = self->video_info.width;
208
+  self->caps_height = self->video_info.height;
209
+  self->caps_fps_n = self->video_info.fps_n;
210
+  self->caps_fps_d = self->video_info.fps_d;
211
 
212
   return result;
213
 }
214
@@ -1225,6 +1218,43 @@
215
   }
216
 }
217
 
218
+
219
+static gboolean
220
+gst_vtenc_compute_dts_offset (GstVTEnc * self, gint fps_n, gint fps_d)
221
+{
222
+  gint num_offset_frames;
223
+
224
+  // kVTCompressionPropertyKey_AllowFrameReordering enables B-Frames
225
+  if (!self->allow_frame_reordering ||
226
+      (self->specific_format_id == kCMVideoCodecType_H264
227
+          && self->h264_profile == GST_H264_PROFILE_BASELINE)) {
228
+    num_offset_frames = 0;
229
+  } else {
230
+    if (self->specific_format_id == kCMVideoCodecType_H264) {
231
+      // H264 encoder always sets 2 max_num_ref_frames
232
+      num_offset_frames = 1;
233
+    } else {
234
+      // HEVC encoder uses B-pyramid
235
+      num_offset_frames = 2;
236
+    }
237
+  }
238
+
239
+  if (fps_d == 0 && num_offset_frames != 0) {
240
+    GST_ERROR_OBJECT (self,
241
+        "Variable framerate is not supported with B-Frames");
242
+    return FALSE;
243
+  }
244
+
245
+  self->dts_offset =
246
+      gst_util_uint64_scale (num_offset_frames * GST_SECOND,
247
+      self->video_info.fps_d, self->video_info.fps_n);
248
+
249
+  GST_DEBUG_OBJECT (self, "DTS Offset:%" GST_TIME_FORMAT,
250
+      GST_TIME_ARGS (self->dts_offset));
251
+
252
+  return TRUE;
253
+}
254
+
255
 static VTCompressionSessionRef
256
 gst_vtenc_create_session (GstVTEnc * self)
257
 {
258
@@ -1262,20 +1292,27 @@
259
     pb_attrs = CFDictionaryCreateMutable (NULL, 0,
260
         &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
261
     gst_vtutil_dict_set_i32 (pb_attrs, kCVPixelBufferWidthKey,
262
-        self->negotiated_width);
263
+        self->video_info.width);
264
     gst_vtutil_dict_set_i32 (pb_attrs, kCVPixelBufferHeightKey,
265
-        self->negotiated_height);
266
+        self->video_info.height);
267
   }
268
 
269
   /* This was set in gst_vtenc_negotiate_specific_format_details() */
270
   g_assert_cmpint (self->specific_format_id, !=, 0);
271
 
272
+  if (self->profile_level) {
273
+    if (!gst_vtenc_compute_dts_offset (self, self->video_info.fps_d,
274
+            self->video_info.fps_n)) {
275
+      goto beach;
276
+    }
277
+  }
278
+
279
   status = VTCompressionSessionCreate (NULL,
280
-      self->negotiated_width, self->negotiated_height,
281
+      self->video_info.width, self->video_info.height,
282
       self->specific_format_id, encoder_spec, pb_attrs, NULL,
283
       gst_vtenc_enqueue_buffer, self, &session);
284
   GST_INFO_OBJECT (self, "VTCompressionSessionCreate for %d x %d => %d",
285
-      self->negotiated_width, self->negotiated_height, (int) status);
286
+      self->video_info.width, self->video_info.height, (int) status);
287
   if (status != noErr) {
288
     GST_ERROR_OBJECT (self, "VTCompressionSessionCreate() returned: %d",
289
         (int) status);
290
@@ -1284,7 +1321,7 @@
291
 
292
   if (self->profile_level) {
293
     gst_vtenc_session_configure_expected_framerate (self, session,
294
-        (gdouble) self->negotiated_fps_n / (gdouble) self->negotiated_fps_d);
295
+        (gdouble) self->video_info.fps_n / (gdouble) self->video_info.fps_d);
296
 
297
     /*
298
      * https://developer.apple.com/documentation/videotoolbox/kvtcompressionpropertykey_profilelevel
299
@@ -1586,6 +1623,18 @@
300
   CFRelease (value);
301
 }
302
 
303
+static void
304
+gst_vtenc_update_timestamps (GstVTEnc * self, GstVideoCodecFrame * frame,
305
+    CMSampleBufferRef sample_buf)
306
+{
307
+  CMTime pts = CMSampleBufferGetOutputPresentationTimeStamp (sample_buf);
308
+  frame->pts = CMTIME_TO_GST_CLOCK_TIME (pts);
309
+  CMTime dts = CMSampleBufferGetOutputDecodeTimeStamp (sample_buf);
310
+  if (CMTIME_IS_VALID (dts)) {
311
+    frame->dts = CMTIME_TO_GST_CLOCK_TIME (dts) - self->dts_offset;
312
+  }
313
+}
314
+
315
 static GstFlowReturn
316
 gst_vtenc_encode_frame (GstVTEnc * self, GstVideoCodecFrame * frame)
317
 {
318
@@ -1670,8 +1719,8 @@
319
     }
320
 
321
     cv_ret =
322
-        CVPixelBufferCreate (NULL, self->negotiated_width,
323
-        self->negotiated_height, pixel_format_type, NULL, &pbuf);
324
+        CVPixelBufferCreate (NULL, self->video_info.width,
325
+        self->video_info.height, pixel_format_type, NULL, &pbuf);
326
 
327
     if (cv_ret != kCVReturnSuccess) {
328
       GST_ERROR_OBJECT (self, "CVPixelBufferCreate failed: %i", cv_ret);
329
@@ -1765,7 +1814,7 @@
330
       }
331
 
332
       cv_ret = CVPixelBufferCreateWithPlanarBytes (NULL,
333
-          self->negotiated_width, self->negotiated_height,
334
+          self->video_info.width, self->video_info.height,
335
           pixel_format_type,
336
           frame,
337
           GST_VIDEO_FRAME_SIZE (&vframe->videoframe),
338
@@ -1886,6 +1935,8 @@
339
    * to enable the use of the video meta API on the core media buffer */
340
   frame->output_buffer = gst_core_media_buffer_new (sampleBuffer, FALSE, NULL);
341
 
342
+  gst_vtenc_update_timestamps (self, frame, sampleBuffer);
343
+
344
 beach:
345
   /* needed anyway so the frame will be released */
346
   if (frame)
347
gst-plugins-bad-1.22.3.tar.xz/sys/applemedia/vtenc.h -> gst-plugins-bad-1.22.4.tar.xz/sys/applemedia/vtenc.h Changed
34
 
1
@@ -21,6 +21,7 @@
2
 #define __GST_VTENC_H__
3
 
4
 #include <gst/gst.h>
5
+#include <gst/codecparsers/gsth264parser.h>
6
 #include <gst/video/video.h>
7
 #include <VideoToolbox/VideoToolbox.h>
8
 
9
@@ -60,6 +61,7 @@
10
 
11
   CMVideoCodecType specific_format_id;
12
   CFStringRef profile_level;
13
+  GstH264Profile h264_profile;
14
   guint bitrate;
15
   gboolean allow_frame_reordering;
16
   gboolean realtime;
17
@@ -72,8 +74,6 @@
18
   gboolean dump_properties;
19
   gboolean dump_attributes;
20
 
21
-  gint negotiated_width, negotiated_height;
22
-  gint negotiated_fps_n, negotiated_fps_d;
23
   gint caps_width, caps_height;
24
   gint caps_fps_n, caps_fps_d;
25
   gboolean have_field_order;
26
@@ -81,6 +81,7 @@
27
   GstVideoInfo video_info;
28
   VTCompressionSessionRef session;
29
   CFDictionaryRef keyframe_props;
30
+  GstClockTime dts_offset;
31
 
32
   GAsyncQueue * cur_outframes;
33
 };
34
gst-plugins-bad-1.22.3.tar.xz/sys/d3d11/gstd3d11videosink.cpp -> gst-plugins-bad-1.22.4.tar.xz/sys/d3d11/gstd3d11videosink.cpp Changed
10
 
1
@@ -1440,8 +1440,6 @@
2
     ret = GST_FLOW_ERROR;
3
   }
4
 
5
-  gst_clear_buffer (&self->prepared_buffer);
6
-
7
   return ret;
8
 }
9
 
10
gst-plugins-bad-1.22.3.tar.xz/sys/d3dvideosink/d3dvideosink.c -> gst-plugins-bad-1.22.4.tar.xz/sys/d3dvideosink/d3dvideosink.c Changed
9
 
1
@@ -634,6 +634,7 @@
2
       gst_element_post_message (GST_ELEMENT_CAST (sink),
3
           gst_navigation_message_new_event (GST_OBJECT_CAST (sink), event));
4
     }
5
+    gst_event_unref (event);
6
     gst_object_unref (pad);
7
   }
8
 }
9
gst-plugins-bad-1.22.3.tar.xz/sys/decklink/gstdecklink.h -> gst-plugins-bad-1.22.4.tar.xz/sys/decklink/gstdecklink.h Changed
77
 
1
@@ -28,33 +28,58 @@
2
 
3
 #include <stdint.h>
4
 
5
-#ifdef G_OS_UNIX
6
-#include "linux/DeckLinkAPI.h"
7
-#endif
8
-
9
 #ifdef G_OS_WIN32
10
 #include "win/DeckLinkAPI.h"
11
 
12
 #include <stdio.h>
13
-#include <comutil.h>
14
 
15
 #define bool BOOL
16
 #define COMSTR_T BSTR
17
-/* MinGW does not have comsuppw.lib, so no _com_util::ConvertBSTRToString */
18
-# ifdef __MINGW32__
19
-#  define CONVERT_COM_STRING(s) G_STMT_START { BSTR _s = (BSTR)s; s = (char*) malloc(100); wcstombs(s, _s, 100); ::SysFreeString(_s); } G_STMT_END
20
-#  define FREE_COM_STRING(s) free(s);
21
-#  define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = (BSTR) malloc(100); mbstowcs(s, _s, 100); g_free(_s); } G_STMT_END
22
-# else
23
-#  define CONVERT_COM_STRING(s) G_STMT_START { BSTR _s = (BSTR)s; s = _com_util::ConvertBSTRToString(_s); ::SysFreeString(_s); } G_STMT_END
24
-#  define FREE_COM_STRING(s) G_STMT_START { delete s; } G_STMT_END
25
-#  define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = _com_util::ConvertStringToBSTR(_s); g_free(_s); } G_STMT_END
26
-# endif /* __MINGW32__ */
27
-#else
28
+#define CONVERT_COM_STRING(s) G_STMT_START { \
29
+  BSTR _s = (BSTR)s; \
30
+  int _s_length = ::SysStringLen(_s); \
31
+  int _length = ::WideCharToMultiByte(CP_ACP, 0, (wchar_t*)_s, _s_length, NULL, 0, NULL, NULL); \
32
+  s = (char *) malloc(_length); \
33
+  ::WideCharToMultiByte(CP_ACP, 0, (wchar_t*)_s, _s_length, s, _length, NULL, NULL); \
34
+  ::SysFreeString(_s); \
35
+} G_STMT_END
36
+#define FREE_COM_STRING(s) free(s);
37
+#define CONVERT_TO_COM_STRING(s) G_STMT_START { \
38
+  char * _s = (char *)s; \
39
+  int _s_length = strlen((char*)_s); \
40
+  int _length = ::MultiByteToWideChar(CP_ACP, 0, (char*)_s, _s_length, NULL, 0); \
41
+  s = ::SysAllocStringLen(NULL, _length); \
42
+  ::MultiByteToWideChar(CP_ACP, 0, (char*)_s, _s_length, s, _length); \
43
+  g_free(_s); \
44
+} G_STMT_END
45
+#elif defined(__APPLE__)
46
+#include "osx/DeckLinkAPI.h"
47
+
48
+#define COMSTR_T CFStringRef
49
+#define CONVERT_COM_STRING(s) G_STMT_START { \
50
+  CFStringRef _s = (CFStringRef)s; \
51
+  CFIndex _length; \
52
+  CFStringGetBytes(_s, CFRangeMake(0, CFStringGetLength(_s)), kCFStringEncodingUTF8, 0, FALSE, NULL, 0, &_length); \
53
+  _length += 1; \
54
+  s = (char *) malloc(_length); \
55
+  CFStringGetCString(_s, s, _length, kCFStringEncodingUTF8); \
56
+  CFRelease(_s); \
57
+} G_STMT_END
58
+#define FREE_COM_STRING(s) free(s);
59
+#define CONVERT_TO_COM_STRING(s) G_STMT_START { \
60
+  char * _s = (char *)s; \
61
+  s = CFStringCreateWithCString(kCFAllocatorDefault, _s, kCFStringEncodingUTF8); \
62
+  g_free(_s); \
63
+} G_STMT_END
64
+#define WINAPI
65
+#else /* Linux */
66
+#include "linux/DeckLinkAPI.h"
67
+
68
 #define COMSTR_T const char*
69
 #define CONVERT_COM_STRING(s)
70
 #define CONVERT_TO_COM_STRING(s)
71
-#define FREE_COM_STRING(s)
72
+/* While this is a const char*, the string still has to be freed */
73
+#define FREE_COM_STRING(s) free(s);
74
 #define WINAPI
75
 #endif /* G_OS_WIN32 */
76
 
77
gst-plugins-bad-1.22.3.tar.xz/sys/kms/gstkmssink.c -> gst-plugins-bad-1.22.4.tar.xz/sys/kms/gstkmssink.c Changed
12
 
1
@@ -481,8 +481,8 @@
2
 kms_open (gchar ** driver)
3
 {
4
   static const char *drivers = { "i915", "radeon", "nouveau", "vmwgfx",
5
-    "exynos", "amdgpu", "imx-drm", "rockchip", "atmel-hlcdc", "msm",
6
-    "xlnx", "vc4", "meson", "sun4i-drm", "mxsfb-drm", "tegra",
7
+    "exynos", "amdgpu", "imx-drm", "imx-lcdif", "rockchip", "atmel-hlcdc",
8
+    "msm", "xlnx", "vc4", "meson", "stm", "sun4i-drm", "mxsfb-drm", "tegra",
9
     "xilinx_drm",               /* DEPRECATED. Replaced by xlnx */
10
   };
11
   int i, fd = -1;
12
gst-plugins-bad-1.22.3.tar.xz/sys/va/gstvah264enc.c -> gst-plugins-bad-1.22.4.tar.xz/sys/va/gstvah264enc.c Changed
34
 
1
@@ -3412,9 +3412,30 @@
2
     case PROP_CC:
3
       g_value_set_boolean (value, self->prop.cc);
4
       break;
5
-    case PROP_MBBRC:
6
-      g_value_set_enum (value, self->prop.mbbrc);
7
+    case PROP_MBBRC:{
8
+      GstVaFeature mbbrc = GST_VA_FEATURE_AUTO;
9
+      /* Macroblock-level rate control.
10
+       * 0: use default,
11
+       * 1: always enable,
12
+       * 2: always disable,
13
+       * other: reserved. */
14
+      switch (self->prop.mbbrc) {
15
+        case 2:
16
+          mbbrc = GST_VA_FEATURE_DISABLED;
17
+          break;
18
+        case 1:
19
+          mbbrc = GST_VA_FEATURE_ENABLED;
20
+          break;
21
+        case 0:
22
+          mbbrc = GST_VA_FEATURE_AUTO;
23
+          break;
24
+        default:
25
+          g_assert_not_reached ();
26
+      }
27
+
28
+      g_value_set_enum (value, mbbrc);
29
       break;
30
+    }
31
     case PROP_BITRATE:
32
       g_value_set_uint (value, self->prop.bitrate);
33
       break;
34
gst-plugins-bad-1.22.3.tar.xz/sys/va/gstvah265enc.c -> gst-plugins-bad-1.22.4.tar.xz/sys/va/gstvah265enc.c Changed
34
 
1
@@ -4874,9 +4874,30 @@
2
     case PROP_AUD:
3
       g_value_set_boolean (value, self->prop.aud);
4
       break;
5
-    case PROP_MBBRC:
6
-      g_value_set_enum (value, self->prop.mbbrc);
7
+    case PROP_MBBRC:{
8
+      GstVaFeature mbbrc = GST_VA_FEATURE_AUTO;
9
+      /* Macroblock-level rate control.
10
+       * 0: use default,
11
+       * 1: always enable,
12
+       * 2: always disable,
13
+       * other: reserved. */
14
+      switch (self->prop.mbbrc) {
15
+        case 2:
16
+          mbbrc = GST_VA_FEATURE_DISABLED;
17
+          break;
18
+        case 1:
19
+          mbbrc = GST_VA_FEATURE_ENABLED;
20
+          break;
21
+        case 0:
22
+          mbbrc = GST_VA_FEATURE_AUTO;
23
+          break;
24
+        default:
25
+          g_assert_not_reached ();
26
+      }
27
+
28
+      g_value_set_enum (value, mbbrc);
29
       break;
30
+    }
31
     case PROP_BITRATE:
32
       g_value_set_uint (value, self->prop.bitrate);
33
       break;
34
gst-plugins-bad-1.22.3.tar.xz/tests/validate/meson.build -> gst-plugins-bad-1.22.4.tar.xz/tests/validate/meson.build Changed
12
 
1
@@ -7,6 +7,10 @@
2
     {'path': 'opencv/cvtracker'},
3
     {'path': 'testsrcbin/caps_spec'},
4
     {'path': 'wpe/load_bytes_first', 'skip': not building_wpe},
5
+    {'path': 'vtenc/vtenc_h264', 'skip': not applemedia_found_deps},
6
+    {'path': 'vtenc/vtenc_h264_b_frames', 'skip': not applemedia_found_deps},
7
+    {'path': 'vtenc/vtenc_h265', 'skip': not applemedia_found_deps},
8
+    {'path': 'vtenc/vtenc_h265_b_frames', 'skip': not applemedia_found_deps},
9
 
10
 
11
 env = environment()
12
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc Added
2
 
1
+(directory)
2
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264 Added
2
 
1
+(directory)
2
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264.validatetest Added
9
 
1
@@ -0,0 +1,7 @@
2
+meta,
3
+    args = {
4
+        "videotestsrc num-buffers=5 ! video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc allow-frame-reordering=false ! fakesink",
5
+    },
6
+    configs = {
7
+       "$(validateflow), pad=enc:src, record-buffers=true",
8
+    }
9
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264/flow-expectations Added
2
 
1
+(directory)
2
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264/flow-expectations/log-enc-src-expected Added
11
 
1
@@ -0,0 +1,9 @@
2
+event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;
3
+event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, codec_data=(buffer)014d000dffe1000d274d000dab40a0fd350601060201000428ee3c80, colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, interlace-mode=(string)progressive, level=(string)1.3, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, profile=(string)main, stream-format=(string)avc, width=(int)320;
4
+event segment: format=TIME, start=1000:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=1000:00:00.000000000
5
+buffer: dts=1000:00:00.000000000, pts=1000:00:00.000000000, dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta
6
+buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
7
+buffer: dts=1000:00:00.080000000, pts=1000:00:00.080000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
8
+buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
9
+buffer: dts=1000:00:00.160000000, pts=1000:00:00.160000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
10
+event eos: (no structure)
11
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264_b_frames Added
2
 
1
+(directory)
2
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264_b_frames.validatetest Added
9
 
1
@@ -0,0 +1,7 @@
2
+meta,
3
+    args = {
4
+        "videotestsrc num-buffers=5 ! video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc allow-frame-reordering=true ! fakesink",
5
+    },
6
+    configs = {
7
+       "$(validateflow), pad=enc:src, record-buffers=true",
8
+    }
9
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations Added
2
 
1
+(directory)
2
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations/log-enc-src-expected Added
11
 
1
@@ -0,0 +1,9 @@
2
+event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;
3
+event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, codec_data=(buffer)014d000dffe1000d274d000dab60a0fd350601060201000428ee3c80, colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, interlace-mode=(string)progressive, level=(string)1.3, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, profile=(string)main, stream-format=(string)avc, width=(int)320;
4
+event segment: format=TIME, start=1000:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=1000:00:00.000000000
5
+buffer: dts=999:59:59.960000000, pts=1000:00:00.000000000, dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta
6
+buffer: dts=1000:00:00.000000000, pts=1000:00:00.080000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
7
+buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
8
+buffer: dts=1000:00:00.080000000, pts=1000:00:00.160000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
9
+buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
10
+event eos: (no structure)
11
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265 Added
2
 
1
+(directory)
2
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265.validatetest Added
9
 
1
@@ -0,0 +1,7 @@
2
+meta,
3
+    args = {
4
+        "videotestsrc num-buffers=5 ! video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc allow-frame-reordering=false ! fakesink",
5
+    },
6
+    configs = {
7
+       "$(validateflow), pad=enc:src, record-buffers=true",
8
+    }
9
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265/flow-expectations Added
2
 
1
+(directory)
2
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265/flow-expectations/log-enc-src-expected Added
11
 
1
@@ -0,0 +1,9 @@
2
+event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;
3
+event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, codec_data=(buffer)014d000dffe1000d274d000dab40a0fd350601060201000428ee3c80, colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, interlace-mode=(string)progressive, level=(string)1.3, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, profile=(string)main, stream-format=(string)avc, width=(int)320;
4
+event segment: format=TIME, start=1000:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=1000:00:00.000000000
5
+buffer: dts=1000:00:00.000000000, pts=1000:00:00.000000000, dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta
6
+buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
7
+buffer: dts=1000:00:00.080000000, pts=1000:00:00.080000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
8
+buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
9
+buffer: dts=1000:00:00.160000000, pts=1000:00:00.160000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
10
+event eos: (no structure)
11
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265_b_frames Added
2
 
1
+(directory)
2
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265_b_frames.validatetest Added
9
 
1
@@ -0,0 +1,7 @@
2
+meta,
3
+    args = {
4
+        "videotestsrc num-buffers=5 ! video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc allow-frame-reordering=true ! fakesink",
5
+    },
6
+    configs = {
7
+       "$(validateflow), pad=enc:src, record-buffers=true",
8
+    }
9
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations Added
2
 
1
+(directory)
2
gst-plugins-bad-1.22.4.tar.xz/tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations/log-enc-src-expected Added
11
 
1
@@ -0,0 +1,9 @@
2
+event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;
3
+event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, codec_data=(buffer)014d000dffe1000d274d000dab60a0fd350601060201000428ee3c80, colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, interlace-mode=(string)progressive, level=(string)1.3, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, profile=(string)main, stream-format=(string)avc, width=(int)320;
4
+event segment: format=TIME, start=1000:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=1000:00:00.000000000
5
+buffer: dts=999:59:59.960000000, pts=1000:00:00.000000000, dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta
6
+buffer: dts=1000:00:00.000000000, pts=1000:00:00.080000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
7
+buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
8
+buffer: dts=1000:00:00.080000000, pts=1000:00:00.160000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
9
+buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
10
+event eos: (no structure)
11
Refresh

No build results available

Refresh

No rpmlint results available

Request History
Bjørn Lie's avatar

zaitor created request almost 2 years ago

Verbump


Bjørn Lie's avatar

zaitor accepted request almost 2 years ago

Xin