We truncated the diff of some files because they were too big.
If you want to see the full diff for every file, click here.
Changes of Revision 19
gstreamer-plugins-bad-codecs.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Fri Sep 22 17:25:19 UTC 2023 - Bjørn Lie <zaitor@opensuse.org>
4
+
5
+- Update to version 1.22.6
6
+
7
+-------------------------------------------------------------------
8
Sat Aug 12 09:49:32 UTC 2023 - Bjørn Lie <zaitor@opensuse.org>
9
10
- Update to version 1.22.5
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.5
6
+Version: 1.22.6
7
Release: 0
8
Summary: Codecs/plugins for gstreamer-plugins-bad
9
License: LGPL-2.1-or-later
10
gst-plugins-bad-1.22.5.tar.xz/ChangeLog -> gst-plugins-bad-1.22.6.tar.xz/ChangeLog
Changed
201
1
2
+=== release 1.22.6 ===
3
+
4
+2023-09-20 18:10:57 +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.6
11
+
12
+2023-08-10 15:47:03 +0300 Sebastian Dröge <sebastian@centricular.com>
13
+
14
+ * gst/mxf/mxfd10.c:
15
+ mxfdemux: Check number of channels for AES3 audio
16
+ Only up to 8 channels are allowed and using a higher number would cause
17
+ integer overflows when copying the data, and lead to out of bound
18
+ writes.
19
+ Also check that each buffer is at least 4 bytes long to avoid another
20
+ overflow.
21
+ Fixes ZDI-CAN-21661, CVE-2023-40475
22
+ Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2897
23
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5365>
24
+
25
+2023-08-10 15:45:01 +0300 Sebastian Dröge <sebastian@centricular.com>
26
+
27
+ * gst/mxf/mxfup.c:
28
+ mxfdemux: Fix integer overflow causing out of bounds writes when handling invalid uncompressed video
29
+ Check ahead of time when parsing the track information whether
30
+ width, height and bpp are valid and usable without overflows.
31
+ Fixes ZDI-CAN-21660, CVE-2023-40474
32
+ Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2896
33
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5365>
34
+
35
+2023-08-09 12:49:19 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
36
+
37
+ * gst-libs/gst/codecparsers/gsth265parser.c:
38
+ h265parser: Fix possible overflow using max_sub_layers_minus1
39
+ This fixes a possible overflow that can be triggered by an invalid value of
40
+ max_sub_layers_minus1 being set in the bitstream. The bitstream uses 3 bits,
41
+ but the allowed range is 0 to 6 only.
42
+ Fixes ZDI-CAN-21768, CVE-2023-40476
43
+ Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2895
44
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5366>
45
+
46
+2023-09-11 18:12:28 +0200 Hugues Fruchet <hugues.fruchet@foss.st.com>
47
+
48
+ * gst-libs/gst/wayland/gstwlwindow.c:
49
+ waylandsink: Fix cropping for video with non-square aspect ratio
50
+ Padding of unaligned content is still visible at right with some aspect-ratio.
51
+ Fix this by giving the original content resolution to wp_viewport_set_source()
52
+ instead of pixel aspect ratio scaled one.
53
+ Fixes !5259
54
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5360>
55
+
56
+2023-09-14 01:18:59 +0900 Seungha Yang <seungha@centricular.com>
57
+
58
+ * gst-libs/gst/codecs/gsth264decoder.c:
59
+ * gst-libs/gst/codecs/gsth264picture.h:
60
+ h264decoder: Update latency dynamically
61
+ The actual number of reorder frames is unknown
62
+ unless frame reordering is disabled
63
+ (e.g., POC type 2 or constrained-* profiles).
64
+ Also derived maximum DPB size or max_num_reorder_frames in VUI
65
+ is not the upper bound of output delay.
66
+ Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2702
67
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5341>
68
+
69
+2023-08-16 13:43:56 +0000 L. E. Segovia <amy@amyspark.me>
70
+
71
+ * sys/applemedia/avsamplevideosink.m:
72
+ applemedia: Also fix inconsistent pixel format definition for NV12
73
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5203>
74
+
75
+2023-08-15 21:45:56 +0000 L. E. Segovia <amy@amyspark.me>
76
+
77
+ * sys/applemedia/coremediabuffer.c:
78
+ * sys/applemedia/corevideobuffer.c:
79
+ applemedia: Fix pixel format for I420
80
+ In Intel Macs, using full range 8-bit 4:2:0 YCbCr results in a failure on
81
+ initialization. I've validated this to be the correct pixel format with FFmpeg:
82
+ https://github.com/FFmpeg/FFmpeg/blob/8653dcaf7d665b15b40ea9a560c8171b0914a882/libavutil/hwcontext_videotoolbox.c#L45
83
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5203>
84
+
85
+2023-08-24 12:12:09 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
86
+
87
+ * sys/va/gstvadecoder.c:
88
+ * sys/va/gstvadisplay_priv.c:
89
+ va: Fix in error logs functions mismatches
90
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5340>
91
+
92
+2023-09-15 11:06:52 +1000 Matthew Waters <matthew@centricular.com>
93
+
94
+ * sys/androidmedia/gstamcvideoenc.c:
95
+ androidmedia/enc: handle codec-data before popping GstVideoCodecFrames
96
+ Issue is that when amc was producing a codec-data buffer, a
97
+ GstVideoCodecFrame was being popped off the internal queue. This meant
98
+ that the codec-data was being associated with the first input frame and
99
+ the second (first encoded buffer) output buffer with the second input
100
+ frame. At the end (assuming one input produces one output which seems
101
+ to hold in my testing and how the encoder is currently implemented)
102
+ there would be an input frame missing and would be pushed without any
103
+ timing information. This would lead to e.g. muxers rejecting the buffer
104
+ without PTS and failing to mux.
105
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5335>
106
+
107
+2023-09-15 11:06:07 +1000 Matthew Waters <matthew@centricular.com>
108
+
109
+ * sys/androidmedia/gstamc-constants.h:
110
+ * sys/androidmedia/gstamcvideoenc.c:
111
+ androidmedia/enc: add fixme log about partial frames
112
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5335>
113
+
114
+2023-09-16 03:13:33 +0900 Seungha Yang <seungha@centricular.com>
115
+
116
+ * gst-libs/gst/codecparsers/gstav1parser.c:
117
+ av1parser: Fix segmentation params update
118
+ Even if the segmentation feature value is not updated,
119
+ the parsed "segmentation_update_map" and "segmentation_temporal_update"
120
+ values should not be cleared as it's referenced during lower
121
+ level bitstream parsing. Also, don't use assert() in parser
122
+ unless it's clearly impossible condition.
123
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5336>
124
+
125
+2023-08-24 17:40:42 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>
126
+
127
+ * gst/rtmp2/rtmp/rtmpclient.c:
128
+ rtmp2: Allow NULL flash version, omitting the field
129
+ rtmpsink omits it by default. Allow us to do the same.
130
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5248>
131
+
132
+2023-09-05 14:15:04 +0200 Thomas Schneider <thomas.schneider@voliro.ch>
133
+
134
+ * sys/androidmedia/gstamc.c:
135
+ androidmedia: fix hevc codec profile registration
136
+ Fix the codec registration logic such that all supported
137
+ profiles are available instead of just the first in the
138
+ list.
139
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5313>
140
+
141
+2023-09-03 13:21:30 +0000 Akihiro Sagawa <sagawa.aki@gmail.com>
142
+
143
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.c:
144
+ codecparsers: Fix MPEG-1 aspect ratio table
145
+ The values defined in ISO/IEC 11172-2 are different from those used so far.
146
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5300>
147
+
148
+2023-08-29 14:55:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
149
+
150
+ * gst-libs/gst/wayland/gstwlwindow.c:
151
+ waylandsink: Crop surfaces to their display width height
152
+ Setting the surface source rectangle has been omitted so far. As a side effect
153
+ surface created with padded width/height are being scaled down. Fix this using
154
+ the viewporter source rectangle configuration. This can later be enhanced
155
+ to support crop meta.
156
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5298>
157
+
158
+2023-08-28 20:58:22 +0900 Seungha Yang <seungha@centricular.com>
159
+
160
+ * sys/d3d11/gstd3d11convert.cpp:
161
+ d3d11convert: Passthrough allocation query on same caps
162
+ Since d3d11convert and its variant elements does not enable basetransform's
163
+ passthrough, passthrough allocation query needs to be handled
164
+ manually in order to respect downstream element's min/max buffer
165
+ requirement.
166
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5297>
167
+
168
+2023-08-23 19:27:43 +0900 Seungha Yang <seungha@centricular.com>
169
+
170
+ * sys/nvcodec/gstnvencoder.cpp:
171
+ nvencoder: Fix negotiation error when interlace-mode is unspecified
172
+ Use GST_PAD_SET_ACCEPT_INTERSECT() to accept caps without interlace-mode
173
+ field
174
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5240>
175
+
176
+2023-08-23 18:07:31 +0900 Seungha Yang <seungha@centricular.com>
177
+
178
+ * sys/win32ipc/protocol/win32ipcpipeserver.cpp:
179
+ win32ipc: Fix pipe handle leak
180
+ Named pipe handle must be closed if it's no longer needed
181
+ Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2923
182
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5231>
183
+
184
+2023-08-22 02:57:24 +0900 Seungha Yang <seungha@centricular.com>
185
+
186
+ * gst/videoparsers/gsth265parse.c:
187
+ * tests/check/elements/h265parse.c:
188
+ h265parse: Allow partially broken hvcC data
189
+ Ignores parsing error on the last nalu of the array if the nalu type
190
+ is not VPS/SPS/PPS
191
+ Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2905
192
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5220>
193
+
194
+2023-08-18 18:21:18 +1000 Jan Schmidt <jan@centricular.com>
195
+
196
+ * ext/mdns/gstmicrodnsdevice.c:
197
+ mdns: Fix a crash on context error
198
+ Make sure not to free the microdns provider context until the
199
+ device provider asks it to stop. Fixes a crash if there is
200
+ an error (such as MDNS port being busy) that makes the
201
gst-plugins-bad-1.22.5.tar.xz/NEWS -> gst-plugins-bad-1.22.6.tar.xz/NEWS
Changed
185
1
2
- List of Merge Requests applied in 1.22.5
3
- List of Issues fixed in 1.22.5
4
5
+1.22.6
6
+
7
+The sixth 1.22 bug-fix release (1.22.6) was released on 20 September
8
+2023.
9
+
10
+This release only contains bugfixes and security fixes and it should be
11
+safe to update from 1.22.x.
12
+
13
+Highlighted bugfixes in 1.22.6
14
+
15
+- Security fixes for the MXF demuxer and H.265 video parser
16
+- Fix latency regression in H.264 hardware decoder base class
17
+- androidmedia: fix HEVC codec profile registration and fix coded_data
18
+ handling
19
+- decodebin3: fix switching from a raw stream to an encoded stream
20
+- gst-inspect: prettier and more correct signal and action signals
21
+ printing
22
+- rtmp2: Allow NULL flash version, omitting the field, for better RTMP
23
+ server compatibility
24
+- rtspsrc: better compatibility with buggy RTSP servers that don’t set
25
+ a clock-rate
26
+- rtpjitterbuffer: fix integer overflow that led to more packets being
27
+ declared lost than have been lost
28
+- v4l2: fix video encoding regression on RPi and fix support for left
29
+ and top padding
30
+- waylandsink: Crop surfaces to their display width height
31
+- cerbero: recognise Manjaro; add Rust support for MSVC ARM64; cmake
32
+ detection fixes
33
+- various bug fixes, build fixes, memory leak fixes, and other
34
+ stability and reliability improvements
35
+
36
+gstreamer
37
+
38
+- gst-inspect: prettier and more correct signal printing, and print
39
+ action signals in g_signal_emit_by_name() format
40
+- gst-launch: Disable fault signal handlers on macOS
41
+
42
+gst-plugins-base
43
+
44
+- audio: Make sure to stop ringbuffer on error
45
+- decodebin3: avoid identity, sinkpad, parsebin leakage when reset
46
+ input
47
+- decodebin3: Ensure the slot is unlinked before linking to decoder
48
+- sdp: fix wrong debug log error message for missing clock-rate in
49
+ caps
50
+- sdp: Parse zero clock-rate as default
51
+
52
+gst-plugins-good
53
+
54
+- adaptivedemux2: fix memory leak
55
+- pulsedeviceprovider: fix incorrect usage of GST_ELEMENT_ERROR
56
+- qt: Unbreak build with qt-egl enabled but viv_fb missing
57
+- qt: Fix searching of qt5/qt6 tools with qmake in Meson
58
+- qtdemux: Fix premature EOS when some files are played in push mode
59
+- qtdemux: attach cbcs crypt info at the right moment
60
+- rtpjitterbuffer: Avoid integer overflow in max saveable packets
61
+ calculation with negative offset
62
+- videoflip: fix concurrent access when modifying the tag list
63
+- v4l2: allocator: Don’t close foreign dmabuf
64
+- v4l2: bufferpool: Fix large encoded stream regression
65
+- v4l2: bufferpool: Problems when checking for truncated buffer
66
+- v4l2: Fix support for left and top padding
67
+- v4l2object: clear format lists if source change event is received
68
+
69
+gst-plugins-bad
70
+
71
+- androidmedia/enc: handle codec-data before popping
72
+ GstVideoCodecFrames
73
+- androidmedia: fix hevc codec profile registration
74
+- androidmedia: Small fixes
75
+- androidmedia: Add more null checks (of env) to JNI utilities
76
+- applemedia: Fix pixel format for I420 and NV12
77
+- audiolatency: Forward latency query and event upstream
78
+- av1parser: Fix segmentation params update
79
+- codecparsers: Fix MPEG-1 aspect ratio table
80
+- d3d11convert: Passthrough allocation query on same caps
81
+- h264decoder: Update latency dynamically
82
+- h265parser: Allow partially broken hvcC data
83
+- h265parser: Fix possible overflow using max_sub_layers_minus1
84
+- hlssink2: Always use forward slash separator
85
+- mdns: Fix a crash on context error
86
+- mxfdemux: Fix integer overflow causing out of bounds writes when
87
+ handling invalid uncompressed video and check channels for AES3
88
+- nvencoder: Fix negotiation error when interlace-mode is unspecified
89
+- rtmp2: Allow NULL flash version, omitting the field
90
+- rtmp2sink: fix crash if message conversion failed
91
+- transcodebin: Fixes for upstream selectable support
92
+- va: Fix in error logs functions mismatches
93
+- waylandsink: Crop surfaces to their display width height
94
+- waylandsink: Fix cropping for video with non-square aspect ratio
95
+- webrtc: Fix docs for create-data-channel action signal
96
+- win32ipc: Fix pipe handle leak
97
+
98
+gst-plugins-ugly
99
+
100
+- No changes
101
+
102
+gst-plugins-rs
103
+
104
+- fallbackswitch: locking/deadlock fixes
105
+- onvifmetadataparse: Skip metadata frames with unrepresentable UTC
106
+ time
107
+- transcriberbin: Configure audioresample in front of transcriber
108
+- webrtcsink: Propagate GstContext messages
109
+- webrtcsink: Add support for d3d11 memory and qsvh264enc
110
+- webrtcsink: fix TWCC extension adding
111
+- webrtcsink: don’t forget to setup encoders for discoveries
112
+- webrtcsink: NVIDIA V4L2 encoders always require NVMM memory
113
+- meson: Fix handling of optional deps, and don’t require Python 3.8
114
+
115
+gst-libav
116
+
117
+- No changes
118
+
119
+gst-rtsp-server
120
+
121
+- No changes
122
+
123
+gstreamer-vaapi
124
+
125
+- No changes
126
+
127
+gstreamer-sharp
128
+
129
+- No changes
130
+
131
+gst-omx
132
+
133
+- No changes
134
+
135
+gst-python
136
+
137
+- No changes
138
+
139
+gst-editing-services
140
+
141
+- No changes
142
+
143
+gst-validate + gst-integration-testsuites
144
+
145
+- gst-validate: Disable fault signal handlers on macOS
146
+
147
+gst-examples
148
+
149
+- No changes
150
+
151
+Development build environment
152
+
153
+- macos-bison: Update to 3.8.2 and add an ARM64 build
154
+- wrap: update libpsl to 0.21.2
155
+
156
+Cerbero build tool and packaging changes in 1.22.6
157
+
158
+- Add Rust support for MSVC ARM64
159
+- Recognise PERL5LIB as a joinable Unix variable
160
+- Recognise Manjaro as an Arch derivative
161
+- Fix picking up cmake from build-tools
162
+
163
+Contributors to 1.22.6
164
+
165
+Akihiro Sagawa, Alicia Boya García, Guillaume Desmottes, Haihua Hu,
166
+Hugues Fruchet, Ivan Molodetskikh, Jan Alexander Steffens (heftig), Jan
167
+Schmidt, L. E. Segovia, Mathieu Duponchelle, Matthew Waters, Ming Qian,
168
+Nicolas Dufresne, Nirbheek Chauhan, Olivier Blin, Olivier Crête,
169
+Philippe Normand, Piotr Brzeziński, Robert Ayrapetyan, Ryan Pavlik,
170
+Sebastian Dröge, Seungha Yang, Stéphane Cerveau, Stephan Seitz, Thomas
171
+Schneider, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, Wang Chuan,
172
+Xabier Rodriguez Calvar,
173
+
174
+… and many others who have contributed bug reports, translations, sent
175
+suggestions or helped testing. Thank you all!
176
+
177
+List of merge requests and issues fixed in 1.22.6
178
+
179
+- List of Merge Requests applied in 1.22.6
180
+- List of Issues fixed in 1.22.6
181
+
182
Schedule for 1.24
183
184
Our next major feature release will be 1.24, and 1.23 will be the
185
gst-plugins-bad-1.22.5.tar.xz/RELEASE -> gst-plugins-bad-1.22.6.tar.xz/RELEASE
Changed
7
1
2
-This is GStreamer gst-plugins-bad 1.22.5.
3
+This is GStreamer gst-plugins-bad 1.22.6.
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.5.tar.xz/ext/hls/gsthlssink2.c -> gst-plugins-bad-1.22.6.tar.xz/ext/hls/gsthlssink2.c
Changed
12
1
2
entry_location = g_path_get_basename (sink->current_location);
3
} else {
4
gchar *name = g_path_get_basename (sink->current_location);
5
- entry_location = g_build_filename (sink->playlist_root, name, NULL);
6
+ /* g_build_filename() will insert back slash on Windows */
7
+ entry_location = g_build_path ("/",
8
+ sink->playlist_root, name, NULL);
9
g_free (name);
10
}
11
12
gst-plugins-bad-1.22.5.tar.xz/ext/mdns/gstmicrodnsdevice.c -> gst-plugins-bad-1.22.6.tar.xz/ext/mdns/gstmicrodnsdevice.c
Changed
44
1
2
struct _ListenerContext
3
{
4
GMutex lock;
5
+ GCond stop_cond;
6
GstDeviceProvider *provider;
7
8
/* The following fields are protected by @lock */
9
10
done:
11
GST_INFO_OBJECT (ctx->provider, "Done listening");
12
13
+ /* Wait until we're told to stop, or gst_mdns_device_provider_stop()
14
+ can access a freed context */
15
+ g_mutex_lock (&ctx->lock);
16
+ while (!ctx->stop) {
17
+ g_cond_wait (&ctx->stop_cond, &ctx->lock);
18
+ }
19
+ g_mutex_unlock (&ctx->lock);
20
+
21
g_sequence_free (ctx->last_seen_devices);
22
g_hash_table_unref (ctx->devices);
23
g_mutex_clear (&ctx->lock);
24
+ g_cond_clear (&ctx->stop_cond);
25
g_free (ctx);
26
27
return NULL;
28
29
ListenerContext *ctx = g_new0 (ListenerContext, 1);
30
31
g_mutex_init (&ctx->lock);
32
+ g_cond_init (&ctx->stop_cond);
33
ctx->provider = provider;
34
ctx->devices =
35
g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
36
37
38
g_mutex_lock (&self->current_ctx->lock);
39
self->current_ctx->stop = true;
40
+ g_cond_broadcast (&self->current_ctx->stop_cond);
41
g_mutex_unlock (&self->current_ctx->lock);
42
43
self->current_ctx = NULL;
44
gst-plugins-bad-1.22.5.tar.xz/ext/webrtc/gstwebrtcbin.c -> gst-plugins-bad-1.22.6.tar.xz/ext/webrtc/gstwebrtcbin.c
Changed
10
1
2
G_CALLBACK (gst_webrtc_bin_add_turn_server), NULL, NULL, NULL,
3
G_TYPE_BOOLEAN, 1, G_TYPE_STRING);
4
5
- /*
6
+ /**
7
* GstWebRTCBin::create-data-channel:
8
* @object: the #GstWebRTCBin
9
* @label: the label for the data channel
10
gst-plugins-bad-1.22.5.tar.xz/gst-libs/gst/codecparsers/gstav1parser.c -> gst-plugins-bad-1.22.6.tar.xz/gst-libs/gst/codecparsers/gstav1parser.c
Changed
51
1
2
}
3
}
4
} else {
5
+ gint8 ref_idx;
6
+ GstAV1SegmenationParams *ref_seg_params;
7
+
8
/* Copy it from prime_ref */
9
- g_assert (frame_header->primary_ref_frame != GST_AV1_PRIMARY_REF_NONE);
10
- g_assert (parser->state.ref_info.
11
- entryframe_header->ref_frame_idxframe_header->primary_ref_frame.
12
- ref_valid);
13
- memcpy (seg_params,
14
- &parser->state.ref_info.
15
- entryframe_header->ref_frame_idxframe_header->
16
- primary_ref_frame.ref_segmentation_params,
17
- sizeof (GstAV1SegmenationParams));
18
+ if (frame_header->primary_ref_frame >= GST_AV1_PRIMARY_REF_NONE) {
19
+ GST_WARNING ("Invalid primary_ref_frame %d",
20
+ frame_header->primary_ref_frame);
21
+ return GST_AV1_PARSER_BITSTREAM_ERROR;
22
+ }
23
24
- seg_params->segmentation_update_map = 0;
25
- seg_params->segmentation_temporal_update = 0;
26
- seg_params->segmentation_update_data = 0;
27
+ ref_idx = frame_header->ref_frame_idxframe_header->primary_ref_frame;
28
+ if (ref_idx >= GST_AV1_NUM_REF_FRAMES || ref_idx < 0) {
29
+ GST_WARNING ("Invalid ref_frame_idx %d", ref_idx);
30
+ return GST_AV1_PARSER_BITSTREAM_ERROR;
31
+ }
32
+
33
+ if (!parser->state.ref_info.entryref_idx.ref_valid) {
34
+ GST_WARNING ("Reference frame at index %d is unavailable", ref_idx);
35
+ return GST_AV1_PARSER_BITSTREAM_ERROR;
36
+ }
37
+
38
+ ref_seg_params =
39
+ &parser->state.ref_info.entryref_idx.ref_segmentation_params;
40
+
41
+ for (i = 0; i < GST_AV1_MAX_SEGMENTS; i++) {
42
+ for (j = 0; j < GST_AV1_SEG_LVL_MAX; j++) {
43
+ seg_params->feature_enabledij =
44
+ ref_seg_params->feature_enabledij;
45
+ seg_params->feature_dataij = ref_seg_params->feature_dataij;
46
+ }
47
+ }
48
}
49
} else {
50
seg_params->segmentation_update_map = 0;
51
gst-plugins-bad-1.22.5.tar.xz/gst-libs/gst/codecparsers/gsth265parser.c -> gst-plugins-bad-1.22.6.tar.xz/gst-libs/gst/codecparsers/gsth265parser.c
Changed
17
1
2
3
READ_UINT8 (&nr, vps->max_layers_minus1, 6);
4
READ_UINT8 (&nr, vps->max_sub_layers_minus1, 3);
5
+ CHECK_ALLOWED (vps->max_sub_layers_minus1, 0, 6);
6
READ_UINT8 (&nr, vps->temporal_id_nesting_flag, 1);
7
8
/* skip reserved_0xffff_16bits */
9
10
READ_UINT8 (&nr, sps->vps_id, 4);
11
12
READ_UINT8 (&nr, sps->max_sub_layers_minus1, 3);
13
+ CHECK_ALLOWED (sps->max_sub_layers_minus1, 0, 6);
14
READ_UINT8 (&nr, sps->temporal_id_nesting_flag, 1);
15
16
if (!gst_h265_parse_profile_tier_level (&sps->profile_tier_level, &nr,
17
gst-plugins-bad-1.22.5.tar.xz/gst-libs/gst/codecparsers/gstmpegvideoparser.c -> gst-plugins-bad-1.22.6.tar.xz/gst-libs/gst/codecparsers/gstmpegvideoparser.c
Changed
18
1
2
{64, 45}, /* 3, 0.7031 16:9 625 line */
3
{10000, 7615}, /* 4, 0.7615 */
4
{10000, 8055}, /* 5, 0.8055 */
5
- {32, 27}, /* 6, 0.8437 */
6
+ {32, 27}, /* 6, 0.8437 16:9 525 line */
7
{10000, 8935}, /* 7, 0.8935 */
8
- {10000, 9375}, /* 8, 0.9375 */
9
+ {10000, 9157}, /* 8, 0.9157 CCIR601, 625 line */
10
{10000, 9815}, /* 9, 0.9815 */
11
{10000, 10255}, /* 10, 1.0255 */
12
{10000, 10695}, /* 11, 1.0695 */
13
- {8, 9}, /* 12, 1.125 */
14
+ {10000, 10950}, /* 12, 1.0950 CCIR601, 525 line */
15
{10000, 11575}, /* 13, 1.1575 */
16
{10000, 12015}, /* 14, 1.2015 */
17
{0, 0}, /* 15, invalid */
18
gst-plugins-bad-1.22.5.tar.xz/gst-libs/gst/codecs/gsth264decoder.c -> gst-plugins-bad-1.22.6.tar.xz/gst-libs/gst/codecs/gsth264decoder.c
Changed
112
1
2
GstQueueArray *output_queue;
3
4
gboolean input_state_changed;
5
+
6
+ /* Latency report params */
7
+ guint32 max_reorder_count;
8
+ guint32 last_reorder_frame_number;
9
+ gint fps_n;
10
+ gint fps_d;
11
};
12
13
typedef struct
14
15
}
16
17
static void
18
+gst_h264_decoder_reset_latency_infos (GstH264Decoder * self)
19
+{
20
+ GstH264DecoderPrivate *priv = self->priv;
21
+
22
+ priv->max_reorder_count = 0;
23
+ priv->last_reorder_frame_number = 0;
24
+ priv->fps_n = 25;
25
+ priv->fps_d = 1;
26
+}
27
+
28
+static void
29
gst_h264_decoder_reset (GstH264Decoder * self)
30
{
31
GstH264DecoderPrivate *priv = self->priv;
32
33
priv->width = 0;
34
priv->height = 0;
35
priv->nal_length_size = 4;
36
+
37
+ gst_h264_decoder_reset_latency_infos (self);
38
}
39
40
static gboolean
41
42
gst_h264_picture_unref (picture);
43
return ret;
44
}
45
+
46
+ priv->last_reorder_frame_number++;
47
+ picture->reorder_frame_number = priv->last_reorder_frame_number;
48
}
49
50
/* This allows accessing the frame from the picture. */
51
52
53
priv->last_output_poc = picture->pic_order_cnt;
54
55
+ if (priv->last_reorder_frame_number > picture->reorder_frame_number) {
56
+ guint64 diff = priv->last_reorder_frame_number -
57
+ picture->reorder_frame_number;
58
+ guint64 total_delay = diff + priv->preferred_output_delay;
59
+ if (diff > priv->max_reorder_count && total_delay < G_MAXUINT32) {
60
+ GstClockTime latency;
61
+
62
+ priv->max_reorder_count = (guint32) diff;
63
+ latency = gst_util_uint64_scale_int (GST_SECOND * total_delay,
64
+ priv->fps_d, priv->fps_n);
65
+
66
+ if (latency != G_MAXUINT64) {
67
+ GST_DEBUG_OBJECT (self, "Updating latency to %" GST_TIME_FORMAT
68
+ ", reorder count: %" G_GUINT64_FORMAT ", output-delay: %u",
69
+ GST_TIME_ARGS (latency), diff, priv->preferred_output_delay);
70
+
71
+ gst_video_decoder_set_latency (GST_VIDEO_DECODER (self),
72
+ latency, latency);
73
+ }
74
+ }
75
+ }
76
+
77
frame = gst_video_decoder_get_frame (GST_VIDEO_DECODER (self),
78
picture->system_frame_number);
79
80
81
82
bump_level = get_bump_level (self);
83
if (bump_level != GST_H264_DPB_BUMP_NORMAL_LATENCY) {
84
- if (sps->pic_order_cnt_type == 2) {
85
- /* POC type 2 has does not allow frame reordering */
86
- frames_delay = 0;
87
- } else {
88
- guint32 max_reorder_frames =
89
- gst_h264_dpb_get_max_num_reorder_frames (priv->dpb);
90
- frames_delay = MIN (max_dpb_size, max_reorder_frames);
91
- }
92
+ GST_DEBUG_OBJECT (self, "Actual latency will be updated later");
93
+ frames_delay = 0;
94
}
95
96
+ priv->max_reorder_count = frames_delay;
97
+ priv->fps_n = fps_n;
98
+ priv->fps_d = fps_d;
99
+
100
/* Consider output delay wanted by subclass */
101
frames_delay += priv->preferred_output_delay;
102
103
104
if (ret != GST_FLOW_OK)
105
return ret;
106
107
+ gst_h264_decoder_reset_latency_infos (self);
108
+
109
g_assert (klass->new_sequence);
110
111
if (klass->get_preferred_output_delay) {
112
gst-plugins-bad-1.22.5.tar.xz/gst-libs/gst/codecs/gsth264picture.h -> gst-plugins-bad-1.22.6.tar.xz/gst-libs/gst/codecs/gsth264picture.h
Changed
11
1
2
3
GstH264DecRefPicMarking dec_ref_pic_marking;
4
5
+ /* Set by decoder to trace the number of delayed output pictures */
6
+ guint32 reorder_frame_number;
7
+
8
/* For interlaced decoding */
9
gboolean second_field;
10
GstH264Picture * other_field;
11
gst-plugins-bad-1.22.5.tar.xz/gst-libs/gst/wayland/gstwlwindow.c -> gst-plugins-bad-1.22.6.tar.xz/gst-libs/gst/wayland/gstwlwindow.c
Changed
67
1
2
/* the size of the video in the buffers */
3
gint video_width, video_height;
4
5
+ /* video width scaled according to par */
6
+ gint scaled_width;
7
+
8
enum wl_output_transform buffer_transform;
9
10
/* when this is not set both the area_surface and the video_surface are not
11
12
case WL_OUTPUT_TRANSFORM_180:
13
case WL_OUTPUT_TRANSFORM_FLIPPED:
14
case WL_OUTPUT_TRANSFORM_FLIPPED_180:
15
- src.w = priv->video_width;
16
+ src.w = priv->scaled_width;
17
src.h = priv->video_height;
18
break;
19
case WL_OUTPUT_TRANSFORM_90:
20
21
case WL_OUTPUT_TRANSFORM_FLIPPED_90:
22
case WL_OUTPUT_TRANSFORM_FLIPPED_270:
23
src.w = priv->video_height;
24
- src.h = priv->video_width;
25
+ src.h = priv->scaled_width;
26
break;
27
}
28
29
30
/* center the video_subsurface inside area_subsurface */
31
if (priv->video_viewport) {
32
gst_video_center_rect (&src, &dst, &res, TRUE);
33
+ wp_viewport_set_source (priv->video_viewport, wl_fixed_from_int (0),
34
+ wl_fixed_from_int (0), wl_fixed_from_int (priv->video_width),
35
+ wl_fixed_from_int (priv->video_height));
36
wp_viewport_set_destination (priv->video_viewport, res.w, res.h);
37
} else {
38
gst_video_center_rect (&src, &dst, &res, FALSE);
39
40
GstWlWindowPrivate *priv = gst_wl_window_get_instance_private (self);
41
42
if (G_UNLIKELY (info)) {
43
- priv->video_width =
44
+ priv->scaled_width =
45
gst_util_uint64_scale_int_round (info->width, info->par_n, info->par_d);
46
+ priv->video_width = info->width;
47
priv->video_height = info->height;
48
49
wl_subsurface_set_sync (priv->video_subsurface);
50
51
if (!priv->configured)
52
return;
53
54
- if (priv->video_width != 0) {
55
+ if (priv->scaled_width != 0) {
56
wl_subsurface_set_sync (priv->video_subsurface);
57
gst_wl_window_resize_video_surface (self, TRUE);
58
}
59
60
wl_surface_commit (priv->area_surface_wrapper);
61
62
- if (priv->video_width != 0)
63
+ if (priv->scaled_width != 0)
64
wl_subsurface_set_desync (priv->video_subsurface);
65
}
66
67
gst-plugins-bad-1.22.5.tar.xz/gst-plugins-bad.doap -> gst-plugins-bad-1.22.6.tar.xz/gst-plugins-bad.doap
Changed
18
1
2
3
<release>
4
<Version>
5
+ <revision>1.22.6</revision>
6
+ <branch>1.22</branch>
7
+ <name></name>
8
+ <created>2023-09-20</created>
9
+ <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.22.6.tar.xz" />
10
+ </Version>
11
+ </release>
12
+
13
+ <release>
14
+ <Version>
15
<revision>1.22.5</revision>
16
<branch>1.22</branch>
17
<name></name>
18
gst-plugins-bad-1.22.5.tar.xz/gst/audiolatency/gstaudiolatency.c -> gst-plugins-bad-1.22.6.tar.xz/gst/audiolatency/gstaudiolatency.c
Changed
68
1
2
3
templ = gst_static_pad_template_get (&src_template);
4
srcpad = gst_element_get_static_pad (self->audiosrc, "src");
5
- gst_pad_add_probe (srcpad, GST_PAD_PROBE_TYPE_BUFFER,
6
+ gst_pad_add_probe (srcpad,
7
+ GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_QUERY_UPSTREAM |
8
+ GST_PAD_PROBE_TYPE_EVENT_UPSTREAM,
9
(GstPadProbeCallback) gst_audiolatency_src_probe, self, NULL);
10
11
self->srcpad = gst_ghost_pad_new_from_template ("src", srcpad, templ);
12
13
}
14
15
static GstPadProbeReturn
16
-gst_audiolatency_src_probe (GstPad * pad, GstPadProbeInfo * info,
17
+gst_audiolatency_src_probe_buffer (GstPad * pad, GstPadProbeInfo * info,
18
gpointer user_data)
19
{
20
GstAudioLatency *self = user_data;
21
22
return GST_PAD_PROBE_OK;
23
}
24
25
+static GstPadProbeReturn
26
+gst_audiolatency_src_probe (GstPad * pad, GstPadProbeInfo * info,
27
+ gpointer user_data)
28
+{
29
+ GstAudioLatency *self = user_data;
30
+
31
+ if (info->type & GST_PAD_PROBE_TYPE_BUFFER) {
32
+ return gst_audiolatency_src_probe_buffer (pad, info, user_data);
33
+ } else if (info->type & GST_PAD_PROBE_TYPE_QUERY_UPSTREAM) {
34
+ GstQuery *query = gst_pad_probe_info_get_query (info);
35
+
36
+ /* Forward latency query to the upstream sinkpad */
37
+ if (GST_QUERY_TYPE (query) == GST_QUERY_LATENCY) {
38
+ gboolean res = gst_pad_peer_query (self->sinkpad, query);
39
+ GST_LOG_OBJECT (self,
40
+ "Forwarded latency query to sinkpad. Result %d %" GST_PTR_FORMAT, res,
41
+ query);
42
+ return res ? GST_PAD_PROBE_HANDLED : GST_PAD_PROBE_DROP;
43
+ }
44
+ } else if (info->type & GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) {
45
+ GstEvent *event = gst_pad_probe_info_get_event (info);
46
+
47
+ if (GST_EVENT_TYPE (event) == GST_EVENT_LATENCY) {
48
+ gboolean res = gst_pad_push_event (self->sinkpad, event);
49
+
50
+ GST_LOG_OBJECT (self,
51
+ "Forwarded latency event to sinkpad. Result %d %" GST_PTR_FORMAT, res,
52
+ event);
53
+ if (!res) {
54
+ /* This doesn't actually do anything - pad probe handling ignores
55
+ * it, but maybe one day */
56
+ GST_PAD_PROBE_INFO_FLOW_RETURN (info) = GST_FLOW_ERROR;
57
+ }
58
+ return GST_PAD_PROBE_HANDLED;
59
+ }
60
+ }
61
+
62
+ return GST_PAD_PROBE_OK;
63
+}
64
+
65
static GstFlowReturn
66
gst_audiolatency_sink_chain (GstPad * pad, GstObject * parent,
67
GstBuffer * buffer)
68
gst-plugins-bad-1.22.5.tar.xz/gst/mxf/mxfd10.c -> gst-plugins-bad-1.22.6.tar.xz/gst/mxf/mxfd10.c
Changed
18
1
2
gst_buffer_map (buffer, &map, GST_MAP_READ);
3
4
/* Now transform raw AES3 into raw audio, see SMPTE 331M */
5
- if ((map.size - 4) % 32 != 0) {
6
+ if (map.size < 4 || (map.size - 4) % 32 != 0) {
7
gst_buffer_unmap (buffer, &map);
8
GST_ERROR ("Invalid D10 sound essence buffer size");
9
return GST_FLOW_ERROR;
10
11
GstAudioFormat audio_format;
12
13
if (s->channel_count == 0 ||
14
+ s->channel_count > 8 ||
15
s->quantization_bits == 0 ||
16
s->audio_sampling_rate.n == 0 || s->audio_sampling_rate.d == 0) {
17
GST_ERROR ("Invalid descriptor");
18
gst-plugins-bad-1.22.5.tar.xz/gst/mxf/mxfup.c -> gst-plugins-bad-1.22.6.tar.xz/gst/mxf/mxfup.c
Changed
90
1
2
gpointer mapping_data, GstBuffer ** outbuf)
3
{
4
MXFUPMappingData *data = mapping_data;
5
+ gsize expected_in_stride = 0, out_stride = 0;
6
+ gsize expected_in_size = 0, out_size = 0;
7
8
/* SMPTE 384M 7.1 */
9
if (key->u12 != 0x15 || (key->u14 != 0x01 && key->u14 != 0x02
10
11
}
12
}
13
14
- if (gst_buffer_get_size (buffer) != data->bpp * data->width * data->height) {
15
+ // Checked for overflows when parsing the descriptor
16
+ expected_in_stride = data->bpp * data->width;
17
+ out_stride = GST_ROUND_UP_4 (expected_in_stride);
18
+ expected_in_size = expected_in_stride * data->height;
19
+ out_size = out_stride * data->height;
20
+
21
+ if (gst_buffer_get_size (buffer) != expected_in_size) {
22
GST_ERROR ("Invalid buffer size");
23
gst_buffer_unref (buffer);
24
return GST_FLOW_ERROR;
25
}
26
27
- if (data->bpp != 4
28
- || GST_ROUND_UP_4 (data->width * data->bpp) != data->width * data->bpp) {
29
+ if (data->bpp != 4 || out_stride != expected_in_stride) {
30
guint y;
31
GstBuffer *ret;
32
GstMapInfo inmap, outmap;
33
guint8 *indata, *outdata;
34
35
- ret =
36
- gst_buffer_new_and_alloc (GST_ROUND_UP_4 (data->width * data->bpp) *
37
- data->height);
38
+ ret = gst_buffer_new_and_alloc (out_size);
39
gst_buffer_map (buffer, &inmap, GST_MAP_READ);
40
gst_buffer_map (ret, &outmap, GST_MAP_WRITE);
41
indata = inmap.data;
42
43
44
for (y = 0; y < data->height; y++) {
45
memcpy (outdata, indata, data->width * data->bpp);
46
- outdata += GST_ROUND_UP_4 (data->width * data->bpp);
47
- indata += data->width * data->bpp;
48
+ outdata += out_stride;
49
+ indata += expected_in_stride;
50
}
51
52
gst_buffer_unmap (buffer, &inmap);
53
54
return NULL;
55
}
56
57
+ if (caps) {
58
+ MXFUPMappingData *data = *mapping_data;
59
+ gsize expected_in_stride = 0, out_stride = 0;
60
+ gsize expected_in_size = 0, out_size = 0;
61
+
62
+ // Do some checking of the parameters to see if they're valid and
63
+ // we can actually work with them.
64
+ if (data->image_start_offset > data->image_end_offset) {
65
+ GST_WARNING ("Invalid image start/end offset");
66
+ g_free (data);
67
+ *mapping_data = NULL;
68
+ gst_clear_caps (&caps);
69
+
70
+ return NULL;
71
+ }
72
+
73
+ if (!g_size_checked_mul (&expected_in_stride, data->bpp, data->width) ||
74
+ (out_stride = GST_ROUND_UP_4 (expected_in_stride)) < expected_in_stride
75
+ || !g_size_checked_mul (&expected_in_size, expected_in_stride,
76
+ data->height)
77
+ || !g_size_checked_mul (&out_size, out_stride, data->height)) {
78
+ GST_ERROR ("Invalid resolution or bit depth");
79
+ g_free (data);
80
+ *mapping_data = NULL;
81
+ gst_clear_caps (&caps);
82
+
83
+ return NULL;
84
+ }
85
+ }
86
+
87
return caps;
88
}
89
90
gst-plugins-bad-1.22.5.tar.xz/gst/rtmp2/gstrtmp2sink.c -> gst-plugins-bad-1.22.6.tar.xz/gst/rtmp2/gstrtmp2sink.c
Changed
19
1
2
gst_rtmp2_sink_render (GstBaseSink * sink, GstBuffer * buffer)
3
{
4
GstRtmp2Sink *self = GST_RTMP2_SINK (sink);
5
- GstBuffer *message;
6
+ GstBuffer *message = NULL;
7
GstFlowReturn ret;
8
9
if (G_UNLIKELY (should_drop_header (self, buffer))) {
10
11
12
if (G_UNLIKELY (!buffer_to_message (self, buffer, &message))) {
13
GST_ELEMENT_ERROR (self, STREAM, FAILED, ("Failed to convert FLV to RTMP"),
14
- ("Failed to convert %" GST_PTR_FORMAT, message));
15
+ ("Failed to convert %" GST_PTR_FORMAT, buffer));
16
return GST_FLOW_ERROR;
17
}
18
19
gst-plugins-bad-1.22.5.tar.xz/gst/rtmp2/rtmp/rtmpclient.c -> gst-plugins-bad-1.22.6.tar.xz/gst/rtmp2/rtmp/rtmpclient.c
Changed
30
1
2
goto out;
3
}
4
5
- if (!flash_ver) {
6
- g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_INITIALIZED,
7
- "Flash version is not set");
8
- g_object_unref (task);
9
- goto out;
10
- }
11
-
12
if (data->auth_query) {
13
const gchar *query = data->auth_query;
14
appstr = g_strdup_printf ("%s?%s", app, query);
15
16
gst_amf_node_append_field_string (node, "type", "nonprivate", -1);
17
}
18
19
- /* "Flash Player version. It is the same string as returned by the
20
- * ApplicationScript getversion () function." */
21
- gst_amf_node_append_field_string (node, "flashVer", flash_ver, -1);
22
+ if (flash_ver) {
23
+ /* "Flash Player version. It is the same string as returned by the
24
+ * ApplicationScript getversion () function." */
25
+ gst_amf_node_append_field_string (node, "flashVer", flash_ver, -1);
26
+ }
27
28
/* "URL of the source SWF file making the connection."
29
* XXX: libavformat sends "swfUrl" here, if provided. */
30
gst-plugins-bad-1.22.5.tar.xz/gst/transcode/gsttranscodebin.c -> gst-plugins-bad-1.22.6.tar.xz/gst/transcode/gsttranscodebin.c
Changed
124
1
2
3
#define DEFAULT_AVOID_REENCODING FALSE
4
5
+GST_DEBUG_CATEGORY_STATIC(gst_transcodebin_debug);
6
+#define GST_CAT_DEFAULT gst_transcodebin_debug
7
+
8
G_DEFINE_TYPE (GstTranscodeBin, gst_transcode_bin, GST_TYPE_BIN);
9
GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (transcodebin, "transcodebin", GST_RANK_NONE,
10
GST_TYPE_TRANSCODE_BIN, transcodebin_element_init (plugin));
11
12
TranscodingStream *res = NULL;
13
14
GST_OBJECT_LOCK (self);
15
+ GST_DEBUG_OBJECT (self,
16
+ "Looking for stream %s in %u existing transcoding streams",
17
+ stream_id, self->transcoding_streams->len);
18
for (i = 0; i < self->transcoding_streams->len; i = i + 1) {
19
TranscodingStream *s = self->transcoding_streams->pdatai;
20
21
22
23
done:
24
GST_OBJECT_UNLOCK (self);
25
+ GST_DEBUG_OBJECT (self, "Look-up result: %p", res);
26
27
return res;
28
}
29
30
TranscodingStream *res = NULL;
31
GstPad *encodebin_pad = get_encodebin_pad_from_stream (self, stream);
32
33
+ GST_DEBUG_OBJECT (self,
34
+ "Encodebin pad for stream %" GST_PTR_FORMAT " : %" GST_PTR_FORMAT, stream,
35
+ encodebin_pad);
36
if (encodebin_pad) {
37
GST_INFO_OBJECT (self,
38
"Going to transcode stream %s (encodebin pad: %" GST_PTR_FORMAT ")",
39
40
}
41
}
42
43
+static void
44
+query_upstream_selectable (GstTranscodeBin * self, GstPad * pad)
45
+{
46
+ GstQuery *query;
47
+ gboolean result;
48
+
49
+ /* Query whether upstream can handle stream selection or not */
50
+ query = gst_query_new_selectable ();
51
+ result = GST_PAD_IS_SINK (pad) ? gst_pad_peer_query (pad, query)
52
+ : gst_pad_query (pad, query);
53
+ if (result) {
54
+ GST_FIXME_OBJECT (self,
55
+ "We force `transcodebin` to upstream selection"
56
+ " mode if *any* of the inputs is. This means things might break if"
57
+ " there's a mix");
58
+ gst_query_parse_selectable (query, &self->upstream_selected);
59
+ GST_DEBUG_OBJECT (pad, "Upstream is selectable : %d",
60
+ self->upstream_selected);
61
+ } else {
62
+ self->upstream_selected = FALSE;
63
+ GST_DEBUG_OBJECT (pad, "Upstream does not handle SELECTABLE query");
64
+ }
65
+ gst_query_unref (query);
66
+}
67
+
68
static GstPadProbeReturn
69
wait_stream_start_probe (GstPad * pad,
70
GstPadProbeInfo * info, GstTranscodeBin * self)
71
72
GST_INFO_OBJECT (self,
73
"Got pad %" GST_PTR_FORMAT " with stream:: %" GST_PTR_FORMAT, pad,
74
info->data);
75
+ query_upstream_selectable (self, pad);
76
gst_transcode_bin_link_encodebin_pad (self, pad, info->data);
77
78
return GST_PAD_PROBE_REMOVE;
79
80
gst_event_parse_stream_start (sstart_event, &stream_id);
81
GST_INFO_OBJECT (self, "Got pad %" GST_PTR_FORMAT " with stream ID: %s",
82
pad, stream_id);
83
+ query_upstream_selectable (self, pad);
84
gst_transcode_bin_link_encodebin_pad (self, pad, sstart_event);
85
return;
86
}
87
88
89
switch (GST_EVENT_TYPE (event)) {
90
case GST_EVENT_STREAM_START:
91
- {
92
- GstQuery *q = gst_query_new_selectable ();
93
-
94
- /* Query whether upstream can handle stream selection or not */
95
- if (gst_pad_peer_query (sinkpad, q)) {
96
- GST_FIXME_OBJECT (self, "We force `transcodebin` to upstream selection"
97
- " mode if *any* of the inputs is. This means things might break if"
98
- " there's a mix");
99
- gst_query_parse_selectable (q, &self->upstream_selected);
100
- GST_DEBUG_OBJECT (sinkpad, "Upstream is selectable : %d",
101
- self->upstream_selected);
102
- } else {
103
- self->upstream_selected = FALSE;
104
- GST_DEBUG_OBJECT (sinkpad, "Upstream does not handle SELECTABLE query");
105
- }
106
- gst_query_unref (q);
107
-
108
+ query_upstream_selectable (self, sinkpad);
109
break;
110
- }
111
default:
112
break;
113
}
114
115
object_class->get_property = gst_transcode_bin_get_property;
116
object_class->set_property = gst_transcode_bin_set_property;
117
118
+ GST_DEBUG_CATEGORY_INIT (gst_transcodebin_debug, "transcodebin", 0,
119
+ "Transcodebin element");
120
+
121
gstelement_klass = (GstElementClass *) klass;
122
gstelement_klass->change_state =
123
GST_DEBUG_FUNCPTR (gst_transcode_bin_change_state);
124
gst-plugins-bad-1.22.5.tar.xz/gst/videoparsers/gsth265parse.c -> gst-plugins-bad-1.22.6.tar.xz/gst/videoparsers/gsth265parse.c
Changed
40
1
2
off = 23;
3
4
for (i = 0; i < num_nal_arrays; i++) {
5
+ guint8 nalu_type;
6
+
7
if (off + 3 >= size) {
8
gst_buffer_unmap (codec_data, &map);
9
goto hvcc_too_small;
10
}
11
12
+ nalu_type = dataoff & 0x3f;
13
num_nals = GST_READ_UINT16_BE (data + off + 1);
14
off += 3;
15
for (j = 0; j < num_nals; j++) {
16
17
data, off, size, 2, &nalu);
18
19
if (parseres != GST_H265_PARSER_OK) {
20
+ if (i + 1 == num_nal_arrays && j + 1 == num_nals &&
21
+ nalu_type != GST_H265_NAL_VPS && nalu_type != GST_H265_NAL_SPS &&
22
+ nalu_type != GST_H265_NAL_PPS) {
23
+ GST_WARNING_OBJECT (h265parse,
24
+ "Couldn't parse the last nalu, type %d at array %d / %d",
25
+ nalu_type, i, j);
26
+ goto codec_data_done;
27
+ }
28
+ GST_ERROR ("aaa, %d", nalu_type);
29
gst_buffer_unmap (codec_data, &map);
30
goto hvcc_too_small;
31
}
32
33
off = nalu.offset + nalu.size;
34
}
35
}
36
+ codec_data_done:
37
gst_buffer_unmap (codec_data, &map);
38
39
/* don't confuse codec_data with inband vps/sps/pps */
40
gst-plugins-bad-1.22.5.tar.xz/meson.build -> gst-plugins-bad-1.22.6.tar.xz/meson.build
Changed
8
1
2
project('gst-plugins-bad', 'c', 'cpp',
3
- version : '1.22.5',
4
+ version : '1.22.6',
5
meson_version : '>= 0.62',
6
default_options : 'warning_level=1',
7
'buildtype=debugoptimized' )
8
gst-plugins-bad-1.22.5.tar.xz/po/gst-plugins-bad-1.0.pot -> gst-plugins-bad-1.22.6.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.5\n"
6
+"Project-Id-Version: gst-plugins-bad-1.22.6\n"
7
"Report-Msgid-Bugs-To: \n"
8
-"POT-Creation-Date: 2023-07-20 15:26+0100\n"
9
+"POT-Creation-Date: 2023-09-20 18:17+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.5.tar.xz/po/gst-plugins-bad.pot -> gst-plugins-bad-1.22.6.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.5\n"
6
+"Project-Id-Version: gst-plugins-bad-1.22.6\n"
7
"Report-Msgid-Bugs-To: \n"
8
-"POT-Creation-Date: 2023-07-20 15:26+0100\n"
9
+"POT-Creation-Date: 2023-09-20 18:17+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.5.tar.xz/sys/androidmedia/gst-android-hardware-camera.c -> gst-plugins-bad-1.22.6.tar.xz/sys/androidmedia/gst-android-hardware-camera.c
Changed
57
1
2
}
3
} else {
4
android_hardware_camera_parameters.EFFECT_EMBOSS = NULL;
5
+ g_clear_error (&err);
6
}
7
8
fieldID =
9
10
}
11
} else {
12
android_hardware_camera_parameters.EFFECT_SKETCH = NULL;
13
+ g_clear_error (&err);
14
}
15
16
fieldID =
17
18
}
19
} else {
20
android_hardware_camera_parameters.EFFECT_NEON = NULL;
21
+ g_clear_error (&err);
22
}
23
24
fieldID =
25
26
}
27
} else {
28
android_hardware_camera_parameters.SCENE_MODE_BACKLIGHT = NULL;
29
+ g_clear_error (&err);
30
}
31
32
fieldID =
33
34
}
35
} else {
36
android_hardware_camera_parameters.SCENE_MODE_FLOWERS = NULL;
37
+ g_clear_error (&err);
38
}
39
40
fieldID =
41
42
}
43
} else {
44
android_hardware_camera_parameters.SCENE_MODE_AR = NULL;
45
+ g_clear_error (&err);
46
}
47
48
fieldID =
49
50
}
51
} else {
52
android_hardware_camera_parameters.SCENE_MODE_HDR = NULL;
53
+ g_clear_error (&err);
54
}
55
56
fieldID =
57
gst-plugins-bad-1.22.5.tar.xz/sys/androidmedia/gstamc-constants.h -> gst-plugins-bad-1.22.6.tar.xz/sys/androidmedia/gstamc-constants.h
Changed
11
1
2
{
3
BUFFER_FLAG_SYNC_FRAME = 1,
4
BUFFER_FLAG_CODEC_CONFIG = 2,
5
- BUFFER_FLAG_END_OF_STREAM = 4
6
+ BUFFER_FLAG_END_OF_STREAM = 4,
7
+ BUFFER_FLAG_PARTIAL_FRAME = 8,
8
};
9
10
enum
11
gst-plugins-bad-1.22.5.tar.xz/sys/androidmedia/gstamc.c -> gst-plugins-bad-1.22.6.tar.xz/sys/androidmedia/gstamc.c
Changed
21
1
2
g_value_reset (&v);
3
4
encoded_ret = gst_caps_merge_structure (encoded_ret, tmp3);
5
-
6
have_profile_level = TRUE;
7
}
8
- }
9
-
10
- if (have_profile_level) {
11
gst_structure_free (tmp2);
12
} else {
13
encoded_ret = gst_caps_merge_structure (encoded_ret, tmp2);
14
+ have_profile_level = TRUE;
15
}
16
-
17
- have_profile_level = TRUE;
18
}
19
}
20
21
gst-plugins-bad-1.22.5.tar.xz/sys/androidmedia/gstamcvideodec.c -> gst-plugins-bad-1.22.6.tar.xz/sys/androidmedia/gstamcvideodec.c
Changed
10
1
2
*
3
* As a result, we need to advance the ready counter somehow ourselves when
4
* such events happen. There is no reliable way of knowing when/if the frame
5
- * listener is going to fire. The only uniqueu identifier,
6
+ * listener is going to fire. The only unique identifier,
7
* SurfaceTexture::get_timestamp seems to always return 0.
8
*
9
* The maximum queue size as defined in
10
gst-plugins-bad-1.22.5.tar.xz/sys/androidmedia/gstamcvideoenc.c -> gst-plugins-bad-1.22.6.tar.xz/sys/androidmedia/gstamcvideoenc.c
Changed
171
1
2
if (best)
3
gst_video_codec_frame_ref (best);
4
5
+ GST_DEBUG_OBJECT (self, "found best %p from %u frames", best,
6
+ g_list_length (frames));
7
+ if (best) {
8
+ GST_LOG_OBJECT (self, "best %p (input pts %" GST_TIME_FORMAT " dts %"
9
+ GST_TIME_FORMAT " frame no %" G_GUINT32_FORMAT " buffer %"
10
+ GST_PTR_FORMAT, best, GST_TIME_ARGS (best->pts),
11
+ GST_TIME_ARGS (best->dts), best->system_frame_number,
12
+ best->input_buffer);
13
+ }
14
+
15
g_list_foreach (frames, (GFunc) gst_video_codec_frame_unref, NULL);
16
g_list_free (frames);
17
18
19
GstFlowReturn flow_ret = GST_FLOW_OK;
20
GstVideoEncoder *encoder = GST_VIDEO_ENCODER_CAST (self);
21
22
- /* The BUFFER_FLAG_CODEC_CONFIG logic is borrowed from
23
- * gst-omx. see *_handle_output_frame in
24
- * gstomxvideoenc.c and gstomxh264enc.c */
25
- if ((buffer_info->flags & BUFFER_FLAG_CODEC_CONFIG)
26
- && buffer_info->size > 0) {
27
-
28
- if (self->codec_data_in_bytestream) {
29
- if (buffer_info->size > 4 &&
30
- GST_READ_UINT32_BE (buf->data + buffer_info->offset) == 0x00000001) {
31
- GList *l = NULL;
32
- GstBuffer *hdrs;
33
-
34
- GST_DEBUG_OBJECT (self, "got codecconfig in byte-stream format");
35
-
36
- hdrs = gst_buffer_new_and_alloc (buffer_info->size);
37
- gst_buffer_fill (hdrs, 0, buf->data + buffer_info->offset,
38
- buffer_info->size);
39
- GST_BUFFER_PTS (hdrs) =
40
- gst_util_uint64_scale (buffer_info->presentation_time_us,
41
- GST_USECOND, 1);
42
-
43
- l = g_list_append (l, hdrs);
44
- gst_video_encoder_set_headers (encoder, l);
45
- }
46
- } else {
47
- GstBuffer *codec_data;
48
- GstVideoCodecState *output_state =
49
- gst_video_encoder_get_output_state (GST_VIDEO_ENCODER (self));
50
-
51
- GST_DEBUG_OBJECT (self, "Handling codec data");
52
-
53
- codec_data = gst_buffer_new_and_alloc (buffer_info->size);
54
- gst_buffer_fill (codec_data, 0, buf->data + buffer_info->offset,
55
- buffer_info->size);
56
- output_state->codec_data = codec_data;
57
- gst_video_codec_state_unref (output_state);
58
-
59
- if (!gst_video_encoder_negotiate (encoder)) {
60
- gst_video_codec_frame_unref (frame);
61
- return GST_FLOW_NOT_NEGOTIATED;
62
- }
63
-
64
- return GST_FLOW_OK;
65
- }
66
- }
67
-
68
if (buffer_info->size > 0) {
69
GstBuffer *out_buf;
70
GstPad *srcpad;
71
72
+ if (buffer_info->flags & BUFFER_FLAG_PARTIAL_FRAME) {
73
+ GST_FIXME_OBJECT (self, "partial frames are currently not handled");
74
+ }
75
+
76
srcpad = GST_VIDEO_ENCODER_SRC_PAD (encoder);
77
out_buf =
78
gst_video_encoder_allocate_output_buffer (encoder, buffer_info->size);
79
80
* caps and filling it
81
*/
82
83
- GST_ERROR_OBJECT (self, "No corresponding frame found");
84
+ GST_ERROR_OBJECT (self, "No corresponding frame found: buffer pts: %"
85
+ GST_TIME_FORMAT " presentation_time_us %" G_GUINT64_FORMAT,
86
+ GST_TIME_ARGS (GST_BUFFER_PTS (out_buf)),
87
+ (guint64) buffer_info->presentation_time_us);
88
flow_ret = gst_pad_push (srcpad, out_buf);
89
}
90
} else if (frame) {
91
92
static void
93
gst_amc_video_enc_loop (GstAmcVideoEnc * self)
94
{
95
+ GstVideoEncoder *encoder = GST_VIDEO_ENCODER_CAST (self);
96
GstVideoCodecFrame *frame;
97
GstFlowReturn flow_ret = GST_FLOW_OK;
98
- gboolean is_eos;
99
+ gboolean is_eos, is_codec_data;
100
GstAmcBufferInfo buffer_info;
101
GstAmcBuffer *buf;
102
gint idx;
103
104
goto got_null_output_buffer;
105
}
106
107
- frame =
108
- _find_nearest_frame (self,
109
- gst_util_uint64_scale (buffer_info.presentation_time_us, GST_USECOND, 1));
110
+ is_codec_data = FALSE;
111
+ /* The BUFFER_FLAG_CODEC_CONFIG logic is borrowed from
112
+ * gst-omx. see *_handle_output_frame in
113
+ * gstomxvideoenc.c and gstomxh264enc.c */
114
+ if ((buffer_info.flags & BUFFER_FLAG_CODEC_CONFIG)
115
+ && buffer_info.size > 0) {
116
+
117
+ if (self->codec_data_in_bytestream) {
118
+ if (buffer_info.size > 4 &&
119
+ GST_READ_UINT32_BE (buf->data + buffer_info.offset) == 0x00000001) {
120
+ GList *l = NULL;
121
+ GstBuffer *hdrs;
122
+
123
+ GST_DEBUG_OBJECT (self, "got codecconfig in byte-stream format");
124
+
125
+ hdrs = gst_buffer_new_and_alloc (buffer_info.size);
126
+ gst_buffer_fill (hdrs, 0, buf->data + buffer_info.offset,
127
+ buffer_info.size);
128
+ GST_BUFFER_PTS (hdrs) =
129
+ gst_util_uint64_scale (buffer_info.presentation_time_us,
130
+ GST_USECOND, 1);
131
+
132
+ l = g_list_append (l, hdrs);
133
+ gst_video_encoder_set_headers (encoder, l);
134
+ is_codec_data = TRUE;
135
+ }
136
+ } else {
137
+ GstBuffer *codec_data;
138
+ GstVideoCodecState *output_state =
139
+ gst_video_encoder_get_output_state (GST_VIDEO_ENCODER (self));
140
+
141
+ GST_DEBUG_OBJECT (self, "Handling codec data");
142
+
143
+ codec_data = gst_buffer_new_and_alloc (buffer_info.size);
144
+ gst_buffer_fill (codec_data, 0, buf->data + buffer_info.offset,
145
+ buffer_info.size);
146
+ output_state->codec_data = codec_data;
147
+ gst_video_codec_state_unref (output_state);
148
+ is_codec_data = TRUE;
149
+
150
+ if (!gst_video_encoder_negotiate (encoder))
151
+ flow_ret = GST_FLOW_NOT_NEGOTIATED;
152
+ }
153
+ }
154
155
is_eos = ! !(buffer_info.flags & BUFFER_FLAG_END_OF_STREAM);
156
157
- flow_ret =
158
- gst_amc_video_enc_handle_output_frame (self, buf, &buffer_info, frame);
159
+ if (flow_ret == GST_FLOW_OK && !is_codec_data) {
160
+ frame =
161
+ _find_nearest_frame (self,
162
+ gst_util_uint64_scale (buffer_info.presentation_time_us, GST_USECOND,
163
+ 1));
164
+
165
+ flow_ret =
166
+ gst_amc_video_enc_handle_output_frame (self, buf, &buffer_info, frame);
167
+ }
168
169
gst_amc_buffer_free (buf);
170
buf = NULL;
171
gst-plugins-bad-1.22.5.tar.xz/sys/androidmedia/gstjniutils.c -> gst-plugins-bad-1.22.6.tar.xz/sys/androidmedia/gstjniutils.c
Changed
35
1
2
gst_amc_jni_object_make_global (JNIEnv * env, jobject object)
3
{
4
jobject ret;
5
+ g_return_val_if_fail (env != NULL, NULL);
6
+ g_return_val_if_fail (object != NULL, NULL);
7
8
ret = (*env)->NewGlobalRef (env, object);
9
if (!ret) {
10
11
gst_amc_jni_object_ref (JNIEnv * env, jobject object)
12
{
13
jobject ret;
14
+ g_return_val_if_fail (env != NULL, NULL);
15
+ g_return_val_if_fail (object != NULL, NULL);
16
17
ret = (*env)->NewGlobalRef (env, object);
18
if (!ret) {
19
20
void
21
gst_amc_jni_object_unref (JNIEnv * env, jobject object)
22
{
23
+ g_return_if_fail (env != NULL);
24
g_return_if_fail (object != NULL);
25
26
(*env)->DeleteGlobalRef (env, object);
27
28
void
29
gst_amc_jni_object_local_unref (JNIEnv * env, jobject object)
30
{
31
+ g_return_if_fail (env != NULL);
32
g_return_if_fail (object != NULL);
33
34
(*env)->DeleteLocalRef (env, object);
35
gst-plugins-bad-1.22.5.tar.xz/sys/applemedia/avsamplevideosink.m -> gst-plugins-bad-1.22.6.tar.xz/sys/applemedia/avsamplevideosink.m
Changed
24
1
2
return kCVPixelFormatType_24RGB;
3
case GST_VIDEO_FORMAT_BGR:
4
return kCVPixelFormatType_24BGR;
5
-#if 0
6
- /* FIXME doesn't seem to work */
7
case GST_VIDEO_FORMAT_NV12:
8
return kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange;
9
-#endif
10
case GST_VIDEO_FORMAT_I420:
11
return kCVPixelFormatType_420YpCbCr8Planar;
12
case GST_VIDEO_FORMAT_YUY2:
13
14
return GST_VIDEO_FORMAT_RGB;
15
case kCVPixelFormatType_24BGR:
16
return GST_VIDEO_FORMAT_BGR;
17
-#if 0
18
case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:
19
return GST_VIDEO_FORMAT_NV12;
20
-#endif
21
case kCVPixelFormatType_420YpCbCr8Planar:
22
return GST_VIDEO_FORMAT_I420;
23
case kCVPixelFormatType_422YpCbCr8_yuvs:
24
gst-plugins-bad-1.22.5.tar.xz/sys/applemedia/coremediabuffer.c -> gst-plugins-bad-1.22.6.tar.xz/sys/applemedia/coremediabuffer.c
Changed
10
1
2
gst_core_media_buffer_get_video_format (OSType format)
3
{
4
switch (format) {
5
+ case kCVPixelFormatType_420YpCbCr8Planar:
6
+ return GST_VIDEO_FORMAT_I420;
7
case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:
8
return GST_VIDEO_FORMAT_NV12;
9
case kCVPixelFormatType_422YpCbCr8_yuvs:
10
gst-plugins-bad-1.22.5.tar.xz/sys/applemedia/corevideobuffer.c -> gst-plugins-bad-1.22.6.tar.xz/sys/applemedia/corevideobuffer.c
Changed
10
1
2
gst_core_video_get_video_format (OSType format)
3
{
4
switch (format) {
5
+ case kCVPixelFormatType_420YpCbCr8Planar:
6
+ return GST_VIDEO_FORMAT_I420;
7
case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:
8
return GST_VIDEO_FORMAT_NV12;
9
case kCVPixelFormatType_422YpCbCr8_yuvs:
10
gst-plugins-bad-1.22.5.tar.xz/sys/d3d11/gstd3d11convert.cpp -> gst-plugins-bad-1.22.6.tar.xz/sys/d3d11/gstd3d11convert.cpp
Changed
29
1
2
gst_d3d11_base_convert_propose_allocation (GstBaseTransform * trans,
3
GstQuery * decide_query, GstQuery * query)
4
{
5
+ GstD3D11BaseConvert *self = GST_D3D11_BASE_CONVERT (trans);
6
GstD3D11BaseFilter *filter = GST_D3D11_BASE_FILTER (trans);
7
GstVideoInfo info;
8
GstBufferPool *pool = NULL;
9
10
ID3D11Device *device_handle;
11
12
if (!GST_BASE_TRANSFORM_CLASS (parent_class)->propose_allocation (trans,
13
- decide_query, query))
14
+ decide_query, query)) {
15
return FALSE;
16
+ }
17
+
18
+ if (self->same_caps) {
19
+ if (!gst_pad_peer_query (trans->srcpad, query))
20
+ return FALSE;
21
+
22
+ gst_query_add_allocation_meta (query,
23
+ GST_VIDEO_CROP_META_API_TYPE, nullptr);
24
+ return TRUE;
25
+ }
26
27
gst_query_parse_allocation (query, &caps, NULL);
28
29
gst-plugins-bad-1.22.5.tar.xz/sys/nvcodec/gstnvencoder.cpp -> gst-plugins-bad-1.22.6.tar.xz/sys/nvcodec/gstnvencoder.cpp
Changed
9
1
2
3
gst_video_encoder_set_min_pts (GST_VIDEO_ENCODER (self),
4
GST_SECOND * 60 * 60 * 1000);
5
+ GST_PAD_SET_ACCEPT_INTERSECT (GST_VIDEO_ENCODER_SINK_PAD (self));
6
}
7
8
static void
9
gst-plugins-bad-1.22.5.tar.xz/sys/va/gstvadecoder.c -> gst-plugins-bad-1.22.6.tar.xz/sys/va/gstvadecoder.c
Changed
10
1
2
VA_PROGRESSIVE, render_targets, num_render_targets, &context);
3
4
if (status != VA_STATUS_SUCCESS) {
5
- GST_ERROR_OBJECT (self, "vaDestroyConfig: %s", vaErrorStr (status));
6
+ GST_ERROR_OBJECT (self, "vaCreateContext: %s", vaErrorStr (status));
7
return FALSE;
8
}
9
10
gst-plugins-bad-1.22.5.tar.xz/sys/va/gstvadisplay_priv.c -> gst-plugins-bad-1.22.6.tar.xz/sys/va/gstvadisplay_priv.c
Changed
10
1
2
3
status = vaQueryConfigEntrypoints (dpy, VAProfileNone, entrypoints, &num);
4
if (status != VA_STATUS_SUCCESS) {
5
- GST_ERROR ("vaQueryImageFormats: %s", vaErrorStr (status));
6
+ GST_ERROR ("vaQueryConfigEntrypoints: %s", vaErrorStr (status));
7
goto bail;
8
}
9
10
gst-plugins-bad-1.22.5.tar.xz/sys/win32ipc/protocol/win32ipcpipeserver.cpp -> gst-plugins-bad-1.22.6.tar.xz/sys/win32ipc/protocol/win32ipcpipeserver.cpp
Changed
11
1
2
3
self->conn.clear ();
4
5
+ if (pipe != INVALID_HANDLE_VALUE)
6
+ CloseHandle (pipe);
7
+
8
lk.lock ();
9
CloseHandle (overlap.hEvent);
10
self->last_err = ERROR_OPERATION_ABORTED;
11
gst-plugins-bad-1.22.5.tar.xz/tests/check/elements/h265parse.c -> gst-plugins-bad-1.22.6.tar.xz/tests/check/elements/h265parse.c
Changed
79
1
2
3
GST_END_TEST;
4
5
+GST_START_TEST (test_invalid_sei_in_hvcc)
6
+{
7
+ GstHarness *h;
8
+ GstCaps *caps;
9
+ GstBuffer *codec_data;
10
+ /* Consists of 4 arrays (VPS, SPS, PPS, SEI -> broken) and each array contains
11
+ * single nalu
12
+ * Captured from the log at
13
+ * https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2905
14
+ */
15
+ static const guint8 hvcc_data = {
16
+ 0x01, 0x01, 0x01, 0x01, 0x60, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00,
17
+ 0x00, 0xf0, 0x00, 0xfc, 0xfd, 0xf8, 0xf8, 0x00, 0x00, 0x0f, 0x04, 0x20,
18
+ 0x00, 0x01, 0x00, 0x17, 0x40, 0x01, 0x0c, 0x01, 0xff, 0xff, 0x01, 0x60,
19
+ 0x00, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00,
20
+ 0x7b, 0xac, 0x09, 0x21, 0x00, 0x01, 0x00, 0x42, 0x42, 0x01, 0x01, 0x01,
21
+ 0x60, 0x00, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03,
22
+ 0x00, 0x7b, 0xa0, 0x02, 0x80, 0x80, 0x2d, 0x1f, 0xe3, 0x6b, 0xbb, 0x53,
23
+ 0x77, 0x72, 0x5d, 0x60, 0x2d, 0xc0, 0x40, 0x40, 0x41, 0x00, 0x00, 0x03,
24
+ 0x03, 0xe8, 0x00, 0x00, 0x4e, 0x20, 0x72, 0x1d, 0xee, 0x51, 0x00, 0x05,
25
+ 0xdc, 0x00, 0x00, 0x1a, 0x5e, 0x00, 0x00, 0x2e, 0xe0, 0x00, 0x00, 0xd2,
26
+ 0xf0, 0x08, 0x22, 0x00, 0x01, 0x00, 0x0b, 0x44, 0x01, 0xc1, 0x72, 0xb0,
27
+ 0x9c, 0x38, 0x77, 0x06, 0x0c, 0x24, 0x27, 0x00, 0x01, 0x00, 0x00, 0x00
28
+ };
29
+
30
+ caps = gst_caps_new_simple ("video/x-h265", "stream-format", G_TYPE_STRING,
31
+ "hvc1", "alignment", G_TYPE_STRING, "au", NULL);
32
+ codec_data = gst_buffer_new_memdup (hvcc_data, sizeof (hvcc_data));
33
+ gst_caps_set_simple (caps, "codec_data", GST_TYPE_BUFFER, codec_data, NULL);
34
+ gst_buffer_unref (codec_data);
35
+
36
+ h = gst_harness_new ("h265parse");
37
+ gst_harness_set_src_caps (h, caps);
38
+ gst_harness_push_event (h, gst_event_new_eos ());
39
+
40
+ while (TRUE) {
41
+ GstEvent *event = gst_harness_pull_event (h);
42
+ fail_unless (event);
43
+
44
+ if (GST_EVENT_TYPE (event) == GST_EVENT_CAPS) {
45
+ GstStructure *s;
46
+ gint width, height;
47
+
48
+ gst_event_parse_caps (event, &caps);
49
+ s = gst_caps_get_structure (caps, 0);
50
+
51
+ fail_unless (gst_structure_get_int (s, "width", &width));
52
+ fail_unless_equals_int (width, 1280);
53
+ fail_unless (gst_structure_get_int (s, "height", &height));
54
+ fail_unless_equals_int (height, 720);
55
+
56
+ gst_event_unref (event);
57
+ break;
58
+ }
59
+
60
+ gst_event_unref (event);
61
+ }
62
+
63
+ gst_harness_teardown (h);
64
+}
65
+
66
+GST_END_TEST;
67
68
static Suite *
69
h265parse_harnessed_suite (void)
70
71
72
tcase_add_test (tc_chain, test_drain);
73
74
+ tcase_add_test (tc_chain, test_invalid_sei_in_hvcc);
75
+
76
return s;
77
}
78
79