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 8
gstreamer-plugins-bad-codecs.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Wed Oct 26 13:32:09 UTC 2022 - Bjørn Lie <zaitor@opensuse.org>
4
+
5
+- Update to version 1.20.4
6
+
7
+-------------------------------------------------------------------
8
Sat Jun 25 13:49:39 UTC 2022 - Bjørn Lie <zaitor@opensuse.org>
9
10
- Update to version 1.20.3
11
gstreamer-plugins-bad-codecs.spec
Changed
10
1
2
%define _version 1.20.0
3
4
Name: gstreamer-plugins-bad-codecs
5
-Version: 1.20.3
6
+Version: 1.20.4
7
Release: 0
8
Summary: Codecs/plugins for gstreamer-plugins-bad
9
License: LGPL-2.1-or-later
10
gst-plugins-bad-1.20.3.tar.xz/ChangeLog -> gst-plugins-bad-1.20.4.tar.xz/ChangeLog
Changed
201
1
2
+=== release 1.20.4 ===
3
+
4
+2022-10-12 16:39:47 +0100 Tim-Philipp Müller <tim@centricular.com>
5
+
6
+ * NEWS:
7
+ * RELEASE:
8
+ * gst-plugins-bad.doap:
9
+ * meson.build:
10
+ Release 1.20.4
11
+
12
+2022-10-12 16:39:40 +0100 Tim-Philipp Müller <tim@centricular.com>
13
+
14
+ * ChangeLog:
15
+ Update ChangeLogs for 1.20.4
16
+
17
+2022-08-08 23:37:11 +0900 Seungha Yang <seungha@centricular.com>
18
+
19
+ * gst/mxf/mxfaes-bwf.c:
20
+ mxfdemux: Always calculate BlockAlign of raw audio
21
+ Workaround for nBlockAlign and nBitsPerSample mismatch. Always
22
+ use the formula described in the specification for BlockAlign value
23
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3149>
24
+
25
+2022-09-14 00:58:37 +0900 Seungha Yang <seungha@centricular.com>
26
+
27
+ * sys/nvcodec/gstnvdec.c:
28
+ nvdec: Fix for HEVC decoding when coded resolution is larger than display resolution
29
+ As documented in the SDK header, we should set coded width/height
30
+ values to the corresponding decoder configuration option,
31
+ instead of display resolution
32
+ Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1438
33
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3143>
34
+
35
+2022-09-22 22:39:31 +0900 Sangchul Lee <sc11.lee@samsung.com>
36
+
37
+ * ext/webrtc/gstwebrtcbin.c:
38
+ webrtcbin: Fix pointer dereference before null check
39
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3133>
40
+
41
+2022-10-05 15:59:03 +0900 Sangchul Lee <sc11.lee@samsung.com>
42
+
43
+ * ext/webrtc/gstwebrtcice.c:
44
+ webrtc/nice: Make sure to return NULL when validating turn server fails
45
+ It affects 'add-turn-server' signal action and 'turn-server' property
46
+ of webrtcbin.
47
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3124>
48
+
49
+2022-09-20 23:31:45 +0300 Mart Raudsepp <mart@leio.tech>
50
+
51
+ * gst/mpegtsdemux/mpegtsbase.c:
52
+ tsdemux: Don't trigger a program change when falling back to ignore-pcr behaviour
53
+ Since commit a79a756b79aa1675e we could change to ignore-pcr automatically at 500ms
54
+ into a live stream when no PCR is seen by then. However the stream counting in
55
+ program change detection was wrongly considering ignore-pcr programs to have a
56
+ separate PCR PID, even though we are actually ignoring the PCR PID completely,
57
+ resulting in an erroneous program switch getting triggered from the different
58
+ stream count. This in turn would send an EOS and switch out the pads for what
59
+ actually is still the same program, while we intended to simply apply a
60
+ workaround for broken encoders.
61
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3089>
62
+
63
+2022-03-25 14:25:02 +1100 Andrew Pritchard <andrew@vivi.io>
64
+
65
+ * sys/androidmedia/jni/gstamcsurfacetexture-jni.c:
66
+ Fix GstAmcSurfaceTexture segfault Check that `self` and `self->callback` are defined. `self` can be set to `NULL` in `remove_listener`, and `self->callback` can be set to `NULL` inside `gst_amc_surface_texture_jni_set_on_frame_available_callback`. This can cause a segfault since the Java object can outlive the C object, and call the callback after `remove_listener` is called.
67
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3056>
68
+
69
+2022-08-25 14:24:25 +0200 Piotr Brzeziński <piotr@centricular.com>
70
+
71
+ * sys/applemedia/avfvideosrc.m:
72
+ avfvideosrc: Fix wrong default framerate value
73
+ Current default G_MAXINT is not a correct value under any circumstances.
74
+ This creates an issue with screen capture, during which we currently do
75
+ not get any framerate info causing G_MAXINT to show up, where elements
76
+ downstream can possibly misbehave - for example, `vtenc` causes
77
+ a kernel panic.
78
+ Replace with 30/1 to avoid such scenarios.
79
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2946>
80
+
81
+2022-08-20 16:15:15 +0100 Philippe Normand <philn@igalia.com>
82
+
83
+ * ext/openh264/gstopenh264dec.cpp:
84
+ * ext/openh264/gstopenh264enc.cpp:
85
+ openh264: Register debug categories earlier
86
+ Otherwise the GST_ERROR message logged in case of ABI mismatch would be done on
87
+ an uninitialized category.
88
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2924>
89
+
90
+2022-08-20 16:57:27 +0100 Philippe Normand <philn@igalia.com>
91
+
92
+ * ext/openh264/gstopenh264enc.cpp:
93
+ openh264enc: Fix constrained-high encoding
94
+ constrained-high is high without B-frames, there is no EProfileIdc for this, so
95
+ assume high instead of hitting an assert down the line.
96
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2921>
97
+
98
+2022-08-14 22:31:29 -0400 Daniel Morin <daniel.morin@collabora.com>
99
+
100
+ * gst-libs/gst/play/gstplay-media-info.h:
101
+ * gst-libs/gst/play/gstplay-signal-adapter.h:
102
+ * gst-libs/gst/play/gstplay-video-overlay-video-renderer.h:
103
+ * gst-libs/gst/play/gstplay-video-renderer.h:
104
+ * gst-libs/gst/play/gstplay-visualization.h:
105
+ gst-play: missing cleanup for g_autoptr
106
+ Without this change cleanup function for g_autoptr is not defined for
107
+ GstPlayMediaInfo, GstPlaySignalAdapter, GstPlayVideoRenderer,
108
+ GstPlayVideoOverlayVideoRenderer and GstPlayVisualization. Cleanup
109
+ function was defined in gstplay.h, but missing in other header files.
110
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2904>
111
+
112
+2022-08-13 12:24:37 +0300 Sebastian Dröge <sebastian@centricular.com>
113
+
114
+ * gst-libs/gst/player/gstplayer-media-info.c:
115
+ player: Don't leak wrapped video info
116
+ Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1373
117
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
118
+
119
+2022-08-13 11:50:20 +0300 Sebastian Dröge <sebastian@centricular.com>
120
+
121
+ * gst-libs/gst/play/gstplay.c:
122
+ play: Make ownership of video-sink clearer in combination with floating references
123
+ And correctly handle the case of VideoRenderer::create_video_sink() not
124
+ actually returning a floating reference, which might be tricky for some
125
+ bindings.
126
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
127
+
128
+2022-08-13 11:49:08 +0300 Sebastian Dröge <sebastian@centricular.com>
129
+
130
+ * gst-libs/gst/play/gstplay.c:
131
+ play: Fix object construction
132
+ Ideally new() functions should simply call g_object_new() and not much
133
+ else, so let's do that here and handle all the construction properly in
134
+ a GObject way.
135
+ Now a play object created via g_object_new() is actually usable.
136
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
137
+
138
+2022-08-13 11:39:59 +0300 Sebastian Dröge <sebastian@centricular.com>
139
+
140
+ * gst-libs/gst/player/gstplayer.c:
141
+ player: Fix object construction
142
+ Ideally new() functions should simply call g_object_new() and not much
143
+ else, so let's do that here and handle all the construction properly in
144
+ a GObject way.
145
+ Now a player object created via g_object_new() is actually usable.
146
+ In addition, also fix the video-renderer property so that reading it
147
+ returns an object of the correct type.
148
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
149
+
150
+2022-08-13 11:30:35 +0300 Sebastian Dröge <sebastian@centricular.com>
151
+
152
+ * gst-libs/gst/player/gstplayer.c:
153
+ player: Release signal adapter on finalize
154
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2881>
155
+
156
+2022-08-12 18:24:41 +0300 Matthias Clasen <mclasen@redhat.com>
157
+
158
+ * gst-libs/gst/player/gstplayer.c:
159
+ gstplayer: Plug a memory leak
160
+ This was showing up as a memory leak in GTK's
161
+ gstreamer media backend:
162
+ 40 bytes in 1 blocks are definitely lost in loss record 18,487 of 40,868
163
+ at 0x484586F: malloc (vg_replace_malloc.c:381)
164
+ by 0x50D5278: g_malloc (gmem.c:125)
165
+ by 0x50EDBA5: g_slice_alloc (gslice.c:1072)
166
+ by 0x50EFBCC: g_slice_alloc0 (gslice.c:1098)
167
+ by 0x51F2F45: g_type_create_instance (gtype.c:1911)
168
+ by 0x51DAE37: g_object_new_internal (gobject.c:2011)
169
+ by 0x51DC080: g_object_new_with_properties (gobject.c:2181)
170
+ by 0x51DCB20: g_object_new (gobject.c:1821)
171
+ by 0x9855F86: UnknownInlinedFun (gstplayer-wrapped-video-renderer.c:109)
172
+ by 0x9855F86: gst_player_new (gstplayer.c:579)
173
+ Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1374
174
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2876>
175
+
176
+2022-07-30 02:29:49 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
177
+
178
+ * ext/sctp/usrsctp/meson.build:
179
+ meson: Don't pass -Werror to vendored code
180
+ Do it the correct way with libusrsctp -- override the option so that
181
+ it's done in a compiler-agnostic and future-proof way.
182
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2818>
183
+
184
+2022-05-25 18:40:30 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
185
+
186
+ * gst/rtmp2/gstrtmp2locationhandler.c:
187
+ * gst/rtmp2/rtmp/rtmpclient.c:
188
+ rtsp+rtmp: Forward warning added to tls-validation-flags to our users
189
+ With the 2.72 release, glib-networking developers have decided that
190
+ TLS certificate validation cannot be implemented correctly by them, so
191
+ they've deprecated it.
192
+ In a nutshell: a cert can have several validation errors, but there
193
+ are no guarantees that the TLS backend will return all those errors,
194
+ and things are made even more complicated by the fact that the list of
195
+ errors might refer to certs that are added for backwards-compat and
196
+ won't actually be used by the TLS library.
197
+ Our best option is to ignore the deprecation and pass the warning onto
198
+ users so they can make an appropriate security decision regarding
199
+ this.
200
+ We can't deprecate the tls-validation-flags property because it is
201
gst-plugins-bad-1.20.3.tar.xz/NEWS -> gst-plugins-bad-1.20.4.tar.xz/NEWS
Changed
201
1
2
3
GStreamer 1.20.0 was originally released on 3 February 2022.
4
5
-The latest bug-fix release in the 1.20 series is 1.20.3 and was released
6
-on 15 June 2022.
7
+The latest bug-fix release in the 1.20 series is 1.20.4 and was released
8
+on 12 October 2022.
9
10
See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
11
version of this document.
12
13
-Last updated: Monday 15 June 2022, 17:00 UTC (log)
14
+Last updated: Wednesday 12 October 2022, 15:00 UTC (log)
15
16
Introduction
17
18
19
20
- matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
21
(i.e. stream-format avc3 and hev1) which allows on-the-fly
22
- profile/level/resolution changes.
23
+ profile/level changes, and from 1.20.4 onwards also resolution
24
+ changes.
25
26
- matroskamux: new "cluster-timestamp-offset" property, useful for use
27
cases where the container timestamps should map to some absolute
28
29
- vp8enc: finish support for temporal scalability: two new properties
30
("temporal-scalability-layer-flags",
31
"temporal-scalability-layer-sync-flags") and a unit change on the
32
- "temporal-scalability-target-bitrate" property (now expects bps);
33
+ "temporal-scalability-target-bitrate” property (now expects bps);
34
also make temporal scalability details available to RTP payloaders
35
as buffer metadata.
36
37
38
names of internal elements anyway.
39
40
- The vp8enc element now expects bps (bits per second) for the
41
- "temporal-scalability-target-bitrate" property, which is consistent
42
+ "temporal-scalability-target-bitrate” property, which is consistent
43
with the "target-bitrate" property. Since additional configuration
44
is required with modern libvpx to make temporal scaling work anyway,
45
chances are that very few people will have been using this property
46
47
- List of Merge Requests applied in 1.20.3
48
- List of Issues fixed in 1.20.3
49
50
+1.20.4
51
+
52
+The fourth 1.20 bug-fix release (1.20.4) was released on 12 October
53
+2022.
54
+
55
+This release only contains bugfixes and it should be safe to upgrade
56
+from 1.20.x.
57
+
58
+Highlighted bugfixes in 1.20.4
59
+
60
+- avaudiodec: fix playback issue with WMA files, would throw an error
61
+ at EOS with FFmpeg 5.x
62
+- Fix deadlock when loading gst-editing-services plugin
63
+- Fix input buffering capacity in live mode for aggregator,
64
+ video/audio aggregator subclasses, muxers
65
+- glimagesink: fix crash on Android
66
+- subtitle handling and subtitle overlay fixes
67
+- matroska-mux: allow width + height changes for avc3|hev1|vp8|vp9
68
+- rtspsrc: fix control url handling for spec compliant servers and add
69
+ fallback for incompliant servers
70
+- WebRTC fixes
71
+- RTP retransmission fixes
72
+- video: fixes for formats with 4x subsampling and horizontal co-sited
73
+ chroma (Y41B, YUV9, YVU9 and IYU9)
74
+- macOS build and packaging fixes, in particular fix finding of gio
75
+ modules on macOS for https/TLS support
76
+- Performance improvements
77
+- Miscellaneous bug fixes, memory leak fixes, and other stability and
78
+ reliability improvements
79
+
80
+gstreamer
81
+
82
+- buffer: drop parent meta in deep copy/foreach_metadata
83
+- devicemonitor: Use a sync bus handler for the provider to avoid
84
+ accumulating all messages until the provider is stopped
85
+- element: Fix requesting of pads with string templates
86
+- gst: Protect initialization state with a recursive mutex
87
+- gst: add missing define guard for build without gstreamer debug
88
+ logging support
89
+- gst_init: Initialize static plugins just before dynamic plugins
90
+- info: Parse “NONE” as a valid level name
91
+- meta: Set the parent refcount of the GstStructure correctly
92
+- pluginloader: Don’t hang on short reads/writes
93
+- tracers: leaks: fix potentially invalid memory access when trying to
94
+ detect object type
95
+- tracers: leaks: fix object-refings.class flags
96
+- uri: When setting the same string again do nothing
97
+- value: Don’t loop forever when serializing invalid flag
98
+
99
+Base Libraries
100
+
101
+- aggregator: fix input buffering in live mode (was too low before in
102
+ many cases)
103
+- aggregator: fix reversed active/flushing arguments in debug log
104
+ output
105
+- aggregator: Reset EOS flag after receiving a stream-start event
106
+
107
+Core Elements
108
+
109
+- queue2: Hold the lock when modifying sinkresult
110
+- queue2: Fix deadlock when deactivate is called in pull mode
111
+
112
+gst-plugins-base
113
+
114
+- decodebin3: fix mutex leaks
115
+- decodebin3: Fix memory issues with active selection list
116
+- decodebin3, uridecodebin3, urisourcebin: Event handling fixes
117
+- decodebin3: fix EOS event sequence
118
+- parsebin: Avoid crash with unknown streams
119
+- parsebin: SIGSEGV during HLS stream using souphttpsrc
120
+- glimagesink: only allow setting the GL display/context if it is a
121
+ valid value
122
+- glimagesink: segfault on android devices
123
+- gstgl: Fix several memory leaks in macOS
124
+- opusenc: improve inband-fec property documentation
125
+- playsink: Hold a reference to the soft volume element
126
+- pbutils: descriptions: fix gst_pb_utils_get_caps_description_flags()
127
+- rtspurl: Use gst_uri_join_strings() in
128
+ gst_rtsp_url_get_request_uri_with_control() instead of a
129
+ hand-crafted, wrong version
130
+- rtspconnection: protect cancellable by a mutex
131
+- sdpmessage: Don’t set SDP medias from caps without
132
+ media/payload/clock-rate fields
133
+- samiparse: fix handling of self-closing tags
134
+- ssaparse: include required system headers for isspace() and sscanf()
135
+ functions
136
+- subparse: fix crash when parsing invalid timestamps in mpl2
137
+- subparse fixes
138
+- textoverlay: Don’t miscalculate text running times
139
+- videoaggregator: always convert when user provides converter-config
140
+- video: Fix scaling in 4x horizontal co-sited chroma (Y41B, YUV9,
141
+ YVU9 and IYU9)
142
+- xmptag: register musicbrainz tags during init to fix critical in
143
+ jpegparse
144
+- xvimagesink: fix image leaks in error code path
145
+- tests: skip unit tests for dependency-less elements that have been
146
+ disabled
147
+
148
+Tools
149
+
150
+- No changes
151
+
152
+gst-plugins-good
153
+
154
+- alpha: fix stride issue when out buffer has padding on right
155
+- isoff: Fix earliest pts field parse issue
156
+- matroska-mux: allow width + height changes for avc3|hev1|vp8|vp9
157
+- qt: Fix another instance of Qt/GStreamer both defining GLsync
158
+ differently
159
+- qtdemux: Avoid crash on reconfiguring.
160
+- qtdemux: guard against timestamp calculation overflow in gap event
161
+ loop
162
+- qtdemux: Don’t use invalid values from failed trex parsing
163
+- qtdemux: possible endless loop
164
+- rtpjitterbuffer: Only unschedule timers for late packets if they’re
165
+ not RTX packets and only once
166
+- rtpjitterbuffer: remove lost timer for out of order packets
167
+- rtspsrc: SETUP generates 400 Bad Request
168
+- rtspsrc: Retry SETUP with non-compliant URL resolution on “Bad
169
+ Request” and “Not found”
170
+- rtpst2022-1-fecenc: Drain column packets on EOS
171
+- rtpvp8depay: If configured to wait for keyframes after packet loss,
172
+ also do that if incomplete frames are detected
173
+- splitmuxsink: Don’t crash on EOS without buffer
174
+- splitmuxsrc: Stop pad task before cleanup
175
+- splitmuxsrc: don’t consider unlinked pads when deactivating part
176
+- soup: libsoup3 makes audio streaming stop
177
+- v4l2: fix critical when unreferencign buffer with no data
178
+- v4l2bufferpool: Fix debug trace
179
+- v4l2object: Add support for Apple’s full-range bt709 colorspace
180
+ variant 1:3:5:1
181
+- v4l2videocodec: workaround for failure to fully drain frames
182
+ preceding MIDSTREAM renegotiation
183
+- v4l2allocator: Fix invalid imported dmabuf fd
184
+- videoflip: Fix caps negotiation when method is selected
185
+- build failure trying to build jack examples
186
+- examples: don’t try and build jack examples if jack was disabled
187
+- tests: skip unit tests for dependency-less elements that have been
188
+ disabled
189
+
190
+gst-plugins-bad
191
+
192
+- amcvideodec: fix GstAmcSurfaceTexture segfault
193
+- audiobuffersplit: Fix drift that was introduced by wrong
194
+ calculations in gapless mode
195
+- avfvideosrc: Fix wrong default framerate value
196
+- audiovisualizer: fix buffer mapping to not increase refcount
197
+- d3d11decoder: Check 16K resolution support
198
+- d3d11videosink: Fix for force-aspect-ratio setting when rendering on
199
+ shared texture
200
+- mxfdemux: Always calculate BlockAlign of raw audio to work around
201
gst-plugins-bad-1.20.3.tar.xz/RELEASE -> gst-plugins-bad-1.20.4.tar.xz/RELEASE
Changed
7
1
2
-This is GStreamer gst-plugins-bad 1.20.3.
3
+This is GStreamer gst-plugins-bad 1.20.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.20.3.tar.xz/ext/dtls/gstdtlscertificate.c -> gst-plugins-bad-1.20.4.tar.xz/ext/dtls/gstdtlscertificate.c
Changed
57
1
2
#if OPENSSL_VERSION_NUMBER < 0x10100001L
3
rsa = RSA_generate_key (2048, RSA_F4, NULL, NULL);
4
#else
5
+ /*
6
+ * OpenSSL 3.0 deprecated all low-level APIs, so we need to rewrite this code
7
+ * to get rid of the warnings. The porting guide explicitly recommends
8
+ * disabling the warnings if this is not feasible, so let's do that for now:
9
+ * https://wiki.openssl.org/index.php/OpenSSL_3.0#Upgrading_to_OpenSSL_3.0_from_OpenSSL_1.1.1
10
+ */
11
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
12
rsa = RSA_new ();
13
+ G_GNUC_END_IGNORE_DEPRECATIONS;
14
if (rsa != NULL) {
15
BIGNUM *e = BN_new ();
16
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
17
if (e == NULL || !BN_set_word (e, RSA_F4)
18
|| !RSA_generate_key_ex (rsa, 2048, e, NULL)) {
19
RSA_free (rsa);
20
rsa = NULL;
21
}
22
+ G_GNUC_END_IGNORE_DEPRECATIONS;
23
if (e)
24
BN_free (e);
25
}
26
27
28
if (!rsa) {
29
GST_WARNING_OBJECT (self, "failed to generate RSA");
30
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
31
EVP_PKEY_free (priv->private_key);
32
+ G_GNUC_END_IGNORE_DEPRECATIONS;
33
priv->private_key = NULL;
34
X509_free (priv->x509);
35
priv->x509 = NULL;
36
return;
37
}
38
39
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
40
if (!EVP_PKEY_assign_RSA (priv->private_key, rsa)) {
41
GST_WARNING_OBJECT (self, "failed to assign RSA");
42
RSA_free (rsa);
43
+ G_GNUC_END_IGNORE_DEPRECATIONS;
44
rsa = NULL;
45
EVP_PKEY_free (priv->private_key);
46
priv->private_key = NULL;
47
48
49
/* Set a random 64 bit integer as serial number */
50
serial_number = BN_new ();
51
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
52
BN_pseudo_rand (serial_number, 64, 0, 0);
53
+ G_GNUC_END_IGNORE_DEPRECATIONS;
54
asn1_serial_number = X509_get_serialNumber (priv->x509);
55
BN_to_ASN1_INTEGER (serial_number, asn1_serial_number);
56
BN_free (serial_number);
57
gst-plugins-bad-1.20.3.tar.xz/ext/openh264/gstopenh264dec.cpp -> gst-plugins-bad-1.20.4.tar.xz/ext/openh264/gstopenh264dec.cpp
Changed
28
1
2
3
/* class initialization */
4
5
-G_DEFINE_TYPE_WITH_CODE (GstOpenh264Dec, gst_openh264dec,
6
- GST_TYPE_VIDEO_DECODER,
7
- GST_DEBUG_CATEGORY_INIT (gst_openh264dec_debug_category, "openh264dec", 0,
8
- "debug category for openh264dec element"));
9
+G_DEFINE_TYPE (GstOpenh264Dec, gst_openh264dec, GST_TYPE_VIDEO_DECODER);
10
GST_ELEMENT_REGISTER_DEFINE_CUSTOM (openh264dec, openh264dec_element_init);
11
12
static void
13
14
static gboolean
15
openh264dec_element_init (GstPlugin * plugin)
16
{
17
+ GST_DEBUG_CATEGORY_INIT (gst_openh264dec_debug_category, "openh264dec", 0,
18
+ "debug category for openh264dec element");
19
if (openh264_element_init (plugin))
20
return gst_element_register (plugin, "openh264dec", GST_RANK_MARGINAL,
21
GST_TYPE_OPENH264DEC);
22
23
- GST_ERROR ("Incorrect library version loaded, expecting %s", g_strCodecVer);
24
- return FALSE;
25
+ GST_ERROR ("Incorrect library version loaded, expecting %s", g_strCodecVer);
26
+ return FALSE;
27
}
28
gst-plugins-bad-1.20.3.tar.xz/ext/openh264/gstopenh264enc.cpp -> gst-plugins-bad-1.20.4.tar.xz/ext/openh264/gstopenh264enc.cpp
Changed
49
1
2
/* class initialization */
3
4
G_DEFINE_TYPE_WITH_CODE (GstOpenh264Enc, gst_openh264enc,
5
- GST_TYPE_VIDEO_ENCODER,
6
- G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL);
7
- GST_DEBUG_CATEGORY_INIT (gst_openh264enc_debug_category, "openh264enc", 0,
8
- "debug category for openh264enc element"));
9
+ GST_TYPE_VIDEO_ENCODER, G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL));
10
GST_ELEMENT_REGISTER_DEFINE_CUSTOM (openh264enc, openh264enc_element_init);
11
12
static void
13
14
15
gst_structure_set (s, "profile", G_TYPE_STRING, profile, NULL);
16
if (!g_strcmp0 (profile, "constrained-baseline") ||
17
- !g_strcmp0 (profile, "baseline"))
18
+ !g_strcmp0 (profile, "baseline"))
19
return PRO_BASELINE;
20
- else if (!g_strcmp0 (profile, "main"))
21
+ else if (!g_strcmp0 (profile, "main"))
22
return PRO_MAIN;
23
- else if (!g_strcmp0 (profile, "high"))
24
+ else if (!g_strcmp0 (profile, "high") ||
25
+ !g_strcmp0 (profile, "constrained-high"))
26
return PRO_HIGH;
27
28
g_assert_not_reached ();
29
30
31
return GST_FLOW_OK;
32
}
33
+
34
static gboolean
35
openh264enc_element_init (GstPlugin * plugin)
36
{
37
+ GST_DEBUG_CATEGORY_INIT (gst_openh264enc_debug_category, "openh264enc", 0,
38
+ "debug category for openh264enc element");
39
if (openh264_element_init (plugin))
40
return gst_element_register (plugin, "openh264enc", GST_RANK_MARGINAL,
41
- GST_TYPE_OPENH264ENC);
42
+ GST_TYPE_OPENH264ENC);
43
44
- GST_ERROR ("Incorrect library version loaded, expecting %s", g_strCodecVer);
45
- return FALSE;
46
+ GST_ERROR ("Incorrect library version loaded, expecting %s", g_strCodecVer);
47
+ return FALSE;
48
}
49
gst-plugins-bad-1.20.3.tar.xz/ext/openmpt/gstopenmptdec.c -> gst-plugins-bad-1.20.4.tar.xz/ext/openmpt/gstopenmptdec.c
Changed
16
1
2
* need to query it here, *before* any openmpt_module_select_subsong()
3
* calls are done */
4
{
5
+
6
+#if OPENMPT_API_VERSION_AT_LEAST(0,5,0)
7
+ gchar const *subsong_cstr =
8
+ openmpt_module_ctl_get_text (openmpt_dec->mod, "subsong");
9
+#else
10
gchar const *subsong_cstr =
11
openmpt_module_ctl_get (openmpt_dec->mod, "subsong");
12
+#endif
13
gchar *endptr;
14
15
if (subsong_cstr != NULL) {
16
gst-plugins-bad-1.20.3.tar.xz/ext/opus/gstopusheader.h -> gst-plugins-bad-1.20.4.tar.xz/ext/opus/gstopusheader.h
Changed
12
1
2
3
G_BEGIN_DECLS
4
5
+#define gst_opus_header_is_header gst_opusparse_header_is_header
6
+#define gst_opus_header_is_id_header gst_opusparse_header_is_id_header
7
+#define gst_opus_header_is_comment_header gst_opusparse_header_is_comment_header
8
+
9
extern gboolean gst_opus_header_is_header (GstBuffer * buf,
10
const char *magic, guint magic_size);
11
extern gboolean gst_opus_header_is_id_header (GstBuffer * buf);
12
gst-plugins-bad-1.20.3.tar.xz/ext/sctp/usrsctp/meson.build -> gst-plugins-bad-1.20.4.tar.xz/ext/sctp/usrsctp/meson.build
Changed
17
1
2
'-Wno-missing-declarations',
3
'-Wno-old-style-definition',
4
'-Wno-redundant-decls',
5
- '-Wno-error',
6
)
7
endif
8
9
10
c_args: compile_args,
11
dependencies: dependencies,
12
include_directories: include_dirs,
13
+ override_options: 'werror=false',
14
install: false)
15
16
# Declare dependency
17
gst-plugins-bad-1.20.3.tar.xz/ext/webrtc/gstwebrtcbin.c -> gst-plugins-bad-1.20.4.tar.xz/ext/webrtc/gstwebrtcbin.c
Changed
72
1
2
direction, "template", template, NULL);
3
gst_object_unref (template);
4
5
- gst_pad_set_event_function (GST_PAD (pad), gst_webrtcbin_sink_event);
6
- gst_pad_set_query_function (GST_PAD (pad), gst_webrtcbin_sink_query);
7
+ if (direction == GST_PAD_SINK) {
8
+ gst_pad_set_event_function (GST_PAD (pad), gst_webrtcbin_sink_event);
9
+ gst_pad_set_query_function (GST_PAD (pad), gst_webrtcbin_sink_query);
10
+ }
11
12
gst_pad_add_probe (GST_PAD (pad), GST_PAD_PROBE_TYPE_BUFFER |
13
GST_PAD_PROBE_TYPE_BUFFER_LIST, webrtc_bin_pad_buffer_cb, NULL, NULL);
14
15
16
/* this only looks at the first structure so we loop over the given caps
17
* and add each structure inside it piecemeal */
18
- gst_sdp_media_set_media_from_caps (format, media);
19
+ if (gst_sdp_media_set_media_from_caps (format, media) != GST_SDP_OK) {
20
+ GST_ERROR_OBJECT (webrtc,
21
+ "Failed to build media from caps %" GST_PTR_FORMAT
22
+ " for transceiver %" GST_PTR_FORMAT, format, trans);
23
+ gst_caps_unref (caps);
24
+ gst_caps_unref (format);
25
+ gst_structure_free (extmap);
26
+ return FALSE;
27
+ }
28
29
gst_caps_unref (format);
30
}
31
32
}
33
}
34
35
- gst_sdp_media_set_media_from_caps (answer_caps, media);
36
+ if (gst_sdp_media_set_media_from_caps (answer_caps, media) != GST_SDP_OK) {
37
+ GST_WARNING_OBJECT (webrtc,
38
+ "Could not build media from caps %" GST_PTR_FORMAT, answer_caps);
39
+ gst_clear_caps (&answer_caps);
40
+ gst_clear_caps (&offer_caps);
41
+ goto rejected;
42
+ }
43
44
_get_rtx_target_pt_and_ssrc_from_caps (answer_caps, &target_pt,
45
&target_ssrc);
46
47
continue;
48
}
49
50
+ if (!pad->trans) {
51
+ GST_LOG_OBJECT (pad, "doesn't have a transceiver");
52
+ tmp = tmp->next;
53
+ continue;
54
+ }
55
+
56
if (pad->trans->mline >= gst_sdp_message_medias_len (sd->sdp->sdp)) {
57
GST_DEBUG_OBJECT (pad, "not mentioned in this description. Skipping");
58
tmp = tmp->next;
59
60
tmp = tmp->next;
61
continue;
62
}
63
-
64
- if (!pad->trans) {
65
- GST_LOG_OBJECT (pad, "doesn't have a transceiver");
66
- tmp = tmp->next;
67
- continue;
68
- }
69
70
new_dir = pad->trans->direction;
71
if (new_dir != GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDONLY &&
72
gst-plugins-bad-1.20.3.tar.xz/ext/webrtc/gstwebrtcice.c -> gst-plugins-bad-1.20.4.tar.xz/ext/webrtc/gstwebrtcice.c
Changed
22
1
2
}
3
}
4
5
-out:
6
g_list_free (keys);
7
g_free (user);
8
g_free (pass);
9
10
return uri;
11
+
12
+out:
13
+ g_list_free (keys);
14
+ g_free (user);
15
+ g_free (pass);
16
+ gst_uri_unref (uri);
17
+
18
+ return NULL;
19
}
20
21
void
22
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-media-info.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-media-info.h
Changed
12
1
2
typedef struct _GstPlayMediaInfo GstPlayMediaInfo;
3
typedef struct _GstPlayMediaInfoClass GstPlayMediaInfoClass;
4
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlayMediaInfo, g_object_unref)
7
+#endif
8
+
9
GST_PLAY_API
10
GType gst_play_media_info_get_type (void);
11
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-signal-adapter.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-signal-adapter.h
Changed
12
1
2
*/
3
#define GST_PLAY_SIGNAL_ADAPTER_CAST(obj) ((GstPlaySignalAdapter*)(obj))
4
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlaySignalAdapter, g_object_unref)
7
+#endif
8
+
9
GST_PLAY_API
10
GType gst_play_signal_adapter_get_type (void);
11
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-video-overlay-video-renderer.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-video-overlay-video-renderer.h
Changed
12
1
2
*/
3
#define GST_PLAY_VIDEO_OVERLAY_VIDEO_RENDERER_CAST(obj) ((GstPlayVideoOverlayVideoRenderer*)(obj))
4
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlayVideoOverlayVideoRenderer, g_object_unref)
7
+#endif
8
+
9
GST_PLAY_API
10
GType gst_play_video_overlay_video_renderer_get_type (void);
11
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-video-renderer.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-video-renderer.h
Changed
12
1
2
GstElement * (*create_video_sink) (GstPlayVideoRenderer * self, GstPlay * play);
3
};
4
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlayVideoRenderer, g_object_unref)
7
+#endif
8
+
9
GST_PLAY_API
10
GType gst_play_video_renderer_get_type (void);
11
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay-visualization.h -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay-visualization.h
Changed
12
1
2
GST_PLAY_API
3
void gst_play_visualizations_free (GstPlayVisualization **viss);
4
5
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
6
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPlayVisualization, gst_play_visualization_free)
7
+#endif
8
+
9
G_END_DECLS
10
11
#endif /* __GST_PLAY_VISUALIZATION_H__ */
12
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/play/gstplay.c -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/play/gstplay.c
Changed
71
1
2
3
static gpointer gst_play_main (gpointer data);
4
5
+static void gst_play_set_playbin_video_sink (GstPlay * self);
6
+
7
static void gst_play_seek_internal_locked (GstPlay * self);
8
static void gst_play_stop_internal (GstPlay * self, gboolean transient);
9
static gboolean gst_play_pause_internal (gpointer user_data);
10
11
self->thread = g_thread_new ("GstPlay", gst_play_main, self);
12
while (!self->loop || !g_main_loop_is_running (self->loop))
13
g_cond_wait (&self->cond, &self->lock);
14
+
15
+ gst_play_set_playbin_video_sink (self);
16
g_mutex_unlock (&self->lock);
17
18
G_OBJECT_CLASS (parent_class)->constructed (object);
19
20
{
21
GstElement *video_sink = NULL;
22
23
- if (self->video_renderer != NULL)
24
+ if (self->video_renderer != NULL) {
25
video_sink =
26
gst_play_video_renderer_create_video_sink (self->video_renderer, self);
27
- if (video_sink)
28
+ }
29
+
30
+ if (video_sink) {
31
+ gst_object_ref_sink (video_sink);
32
g_object_set (self->playbin, "video-sink", video_sink, NULL);
33
+ gst_object_unref (video_sink);
34
+ }
35
}
36
37
static void
38
39
g_mutex_lock (&self->lock);
40
g_clear_object (&self->video_renderer);
41
self->video_renderer = g_value_dup_object (value);
42
- gst_play_set_playbin_video_sink (self);
43
+
44
+ // When the video_renderer is a GstPlayerWrappedVideoRenderer it cannot be set
45
+ // at construction time because it requires a valid pipeline which is created
46
+ // only after GstPlay has been constructed. That is why the video renderer is
47
+ // set *after* GstPlay has been constructed.
48
+ if (self->thread) {
49
+ gst_play_set_playbin_video_sink (self);
50
+ }
51
g_mutex_unlock (&self->lock);
52
break;
53
case PROP_URI:{
54
55
56
g_once (&once, gst_play_init_once, NULL);
57
58
- self = g_object_new (GST_TYPE_PLAY, NULL);
59
+ self = g_object_new (GST_TYPE_PLAY, "video-renderer", video_renderer, NULL);
60
61
- // When the video_renderer is a GstPlayerWrappedVideoRenderer it cannot be set
62
- // at construction time because it requires a valid pipeline which is created
63
- // only after GstPlay has been constructed. That is why the video renderer is
64
- // set *after* GstPlay has been constructed.
65
- if (video_renderer != NULL) {
66
- g_object_set (self, "video-renderer", video_renderer, NULL);
67
- }
68
gst_object_ref_sink (self);
69
70
if (video_renderer)
71
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/player/gstplayer-media-info.c -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/player/gstplayer-media-info.c
Changed
24
1
2
}
3
4
static void
5
+gst_player_video_info_finalize (GObject * object)
6
+{
7
+ GstPlayerVideoInfo *info = GST_PLAYER_VIDEO_INFO (object);
8
+
9
+ g_clear_object (&info->info);
10
+
11
+ G_OBJECT_CLASS (gst_player_video_info_parent_class)->finalize (object);
12
+}
13
+
14
+static void
15
gst_player_video_info_class_init (G_GNUC_UNUSED GstPlayerVideoInfoClass * klass)
16
{
17
- /* nothing to do here */
18
+ GObjectClass *gobject_class = (GObjectClass *) klass;
19
+
20
+ gobject_class->finalize = gst_player_video_info_finalize;
21
}
22
23
/**
24
gst-plugins-bad-1.20.3.tar.xz/gst-libs/gst/player/gstplayer.c -> gst-plugins-bad-1.20.4.tar.xz/gst-libs/gst/player/gstplayer.c
Changed
176
1
2
3
/* legacy */
4
GstPlayerSignalDispatcher *signal_dispatcher;
5
+ GstPlayerVideoRenderer *video_renderer;
6
};
7
8
struct _GstPlayerClass
9
10
const GValue * value, GParamSpec * pspec);
11
static void gst_player_get_property (GObject * object, guint prop_id,
12
GValue * value, GParamSpec * pspec);
13
+static void gst_player_constructed (GObject * object);
14
15
static void
16
-gst_player_init (G_GNUC_UNUSED GstPlayer * self)
17
+gst_player_init (GstPlayer * self)
18
{
19
-
20
+ self->play = gst_play_new (NULL);
21
}
22
23
static void
24
25
gobject_class->set_property = gst_player_set_property;
26
gobject_class->get_property = gst_player_get_property;
27
gobject_class->finalize = gst_player_finalize;
28
+ gobject_class->constructed = gst_player_constructed;
29
30
param_specsPROP_VIDEO_RENDERER =
31
g_param_spec_object ("video-renderer",
32
"Video Renderer", "Video renderer to use for rendering videos",
33
GST_TYPE_PLAYER_VIDEO_RENDERER,
34
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
35
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
36
37
param_specsPROP_SIGNAL_DISPATCHER =
38
g_param_spec_object ("signal-dispatcher",
39
40
41
if (self->signal_dispatcher)
42
g_object_unref (self->signal_dispatcher);
43
+ if (self->video_renderer)
44
+ g_object_unref (self->video_renderer);
45
+ if (self->signal_adapter)
46
+ g_object_unref (self->signal_adapter);
47
if (self->play)
48
gst_object_unref (self->play);
49
50
51
case PROP_SIGNAL_DISPATCHER:
52
self->signal_dispatcher = g_value_dup_object (value);
53
break;
54
+ case PROP_VIDEO_RENDERER:
55
+ self->video_renderer = g_value_dup_object (value);
56
+ break;
57
default:
58
g_object_set_property (G_OBJECT (self->play),
59
g_param_spec_get_name (pspec), value);
60
61
GstPlayer *self = GST_PLAYER (object);
62
63
switch (prop_id) {
64
+ case PROP_VIDEO_RENDERER:
65
+ g_value_set_object (value, self->video_renderer);
66
+ break;
67
case PROP_MEDIA_INFO:
68
g_value_take_object (value, gst_player_get_media_info (self));
69
break;
70
71
g_signal_emit (self, signalsSIGNAL_SEEK_DONE, 0, time);
72
}
73
74
-/**
75
- * gst_player_new:
76
- * @video_renderer: (transfer full) (allow-none): GstPlayerVideoRenderer to use
77
- * @signal_dispatcher: (transfer full) (allow-none): GstPlayerSignalDispatcher to use
78
- *
79
- * Creates a new #GstPlayer instance that uses @signal_dispatcher to dispatch
80
- * signals to some event loop system, or emits signals directly if NULL is
81
- * passed. See gst_player_g_main_context_signal_dispatcher_new().
82
- *
83
- * Video is going to be rendered by @video_renderer, or if %NULL is provided
84
- * no special video set up will be done and some default handling will be
85
- * performed.
86
- *
87
- * Returns: (transfer full): a new #GstPlayer instance
88
- */
89
-GstPlayer *
90
-gst_player_new (GstPlayerVideoRenderer * video_renderer,
91
- GstPlayerSignalDispatcher * signal_dispatcher)
92
+static void
93
+gst_player_constructed (GObject * object)
94
{
95
- static GOnce once = G_ONCE_INIT;
96
- GstPlayer *self;
97
+ GstPlayer *self = GST_PLAYER (object);
98
GstPlayerVideoRenderer *renderer = NULL;
99
100
- g_once (&once, gst_player_init_once, NULL);
101
-
102
- self =
103
- g_object_new (GST_TYPE_PLAYER, "signal-dispatcher", signal_dispatcher,
104
- NULL);
105
-
106
- self->play = gst_play_new (NULL);
107
+ G_OBJECT_CLASS (parent_class)->constructed (object);
108
109
- if (video_renderer != NULL) {
110
- renderer = gst_player_wrapped_video_renderer_new (video_renderer, self);
111
+ if (self->video_renderer != NULL) {
112
+ renderer =
113
+ gst_player_wrapped_video_renderer_new (self->video_renderer, self);
114
g_object_set (self->play, "video-renderer",
115
GST_PLAY_VIDEO_RENDERER (renderer), NULL);
116
+ g_object_unref (renderer);
117
}
118
119
- if (signal_dispatcher != NULL) {
120
+ if (self->signal_dispatcher != NULL) {
121
GMainContext *context = NULL;
122
123
- g_object_get (signal_dispatcher, "application-context", &context, NULL);
124
+ g_object_get (self->signal_dispatcher, "application-context", &context,
125
+ NULL);
126
self->signal_adapter =
127
gst_play_signal_adapter_new_with_main_context (self->play, context);
128
g_main_context_unref (context);
129
130
self->signal_adapter = gst_play_signal_adapter_new (self->play);
131
}
132
133
- gst_object_ref_sink (self);
134
-
135
g_signal_connect (self->signal_adapter, "uri-loaded",
136
G_CALLBACK (uri_loaded_cb), self);
137
g_signal_connect (self->signal_adapter, "position-updated",
138
139
self);
140
g_signal_connect (self->signal_adapter, "seek-done",
141
G_CALLBACK (seek_done_cb), self);
142
+}
143
+
144
+/**
145
+ * gst_player_new:
146
+ * @video_renderer: (transfer full) (allow-none): GstPlayerVideoRenderer to use
147
+ * @signal_dispatcher: (transfer full) (allow-none): GstPlayerSignalDispatcher to use
148
+ *
149
+ * Creates a new #GstPlayer instance that uses @signal_dispatcher to dispatch
150
+ * signals to some event loop system, or emits signals directly if NULL is
151
+ * passed. See gst_player_g_main_context_signal_dispatcher_new().
152
+ *
153
+ * Video is going to be rendered by @video_renderer, or if %NULL is provided
154
+ * no special video set up will be done and some default handling will be
155
+ * performed.
156
+ *
157
+ * Returns: (transfer full): a new #GstPlayer instance
158
+ */
159
+GstPlayer *
160
+gst_player_new (GstPlayerVideoRenderer * video_renderer,
161
+ GstPlayerSignalDispatcher * signal_dispatcher)
162
+{
163
+ static GOnce once = G_ONCE_INIT;
164
+ GstPlayer *self;
165
+
166
+ g_once (&once, gst_player_init_once, NULL);
167
+
168
+ self =
169
+ g_object_new (GST_TYPE_PLAYER, "signal-dispatcher", signal_dispatcher,
170
+ "video-renderer", video_renderer, NULL);
171
+
172
+ gst_object_ref_sink (self);
173
174
if (video_renderer)
175
g_object_unref (video_renderer);
176
gst-plugins-bad-1.20.3.tar.xz/gst-plugins-bad.doap -> gst-plugins-bad-1.20.4.tar.xz/gst-plugins-bad.doap
Changed
18
1
2
3
<release>
4
<Version>
5
+ <revision>1.20.4</revision>
6
+ <branch>1.20</branch>
7
+ <name></name>
8
+ <created>2022-10-12</created>
9
+ <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.20.4.tar.xz" />
10
+ </Version>
11
+ </release>
12
+
13
+ <release>
14
+ <Version>
15
<revision>1.20.3</revision>
16
<branch>1.20</branch>
17
<name></name>
18
gst-plugins-bad-1.20.3.tar.xz/gst/audiobuffersplit/gstaudiobuffersplit.c -> gst-plugins-bad-1.20.4.tar.xz/gst/audiobuffersplit/gstaudiobuffersplit.c
Changed
154
1
2
avail_samples, GST_SECOND, rate * self->in_segment.rate);
3
}
4
5
- if (self->gapless) {
6
- if (self->current_offset != -1) {
7
- GST_DEBUG_OBJECT (self,
8
- "Got discont in gapless mode: Current running time %" GST_TIME_FORMAT
9
- ", current end running time %" GST_TIME_FORMAT
10
- ", running time after discont %" GST_TIME_FORMAT,
11
- GST_TIME_ARGS (current_rt),
12
- GST_TIME_ARGS (current_rt_end), GST_TIME_ARGS (input_rt));
13
+ if (self->gapless && self->current_offset != -1) {
14
+ GST_DEBUG_OBJECT (self,
15
+ "Got discont in gapless mode: Current running time %" GST_TIME_FORMAT
16
+ ", current end running time %" GST_TIME_FORMAT
17
+ ", running time after discont %" GST_TIME_FORMAT,
18
+ GST_TIME_ARGS (current_rt),
19
+ GST_TIME_ARGS (current_rt_end), GST_TIME_ARGS (input_rt));
20
21
- new_offset =
22
- gst_util_uint64_scale (current_rt - self->resync_rt,
23
- rate * ABS (self->in_segment.rate), GST_SECOND);
24
- if (current_rt < self->resync_rt) {
25
- guint64 drop_samples;
26
+ new_offset =
27
+ gst_util_uint64_scale (input_rt - self->resync_rt,
28
+ rate * ABS (self->in_segment.rate), GST_SECOND);
29
+ if (input_rt < self->resync_rt) {
30
+ guint64 drop_samples;
31
32
- new_offset =
33
- gst_util_uint64_scale (self->resync_rt -
34
- current_rt, rate * ABS (self->in_segment.rate), GST_SECOND);
35
- drop_samples = self->current_offset + avail_samples + new_offset;
36
+ new_offset =
37
+ gst_util_uint64_scale (self->resync_rt -
38
+ input_rt, rate * ABS (self->in_segment.rate), GST_SECOND);
39
+ drop_samples = self->current_offset + avail_samples + new_offset;
40
41
+ GST_DEBUG_OBJECT (self,
42
+ "Dropping %" G_GUINT64_FORMAT " samples (%" GST_TIME_FORMAT ")",
43
+ drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
44
+ GST_SECOND, rate)));
45
+ self->drop_samples = drop_samples;
46
+ discont = FALSE;
47
+ } else if (new_offset > self->current_offset + avail_samples) {
48
+ guint64 silence_samples =
49
+ new_offset - (self->current_offset + avail_samples);
50
+ const GstAudioFormatInfo *info = gst_audio_format_get_info (format);
51
+ GstClockTime silence_time =
52
+ gst_util_uint64_scale (silence_samples, GST_SECOND, rate);
53
+
54
+ if (silence_time > self->max_silence_time) {
55
GST_DEBUG_OBJECT (self,
56
- "Dropping %" G_GUINT64_FORMAT " samples (%" GST_TIME_FORMAT ")",
57
- drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
58
- GST_SECOND, rate)));
59
- discont = FALSE;
60
- } else if (new_offset > self->current_offset + avail_samples) {
61
- guint64 silence_samples =
62
- new_offset - (self->current_offset + avail_samples);
63
- const GstAudioFormatInfo *info = gst_audio_format_get_info (format);
64
- GstClockTime silence_time =
65
- gst_util_uint64_scale (silence_samples, GST_SECOND, rate);
66
-
67
- if (silence_time > self->max_silence_time) {
68
- GST_DEBUG_OBJECT (self,
69
- "Not inserting %" G_GUINT64_FORMAT " samples of silence (%"
70
- GST_TIME_FORMAT " exceeds maximum %" GST_TIME_FORMAT ")",
71
- silence_samples, GST_TIME_ARGS (silence_time),
72
- GST_TIME_ARGS (self->max_silence_time));
73
- } else {
74
- GST_DEBUG_OBJECT (self,
75
- "Inserting %" G_GUINT64_FORMAT " samples of silence (%"
76
- GST_TIME_FORMAT ")", silence_samples,
77
- GST_TIME_ARGS (silence_time));
78
-
79
- /* Insert silence buffers to fill the gap in 1s chunks */
80
- while (silence_samples > 0) {
81
- guint n_samples = MIN (silence_samples, rate);
82
- GstBuffer *silence;
83
- GstMapInfo map;
84
-
85
- silence = gst_buffer_new_and_alloc (n_samples * bpf);
86
- GST_BUFFER_FLAG_SET (silence, GST_BUFFER_FLAG_GAP);
87
- gst_buffer_map (silence, &map, GST_MAP_WRITE);
88
- gst_audio_format_info_fill_silence (info, map.data, map.size);
89
- gst_buffer_unmap (silence, &map);
90
-
91
- gst_adapter_push (self->adapter, silence);
92
- ret =
93
- gst_audio_buffer_split_output (self, FALSE, rate, bpf,
94
- samples_per_buffer);
95
- if (ret != GST_FLOW_OK)
96
- return ret;
97
-
98
- silence_samples -= n_samples;
99
- }
100
- discont = FALSE;
101
- }
102
- } else if (new_offset < self->current_offset + avail_samples) {
103
- guint64 drop_samples =
104
- self->current_offset + avail_samples - new_offset;
105
-
106
+ "Not inserting %" G_GUINT64_FORMAT " samples of silence (%"
107
+ GST_TIME_FORMAT " exceeds maximum %" GST_TIME_FORMAT ")",
108
+ silence_samples, GST_TIME_ARGS (silence_time),
109
+ GST_TIME_ARGS (self->max_silence_time));
110
+ } else {
111
GST_DEBUG_OBJECT (self,
112
- "Dropping %" G_GUINT64_FORMAT " samples (%" GST_TIME_FORMAT ")",
113
- drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
114
- GST_SECOND, rate)));
115
- self->drop_samples = drop_samples;
116
+ "Inserting %" G_GUINT64_FORMAT " samples of silence (%"
117
+ GST_TIME_FORMAT ")", silence_samples, GST_TIME_ARGS (silence_time));
118
+
119
+ /* Insert silence buffers to fill the gap in 1s chunks */
120
+ while (silence_samples > 0) {
121
+ guint n_samples = MIN (silence_samples, rate);
122
+ GstBuffer *silence;
123
+ GstMapInfo map;
124
+
125
+ silence = gst_buffer_new_and_alloc (n_samples * bpf);
126
+ GST_BUFFER_FLAG_SET (silence, GST_BUFFER_FLAG_GAP);
127
+ gst_buffer_map (silence, &map, GST_MAP_WRITE);
128
+ gst_audio_format_info_fill_silence (info, map.data, map.size);
129
+ gst_buffer_unmap (silence, &map);
130
+
131
+ gst_adapter_push (self->adapter, silence);
132
+ ret =
133
+ gst_audio_buffer_split_output (self, FALSE, rate, bpf,
134
+ samples_per_buffer);
135
+ if (ret != GST_FLOW_OK)
136
+ return ret;
137
+
138
+ silence_samples -= n_samples;
139
+ }
140
discont = FALSE;
141
}
142
+ } else if (new_offset < self->current_offset + avail_samples) {
143
+ guint64 drop_samples = self->current_offset + avail_samples - new_offset;
144
+
145
+ GST_DEBUG_OBJECT (self,
146
+ "Dropping %" G_GUINT64_FORMAT " samples (%" GST_TIME_FORMAT ")",
147
+ drop_samples, GST_TIME_ARGS (gst_util_uint64_scale (drop_samples,
148
+ GST_SECOND, rate)));
149
+ self->drop_samples = drop_samples;
150
+ discont = FALSE;
151
}
152
}
153
154
gst-plugins-bad-1.20.3.tar.xz/gst/mpegtsdemux/mpegtsbase.c -> gst-plugins-bad-1.20.4.tar.xz/gst/mpegtsdemux/mpegtsbase.c
Changed
12
1
2
sawpcrpid = TRUE;
3
}
4
5
- /* If the pcr is not shared with an existing stream, we'll have one extra stream */
6
- if (!sawpcrpid)
7
+ /* If we have a PCR PID and the pcr is not shared with an existing stream, we'll have one extra stream */
8
+ if (!sawpcrpid && !base->ignore_pcr)
9
nbstreams += 1;
10
11
if (nbstreams != g_list_length (oldprogram->stream_list)) {
12
gst-plugins-bad-1.20.3.tar.xz/gst/mxf/mxfaes-bwf.c -> gst-plugins-bad-1.20.4.tar.xz/gst/mxf/mxfaes-bwf.c
Changed
40
1
2
GST_ERROR ("Invalid descriptor");
3
return NULL;
4
}
5
- if (wa_descriptor && wa_descriptor->block_align != 0)
6
- block_align = wa_descriptor->block_align;
7
- else
8
- block_align =
9
- (GST_ROUND_UP_8 (descriptor->quantization_bits) *
10
- descriptor->channel_count) / 8;
11
+
12
+ /* XXX: block align value can be carried via audio essential descriptor but
13
+ * there are some files with broken block align value.
14
+ * Calculates the value always */
15
+ block_align =
16
+ (GST_ROUND_UP_8 (descriptor->quantization_bits) *
17
+ descriptor->channel_count) / 8;
18
19
audio_format =
20
gst_audio_format_build_integer (block_align !=
21
22
return NULL;
23
}
24
25
- if (wa_descriptor && wa_descriptor->block_align != 0)
26
- block_align = wa_descriptor->block_align;
27
- else
28
- block_align =
29
- (GST_ROUND_UP_8 (descriptor->quantization_bits) *
30
- descriptor->channel_count) / 8;
31
+ /* XXX: block align value can be carried via audio essential descriptor but
32
+ * there are some files with broken block align value.
33
+ * Calculates the value always */
34
+ block_align =
35
+ (GST_ROUND_UP_8 (descriptor->quantization_bits) *
36
+ descriptor->channel_count) / 8;
37
38
audio_format =
39
gst_audio_format_build_integer (block_align !=
40
gst-plugins-bad-1.20.3.tar.xz/gst/proxy/gstproxysink.c -> gst-plugins-bad-1.20.4.tar.xz/gst/proxy/gstproxysink.c
Changed
177
1
2
GST_ELEMENT_REGISTER_DEFINE (proxysink, "proxysink", GST_RANK_NONE,
3
GST_TYPE_PROXY_SINK);
4
5
+static void gst_proxy_sink_dispose (GObject * object);
6
static gboolean gst_proxy_sink_sink_query (GstPad * pad, GstObject * parent,
7
GstQuery * query);
8
static GstFlowReturn gst_proxy_sink_sink_chain (GstPad * pad,
9
10
static void
11
gst_proxy_sink_class_init (GstProxySinkClass * klass)
12
{
13
- GstElementClass *gstelement_class = (GstElementClass *) klass;
14
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
15
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
16
17
GST_DEBUG_CATEGORY_INIT (gst_proxy_sink_debug, "proxysink", 0, "proxy sink");
18
19
+ object_class->dispose = gst_proxy_sink_dispose;
20
+
21
gstelement_class->change_state = gst_proxy_sink_change_state;
22
gstelement_class->send_event = gst_proxy_sink_send_event;
23
gstelement_class->query = gst_proxy_sink_query;
24
25
GST_OBJECT_FLAG_SET (self, GST_ELEMENT_FLAG_SINK);
26
}
27
28
+static void
29
+gst_proxy_sink_dispose (GObject * object)
30
+{
31
+ GstProxySink *self = GST_PROXY_SINK (object);
32
+
33
+ g_weak_ref_clear (&self->proxysrc);
34
+
35
+ G_OBJECT_CLASS (parent_class)->dispose (object);
36
+}
37
+
38
static GstStateChangeReturn
39
gst_proxy_sink_change_state (GstElement * element, GstStateChange transition)
40
{
41
42
switch (transition) {
43
case GST_STATE_CHANGE_READY_TO_PAUSED:
44
self->pending_sticky_events = FALSE;
45
+ self->sent_stream_start = FALSE;
46
+ self->sent_caps = FALSE;
47
break;
48
default:
49
break;
50
51
52
typedef struct
53
{
54
+ GstProxySink *self;
55
GstPad *otherpad;
56
GstFlowReturn ret;
57
} CopyStickyEventsData;
58
59
gpointer user_data)
60
{
61
CopyStickyEventsData *data = user_data;
62
+ GstProxySink *self = data->self;
63
64
data->ret = gst_pad_store_sticky_event (data->otherpad, *event);
65
+ switch (GST_EVENT_TYPE (*event)) {
66
+ case GST_EVENT_STREAM_START:
67
+ if (data->ret != GST_FLOW_OK)
68
+ self->sent_stream_start = FALSE;
69
+ else
70
+ self->sent_stream_start = TRUE;
71
+ break;
72
+ case GST_EVENT_CAPS:
73
+ if (data->ret != GST_FLOW_OK)
74
+ self->sent_caps = FALSE;
75
+ else
76
+ self->sent_caps = TRUE;
77
+ break;
78
+ default:
79
+ break;
80
+ }
81
82
return data->ret == GST_FLOW_OK;
83
}
84
85
+static void
86
+gst_proxy_sink_send_sticky_events (GstProxySink * self, GstPad * pad,
87
+ GstPad * otherpad)
88
+{
89
+ if (self->pending_sticky_events || !self->sent_stream_start ||
90
+ !self->sent_caps) {
91
+ CopyStickyEventsData data;
92
+
93
+ data.self = self;
94
+ data.otherpad = otherpad;
95
+ data.ret = GST_FLOW_OK;
96
+
97
+ gst_pad_sticky_events_foreach (pad, copy_sticky_events, &data);
98
+ self->pending_sticky_events = data.ret != GST_FLOW_OK;
99
+ }
100
+}
101
+
102
static gboolean
103
gst_proxy_sink_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
104
{
105
106
GstProxySrc *src;
107
gboolean ret = FALSE;
108
gboolean sticky = GST_EVENT_IS_STICKY (event);
109
+ GstEventType event_type = GST_EVENT_TYPE (event);
110
111
GST_LOG_OBJECT (pad, "Got %s event", GST_EVENT_TYPE_NAME (event));
112
113
- if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_STOP)
114
+ if (event_type == GST_EVENT_FLUSH_STOP)
115
self->pending_sticky_events = FALSE;
116
117
src = g_weak_ref_get (&self->proxysrc);
118
119
GstPad *srcpad;
120
srcpad = gst_proxy_src_get_internal_srcpad (src);
121
122
- if (sticky && self->pending_sticky_events) {
123
- CopyStickyEventsData data = { srcpad, GST_FLOW_OK };
124
-
125
- gst_pad_sticky_events_foreach (pad, copy_sticky_events, &data);
126
- self->pending_sticky_events = data.ret != GST_FLOW_OK;
127
- }
128
+ if (sticky)
129
+ gst_proxy_sink_send_sticky_events (self, pad, srcpad);
130
131
ret = gst_pad_push_event (srcpad, event);
132
gst_object_unref (srcpad);
133
gst_object_unref (src);
134
135
+ switch (event_type) {
136
+ case GST_EVENT_STREAM_START:
137
+ self->sent_stream_start = ret;
138
+ break;
139
+ case GST_EVENT_CAPS:
140
+ self->sent_caps = ret;
141
+ break;
142
+ default:
143
+ break;
144
+ }
145
+
146
if (!ret && sticky) {
147
self->pending_sticky_events = TRUE;
148
ret = TRUE;
149
150
GstPad *srcpad;
151
srcpad = gst_proxy_src_get_internal_srcpad (src);
152
153
- if (self->pending_sticky_events) {
154
- CopyStickyEventsData data = { srcpad, GST_FLOW_OK };
155
-
156
- gst_pad_sticky_events_foreach (pad, copy_sticky_events, &data);
157
- self->pending_sticky_events = data.ret != GST_FLOW_OK;
158
- }
159
+ gst_proxy_sink_send_sticky_events (self, pad, srcpad);
160
161
ret = gst_pad_push (srcpad, buffer);
162
gst_object_unref (srcpad);
163
164
GstPad *srcpad;
165
srcpad = gst_proxy_src_get_internal_srcpad (src);
166
167
- if (self->pending_sticky_events) {
168
- CopyStickyEventsData data = { srcpad, GST_FLOW_OK };
169
-
170
- gst_pad_sticky_events_foreach (pad, copy_sticky_events, &data);
171
- self->pending_sticky_events = data.ret != GST_FLOW_OK;
172
- }
173
+ gst_proxy_sink_send_sticky_events (self, pad, srcpad);
174
175
ret = gst_pad_push_list (srcpad, list);
176
gst_object_unref (srcpad);
177
gst-plugins-bad-1.20.3.tar.xz/gst/proxy/gstproxysink.h -> gst-plugins-bad-1.20.4.tar.xz/gst/proxy/gstproxysink.h
Changed
10
1
2
3
/* Whether there are sticky events pending */
4
gboolean pending_sticky_events;
5
+ gboolean sent_stream_start;
6
+ gboolean sent_caps;
7
};
8
9
struct _GstProxySinkClass {
10
gst-plugins-bad-1.20.3.tar.xz/gst/rtmp2/gstrtmp2locationhandler.c -> gst-plugins-bad-1.20.4.tar.xz/gst/rtmp2/gstrtmp2locationhandler.c
Changed
24
1
2
g_object_interface_install_property (iface, g_param_spec_uint ("timeout",
3
"Timeout", "RTMP timeout in seconds", 0, G_MAXUINT, DEFAULT_TIMEOUT,
4
G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
5
+ /**
6
+ * GstRtmpLocationHandler::tls-validation-flags:
7
+ *
8
+ * TLS certificate validation flags used to validate server
9
+ * certificate.
10
+ *
11
+ * GLib guarantees that if certificate verification fails, at least one
12
+ * error will be set, but it does not guarantee that all possible errors
13
+ * will be set. Accordingly, you may not safely decide to ignore any
14
+ * particular type of error.
15
+ *
16
+ * For example, it would be incorrect to mask %G_TLS_CERTIFICATE_EXPIRED if
17
+ * you want to allow expired certificates, because this could potentially be
18
+ * the only error flag set even if other problems exist with the
19
+ * certificate.
20
+ */
21
g_object_interface_install_property (iface,
22
g_param_spec_flags ("tls-validation-flags", "TLS validation flags",
23
"TLS validation flags to use", G_TYPE_TLS_CERTIFICATE_FLAGS,
24
gst-plugins-bad-1.20.3.tar.xz/gst/rtmp2/rtmp/rtmpclient.c -> gst-plugins-bad-1.20.4.tar.xz/gst/rtmp2/rtmp/rtmpclient.c
Changed
12
1
2
GST_DEBUG ("Configuring TLS, validation flags 0x%02x",
3
data->location.tls_flags);
4
g_socket_client_set_tls (socket_client, TRUE);
5
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
6
g_socket_client_set_tls_validation_flags (socket_client,
7
data->location.tls_flags);
8
+ G_GNUC_END_IGNORE_DEPRECATIONS;
9
break;
10
11
default:
12
gst-plugins-bad-1.20.3.tar.xz/meson.build -> gst-plugins-bad-1.20.4.tar.xz/meson.build
Changed
16
1
2
project('gst-plugins-bad', 'c', 'cpp',
3
- version : '1.20.3',
4
+ version : '1.20.4',
5
meson_version : '>= 0.59',
6
default_options : 'warning_level=1',
7
'buildtype=debugoptimized' )
8
9
10
warning_c_flags =
11
'-Wmissing-prototypes',
12
- '-Wdeclaration-after-statement',
13
'-Wold-style-definition',
14
15
16
gst-plugins-bad-1.20.3.tar.xz/po/gst-plugins-bad-1.0.pot -> gst-plugins-bad-1.20.4.tar.xz/po/gst-plugins-bad-1.0.pot
Changed
10
1
2
msgstr ""
3
"Project-Id-Version: gst-plugins-bad-1.0\n"
4
"Report-Msgid-Bugs-To: \n"
5
-"POT-Creation-Date: 2022-06-15 23:37+0100\n"
6
+"POT-Creation-Date: 2022-10-12 16:40+0100\n"
7
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
"Language-Team: LANGUAGE <LL@li.org>\n"
10
gst-plugins-bad-1.20.3.tar.xz/sys/androidmedia/jni/gstamcsurfacetexture-jni.c -> gst-plugins-bad-1.20.4.tar.xz/sys/androidmedia/jni/gstamcsurfacetexture-jni.c
Changed
10
1
2
long long context, jobject surfaceTexture)
3
{
4
GstAmcSurfaceTextureJNI *self = JLONG_TO_GPOINTER (context);
5
+ if (!self || !self->callback)
6
+ return;
7
8
self->callback (GST_AMC_SURFACE_TEXTURE (self), self->user_data);
9
}
10
gst-plugins-bad-1.20.3.tar.xz/sys/applemedia/avfvideosrc.m -> gst-plugins-bad-1.20.4.tar.xz/sys/applemedia/avfvideosrc.m
Changed
10
1
2
/* crank up to 11. This is what the presets do, but we don't use the presets
3
* in ios >= 7.0 */
4
gst_structure_fixate_field_nearest_int (structure, "height", G_MAXINT);
5
- gst_structure_fixate_field_nearest_fraction (structure, "framerate", G_MAXINT, 1);
6
+ gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
7
8
return gst_caps_fixate (new_caps);
9
}
10
gst-plugins-bad-1.20.3.tar.xz/sys/d3d11/gstd3d11decoder.h -> gst-plugins-bad-1.20.4.tar.xz/sys/d3d11/gstd3d11decoder.h
Changed
10
1
2
3
static const GstDXVAResolution gst_dxva_resolutions = {
4
{1920, 1088}, {2560, 1440}, {3840, 2160}, {4096, 2160},
5
- {7680, 4320}, {8192, 4320}
6
+ {7680, 4320}, {8192, 4320}, {15360, 8640}, {16384, 8640}
7
};
8
9
gboolean gst_d3d11_decoder_util_is_legacy_device (GstD3D11Device * device);
10
gst-plugins-bad-1.20.3.tar.xz/sys/d3d11/gstd3d11videosink.cpp -> gst-plugins-bad-1.20.4.tar.xz/sys/d3d11/gstd3d11videosink.cpp
Changed
18
1
2
GST_INFO_OBJECT (self,
3
"Create dummy window for rendering on shared texture");
4
self->window = gst_d3d11_window_dummy_new (self->device);
5
- return TRUE;
6
+ goto done;
7
}
8
9
if (!self->window_id)
10
11
break;
12
}
13
14
+done:
15
if (!self->window) {
16
GST_ERROR_OBJECT (self, "Cannot create d3d11window");
17
return FALSE;
18
gst-plugins-bad-1.20.3.tar.xz/sys/nvcodec/gstnvdec.c -> gst-plugins-bad-1.20.4.tar.xz/sys/nvcodec/gstnvdec.c
Changed
12
1
2
}
3
4
GST_DEBUG_OBJECT (nvdec, "creating decoder");
5
- create_info.ulWidth = width;
6
- create_info.ulHeight = height;
7
+ create_info.ulWidth = format->coded_width;
8
+ create_info.ulHeight = format->coded_height;
9
create_info.ulNumDecodeSurfaces = nvdec->num_decode_surface;
10
create_info.CodecType = format->codec;
11
create_info.ChromaFormat = format->chroma_format;
12
gst-plugins-bad-1.20.3.tar.xz/sys/va/gstvaallocator.c -> gst-plugins-bad-1.20.4.tar.xz/sys/va/gstvaallocator.c
Changed
57
1
2
VASurfaceID surface;
3
guint32 i, fourcc, rt_format, export_flags;
4
GDestroyNotify buffer_destroy = NULL;
5
+ gsize object_offset4;
6
7
g_return_val_if_fail (GST_IS_VA_DMABUF_ALLOCATOR (allocator), FALSE);
8
9
10
11
for (i = 0; i < desc.num_objects; i++) {
12
gint fd = desc.objectsi.fd;
13
- gsize size = desc.objectsi.size > 0 ?
14
- desc.objectsi.size : _get_fd_size (fd);
15
+ /* don't rely on prime descriptor reported size since gallium drivers report
16
+ * different values */
17
+ gsize size = _get_fd_size (fd);
18
GstMemory *mem = gst_dmabuf_allocator_alloc (allocator, fd, size);
19
guint64 *drm_mod = g_new (guint64, 1);
20
21
+ if (size != desc.objectsi.size) {
22
+ GST_WARNING_OBJECT (self, "driver bug: fd size (%" G_GSIZE_FORMAT
23
+ ") differs from object descriptor size (%" G_GUINT32_FORMAT ")",
24
+ size, desc.objectsi.size);
25
+ }
26
+
27
+ object_offseti = gst_buffer_get_size (buffer);
28
gst_buffer_append_memory (buffer, mem);
29
buf->memsi = mem;
30
31
32
drm_mod, g_free);
33
34
if (G_UNLIKELY (info))
35
- GST_VIDEO_INFO_SIZE (info) += size;
36
+ GST_VIDEO_INFO_PLANE_OFFSET (info, i) = GST_VIDEO_INFO_SIZE (info);
37
38
GST_LOG_OBJECT (self, "buffer %p: new dmabuf %d / surface %#x %dx%d "
39
"size %" G_GSIZE_FORMAT " drm mod %#lx", buffer, fd, surface,
40
GST_VIDEO_INFO_WIDTH (&self->info), GST_VIDEO_INFO_HEIGHT (&self->info),
41
- GST_VIDEO_INFO_SIZE (&self->info), *drm_mod);
42
+ size, *drm_mod);
43
}
44
45
if (G_UNLIKELY (info)) {
46
+ GST_VIDEO_INFO_SIZE (info) = gst_buffer_get_size (buffer);
47
+
48
for (i = 0; i < desc.num_layers; i++) {
49
g_assert (desc.layersi.num_planes == 1);
50
- GST_VIDEO_INFO_PLANE_OFFSET (info, i) = desc.layersi.offset0;
51
+ GST_VIDEO_INFO_PLANE_OFFSET (info, i) =
52
+ object_offsetdesc.layersi.object_index0 +
53
+ desc.layersi.offset0;
54
GST_VIDEO_INFO_PLANE_STRIDE (info, i) = desc.layersi.pitch0;
55
}
56
} else {
57
gst-plugins-bad-1.20.3.tar.xz/sys/va/gstvah265dec.c -> gst-plugins-bad-1.20.4.tar.xz/sys/va/gstvah265dec.c
Changed
11
1
2
GstVaH265Dec *self = GST_VA_H265_DEC (decoder);
3
guint8 i;
4
5
+ if (!picture)
6
+ return 0xFF;
7
+
8
for (i = 0; i < 15; i++) {
9
VAPictureHEVC *ref_va_pic = &self->pic_param.base.ReferenceFramesi;
10
11
gst-plugins-bad-1.20.3.tar.xz/sys/wasapi/gstwasapiutil.c -> gst-plugins-bad-1.20.4.tar.xz/sys/wasapi/gstwasapiutil.c
Changed
92
1
2
{0xa7, 0xbf, 0xad, 0xdc, 0xa7, 0xc2, 0x60, 0xe2}
3
};
4
5
+/* Desktop only defines */
6
+#ifndef KSAUDIO_SPEAKER_MONO
7
+#define KSAUDIO_SPEAKER_MONO (SPEAKER_FRONT_CENTER)
8
+#endif
9
+#ifndef KSAUDIO_SPEAKER_1POINT1
10
+#define KSAUDIO_SPEAKER_1POINT1 (SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY)
11
+#endif
12
+#ifndef KSAUDIO_SPEAKER_STEREO
13
+#define KSAUDIO_SPEAKER_STEREO (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT)
14
+#endif
15
+#ifndef KSAUDIO_SPEAKER_2POINT1
16
+#define KSAUDIO_SPEAKER_2POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_LOW_FREQUENCY)
17
+#endif
18
+#ifndef KSAUDIO_SPEAKER_3POINT0
19
+#define KSAUDIO_SPEAKER_3POINT0 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER)
20
+#endif
21
+#ifndef KSAUDIO_SPEAKER_3POINT1
22
+#define KSAUDIO_SPEAKER_3POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
23
+ SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY)
24
+#endif
25
+#ifndef KSAUDIO_SPEAKER_QUAD
26
+#define KSAUDIO_SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
27
+ SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
28
+#endif
29
+#define KSAUDIO_SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
30
+ SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
31
+#ifndef KSAUDIO_SPEAKER_5POINT0
32
+#define KSAUDIO_SPEAKER_5POINT0 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | \
33
+ SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
34
+#endif
35
+#define KSAUDIO_SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
36
+ SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
37
+ SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
38
+#ifndef KSAUDIO_SPEAKER_7POINT0
39
+#define KSAUDIO_SPEAKER_7POINT0 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | \
40
+ SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
41
+ SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
42
+#endif
43
+#ifndef KSAUDIO_SPEAKER_7POINT1
44
+#define KSAUDIO_SPEAKER_7POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | \
45
+ SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | \
46
+ SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT | \
47
+ SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
48
+#endif
49
+
50
+static DWORD default_ch_masks = {
51
+ 0,
52
+ KSAUDIO_SPEAKER_MONO,
53
+ /* 2ch */
54
+ KSAUDIO_SPEAKER_STEREO,
55
+ /* 2.1ch */
56
+ /* KSAUDIO_SPEAKER_3POINT0 ? */
57
+ KSAUDIO_SPEAKER_2POINT1,
58
+ /* 4ch */
59
+ /* KSAUDIO_SPEAKER_3POINT1 or KSAUDIO_SPEAKER_SURROUND ? */
60
+ KSAUDIO_SPEAKER_QUAD,
61
+ /* 5ch */
62
+ KSAUDIO_SPEAKER_5POINT0,
63
+ /* 5.1ch */
64
+ KSAUDIO_SPEAKER_5POINT1,
65
+ /* 7ch */
66
+ KSAUDIO_SPEAKER_7POINT0,
67
+ /* 7.1ch */
68
+ KSAUDIO_SPEAKER_7POINT1,
69
+};
70
+
71
/* *INDENT-OFF* */
72
static struct
73
{
74
75
DWORD dwChannelMask = format->dwChannelMask;
76
GstAudioChannelPosition *pos = NULL;
77
78
+ if (nChannels > 2 && !dwChannelMask) {
79
+ GST_WARNING ("Unknown channel mask value for %d channel stream", nChannels);
80
+
81
+ if (nChannels >= G_N_ELEMENTS (default_ch_masks)) {
82
+ GST_ERROR ("Too many channels %d", nChannels);
83
+ return 0;
84
+ }
85
+
86
+ dwChannelMask = default_ch_masksnChannels;
87
+ }
88
+
89
pos = g_new (GstAudioChannelPosition, nChannels);
90
gst_wasapi_util_channel_position_all_none (nChannels, pos);
91
92
gst-plugins-bad-1.20.3.tar.xz/sys/wasapi2/gstwasapi2ringbuffer.cpp -> gst-plugins-bad-1.20.4.tar.xz/sys/wasapi2/gstwasapi2ringbuffer.cpp
Changed
19
1
2
if (buf->volume_object)
3
hr = buf->volume_object->SetMute (mute, nullptr);
4
else
5
- buf->volume_changed = TRUE;
6
+ buf->mute_changed = TRUE;
7
g_mutex_unlock (&buf->volume_lock);
8
9
return S_OK;
10
11
if (buf->volume_object)
12
hr = buf->volume_object->SetMasterVolume (volume, nullptr);
13
else
14
- buf->mute_changed = TRUE;
15
+ buf->volume_changed = TRUE;
16
g_mutex_unlock (&buf->volume_lock);
17
18
return hr;
19
gst-plugins-bad-1.20.4.tar.xz/tests/check/elements/proxysink.c
Added
112
1
2
+/* GStreamer
3
+ * Copyright (C) 2022 Seungha Yang <seungha@centricular.com>
4
+ *
5
+ * This library is free software; you can redistribute it and/or
6
+ * modify it under the terms of the GNU Library General Public
7
+ * License as published by the Free Software Foundation; either
8
+ * version 2 of the License, or (at your option) any later version.
9
+ *
10
+ * This library is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ * Library General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Library General Public
16
+ * License along with this library; if not, write to the
17
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
18
+ * Boston, MA 02110-1301, USA.
19
+ */
20
+
21
+#ifdef HAVE_CONFIG_H
22
+#include "config.h"
23
+#endif
24
+
25
+#include <gst/gst.h>
26
+#include <gst/check/gstcheck.h>
27
+#include <gst/check/gstharness.h>
28
+
29
+GST_START_TEST (test_flush_before_buffer)
30
+{
31
+ GstElement *sink, *src;
32
+ GstHarness *h_in;
33
+ GstHarness *h_out;
34
+ GstEvent *event;
35
+ GstSegment segment;
36
+ GstCaps *caps;
37
+ GstBuffer *buf;
38
+
39
+ sink = gst_element_factory_make ("proxysink", NULL);
40
+ src = gst_element_factory_make ("proxysrc", NULL);
41
+
42
+ g_object_set (src, "proxysink", sink, NULL);
43
+
44
+ h_in = gst_harness_new_with_element (sink, "sink", NULL);
45
+ h_out = gst_harness_new_with_element (src, NULL, "src");
46
+ gst_object_unref (sink);
47
+ gst_object_unref (src);
48
+
49
+ /* Activate only input side first, then push sticky events
50
+ * without buffer */
51
+ gst_harness_play (h_in);
52
+
53
+ event = gst_event_new_stream_start ("proxy-test-stream-start");
54
+ fail_unless (gst_harness_push_event (h_in, event));
55
+
56
+ caps = gst_caps_from_string ("foo/bar");
57
+ event = gst_event_new_caps (caps);
58
+ gst_caps_unref (caps);
59
+ fail_unless (gst_harness_push_event (h_in, event));
60
+
61
+ gst_segment_init (&segment, GST_FORMAT_TIME);
62
+ event = gst_event_new_segment (&segment);
63
+ fail_unless (gst_harness_push_event (h_in, event));
64
+
65
+ /* Now activate output side, sticky event and buffers should be
66
+ * serialized */
67
+ gst_harness_play (h_out);
68
+
69
+ event = gst_event_new_flush_start ();
70
+ fail_unless (gst_harness_push_event (h_in, event));
71
+
72
+ event = gst_event_new_flush_stop (TRUE);
73
+ fail_unless (gst_harness_push_event (h_in, event));
74
+
75
+ event = gst_event_new_segment (&segment);
76
+ fail_unless (gst_harness_push_event (h_in, event));
77
+
78
+ buf = gst_buffer_new_and_alloc (4);
79
+ GST_BUFFER_PTS (buf) = 0;
80
+ GST_BUFFER_DTS (buf) = 0;
81
+
82
+ /* There must be no critical warning regarding
83
+ * sticky-event and buffer flow order*/
84
+ fail_unless_equals_int (gst_harness_push (h_in, buf), GST_FLOW_OK);
85
+
86
+ event = gst_event_new_eos ();
87
+ fail_unless (gst_harness_push_event (h_in, event));
88
+
89
+ /* make sure everything has been forwarded */
90
+ fail_unless (gst_harness_pull_until_eos (h_out, &buf));
91
+ gst_buffer_unref (buf);
92
+
93
+ gst_harness_teardown (h_in);
94
+ gst_harness_teardown (h_out);
95
+}
96
+
97
+GST_END_TEST;
98
+
99
+static Suite *
100
+proxysink_suite (void)
101
+{
102
+ Suite *s = suite_create ("proxysink");
103
+ TCase *tc_basic = tcase_create ("general");
104
+
105
+ suite_add_tcase (s, tc_basic);
106
+ tcase_add_test (tc_basic, test_flush_before_buffer);
107
+
108
+ return s;
109
+}
110
+
111
+GST_CHECK_MAIN (proxysink);
112
gst-plugins-bad-1.20.3.tar.xz/tests/check/meson.build -> gst-plugins-bad-1.20.4.tar.xz/tests/check/meson.build
Changed
82
1
2
base_tests =
3
'elements/aesenc.c', not aes_dep.found(), aes_dep,
4
'elements/aesdec.c', not aes_dep.found(), aes_dep,
5
- 'elements/aiffparse.c',
6
- 'elements/asfmux.c',
7
- 'elements/autoconvert.c',
8
- 'elements/autovideoconvert.c',
9
- 'elements/avwait.c',
10
- 'elements/camerabin.c',
11
+ 'elements/aiffparse.c', get_option('aiff').disabled(),
12
+ 'elements/asfmux.c', get_option('asfmux').disabled(),
13
+ 'elements/autoconvert.c', get_option('autoconvert').disabled(),
14
+ 'elements/autovideoconvert.c', get_option('autoconvert').disabled(),
15
+ 'elements/avwait.c', get_option('timecode').disabled(),
16
+ 'elements/camerabin.c', get_option('camerabin2').disabled(),
17
'elements/ccconverter.c', not closedcaption_dep.found(), gstvideo_dep,
18
'elements/cccombiner.c', not closedcaption_dep.found(), ,
19
'elements/ccextractor.c', not closedcaption_dep.found(), ,
20
'elements/cudaconvert.c', false, gmodule_dep, gstgl_dep,
21
'elements/cudafilter.c', false, gmodule_dep, gstgl_dep,
22
'elements/d3d11colorconvert.c', host_machine.system() != 'windows', ,
23
- 'elements/gdpdepay.c',
24
- 'elements/gdppay.c',
25
+ 'elements/gdpdepay.c', get_option('gdp').disabled(),
26
+ 'elements/gdppay.c', get_option('gdp').disabled(),
27
'elements/h263parse.c', false, libparser_dep, gstcodecparsers_dep,
28
'elements/h264parse.c', false, libparser_dep, gstcodecparsers_dep,
29
'elements/h265parse.c', false, libparser_dep, gstcodecparsers_dep,
30
'elements/hlsdemux_m3u8.c', not hls_dep.found(), hls_dep,
31
- 'elements/id3mux.c',
32
- 'elements/interlace.c',
33
+ 'elements/id3mux.c', get_option('id3tag').disabled(),
34
+ 'elements/interlace.c', get_option('interlace').disabled(),
35
'elements/jpeg2000parse.c', false, libparser_dep, gstcodecparsers_dep,
36
'elements/line21.c', not closedcaption_dep.found(), ,
37
'elements/mfvideosrc.c', host_machine.system() != 'windows', ,
38
- 'elements/mpegtsdemux.c', false, gstmpegts_dep,
39
- 'elements/mpegtsmux.c', false, gstmpegts_dep,
40
+ 'elements/mpegtsdemux.c', get_option('mpegtsdemux').disabled(), gstmpegts_dep,
41
+ 'elements/mpegtsmux.c', get_option('mpegtsmux').disabled(), gstmpegts_dep,
42
'elements/mpeg4videoparse.c', false, libparser_dep, gstcodecparsers_dep,
43
'elements/mpegvideoparse.c', false, libparser_dep, gstcodecparsers_dep,
44
'elements/msdkh264enc.c', not have_msdk, msdk_dep,
45
- 'elements/mxfdemux.c',
46
- 'elements/mxfmux.c',
47
- 'elements/nvenc.c', false, gmodule_dep, gstgl_dep,
48
- 'elements/nvdec.c', not gstgl_dep.found(), gmodule_dep, gstgl_dep,
49
+ 'elements/mxfdemux.c', get_option('mxf').disabled(),
50
+ 'elements/mxfmux.c', get_option('mxf').disabled(),
51
'elements/svthevcenc.c', not svthevcenc_dep.found(), svthevcenc_dep,
52
'elements/openjpeg.c', not openjpeg_dep.found(), openjpeg_dep,
53
'elements/pcapparse.c', false, libparser_dep,
54
- 'elements/pnm.c',
55
+ 'elements/pnm.c', get_option('pnm').disabled(),
56
+ 'elements/proxysink.c', get_option('proxy').disabled(),
57
'elements/ristrtpext.c',
58
- 'elements/rtponvifparse.c',
59
- 'elements/rtponviftimestamp.c',
60
- 'elements/rtpsrc.c',
61
- 'elements/rtpsink.c',
62
- 'elements/switchbin.c',
63
- 'elements/videoframe-audiolevel.c',
64
+ 'elements/rtponvifparse.c', get_option('onvif').disabled(),
65
+ 'elements/rtponviftimestamp.c', get_option('onvif').disabled(),
66
+ 'elements/rtpsrc.c', get_option('rtp').disabled(),
67
+ 'elements/rtpsink.c', get_option('rtp').disabled(),
68
+ 'elements/switchbin.c', get_option('switchbin').disabled(),
69
+ 'elements/videoframe-audiolevel.c', get_option('videoframe_audiolevel').disabled(),
70
'elements/viewfinderbin.c',
71
'elements/vp9parse.c', false, gstcodecparsers_dep,
72
'elements/av1parse.c', false, gstcodecparsers_dep,
73
74
'elements/avtpcvfdepay.c', not avtp_dep.found(), avtp_dep,
75
'elements/avtpsink.c', not avtp_dep.found(), avtp_dep,
76
'elements/avtpsrc.c', not avtp_dep.found(), avtp_dep,
77
- 'elements/clockselect.c',
78
+ 'elements/clockselect.c', get_option('debugutils').disabled(),
79
'elements/curlhttpsink.c', not curl_dep.found(), curl_dep,
80
'elements/curlhttpsrc.c', not curl_dep.found(), curl_dep, gio_dep,
81
'elements/curlfilesink.c',
82