Overview
Submit package home:zait...sentials / gstreamer...d-codecs to package Essentials / gstreamer-plugins-bad-codecs
gstreamer-plugins-bad-codecs.changes
Changed
x
1
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
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
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
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
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
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
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
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
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
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
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
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
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
95
else
96
filter->rtp_has_segment = TRUE;
97
98
+ return TRUE;
99
+
100
+err:
101
+ return FALSE;
102
}
103
104
/*
105
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
2
enum
3
{
4
CLOSED,
5
+ MAP,
6
LAST_SIGNAL
7
};
8
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Login required, please
login
or
signup
in order to comment