Changes of Revision 31

gstreamer-plugins-bad-codecs.changes Changed
x
 
1
@@ -1,4 +1,9 @@
2
 -------------------------------------------------------------------
3
+Mon Feb  3 09:28:58 UTC 2025 - Bjørn Lie <zaitor@opensuse.org>
4
+
5
+- Update to version 1.24.12
6
+
7
+-------------------------------------------------------------------
8
 Sat Jan 11 13:37:26 UTC 2025 - Bjørn Lie <zaitor@opensuse.org>
9
 
10
 - Update to version 1.24.11
11
gstreamer-plugins-bad-codecs.spec Changed
10
 
1
@@ -7,7 +7,7 @@
2
 %define _version 1.24.0
3
 
4
 Name:           gstreamer-plugins-bad-codecs
5
-Version:        1.24.11
6
+Version:        1.24.12
7
 Release:        0
8
 Summary:        Codecs/plugins for gstreamer-plugins-bad
9
 License:        LGPL-2.1-or-later
10
_service Changed
10
 
1
@@ -2,7 +2,7 @@
2
   <service name="download_url">
3
     <param name="host">gstreamer.freedesktop.org</param>
4
     <param name="protocol">https</param>
5
-    <param name="path">/src/gst-plugins-bad/gst-plugins-bad-1.24.11.tar.xz</param>
6
+    <param name="path">/src/gst-plugins-bad/gst-plugins-bad-1.24.12.tar.xz</param>
7
   </service>
8
   <service name="set_version" mode="buildtime"/>
9
 </services>
10
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ChangeLog -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ChangeLog Changed
190
 
1
@@ -1,3 +1,188 @@
2
+=== release 1.24.12 ===
3
+
4
+2025-01-29 20:12:29 +0000  Tim-Philipp Müller <tim@centricular.com>
5
+
6
+   * NEWS:
7
+   * RELEASE:
8
+   * gst-plugins-bad.doap:
9
+   * meson.build:
10
+     Release 1.24.12
11
+
12
+2024-12-30 21:59:03 +0100  Samuel Thibault <samuel.thibault@ens-lyon.org>
13
+
14
+   * ext/gtk/meson.build:
15
+   * tests/examples/gtk/meson.build:
16
+   * tests/examples/waylandsink/meson.build:
17
+     meson: Fix build with gtk3 but not wayland
18
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8260>
19
+
20
+2025-01-20 18:19:18 +0100  Andoni Morales Alastruey <ylatuya@gmail.com>
21
+
22
+   * sys/applemedia/vtdec.c:
23
+     vtdec: fix seeks hangs due to a race condition draining
24
+     If the drain function of the decoder triggered by FLUSH_START
25
+     is run while the output loop is running, once the output loop
26
+     finished vtdec->downstream_ret will be GST_FLOW_FLUSHING instead
27
+     of GST_FLOW_OK, which must not be treated as an error since
28
+     the queue is cleaned correctly as well.
29
+     Fix #4179
30
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8361>
31
+
32
+2025-01-23 13:20:50 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>
33
+
34
+   * ext/wpe/gstwpevideosrc.cpp:
35
+     wpe: remove glFlush() when filling buffer
36
+     According to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4162#note_2739338
37
+     it was introduced as workaround for tearing issues.
38
+     I do not experience any tearing without flushing on both nvidia and AMD
39
+     GPU, so I suppose it's no longer needed.
40
+     Slightly improve CPU usage according to my tests.
41
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8355>
42
+
43
+2025-01-20 18:37:23 +0200  Sebastian Dröge <sebastian@centricular.com>
44
+
45
+   * gst/mpegtsdemux/mpegtspacketizer.c:
46
+     tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true
47
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8332>
48
+
49
+2025-01-10 14:15:21 +0200  Sebastian Dröge <sebastian@centricular.com>
50
+
51
+   * sys/decklink/gstdecklinkvideosink.cpp:
52
+     decklinkvideosink: Fix handling of caps framerate in auto mode
53
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8306>
54
+
55
+2025-01-09 00:42:48 +0100  Carlos Bentzen <cadubentzen@igalia.com>
56
+
57
+   * ext/webrtc/gstwebrtcbin.c:
58
+   * tests/check/elements/webrtcbin.c:
59
+     webrtc: fix duplicate payload types with RTX and multiple video codecs
60
+     Before this patch, there could be duplicate payload types in offers that
61
+     have, within a media section, multiple codecs and RTX enabled:
62
+     ```
63
+     m=video 9 UDP/TLS/RTP/SAVPF 96 97 97 <-- HAS DUPLICATES
64
+     a=sendrecv
65
+     a=rtpmap:96 VP8/90000
66
+     a=rtcp-fb:96 nack
67
+     a=rtcp-fb:96 nack pli
68
+     a=rtcp-fb:96 ccm fir
69
+     a=rtcp-fb:96 transport-cc
70
+     a=rtpmap:97 H264/90000
71
+     a=rtcp-fb:97 nack
72
+     a=rtcp-fb:97 nack pli
73
+     a=rtcp-fb:97 ccm fir
74
+     a=rtcp-fb:97 transport-cc
75
+     a=rtpmap:97 rtx/90000  <--------- PT IS DUPLICATE
76
+     a=fmtp:97 apt=96
77
+     ```
78
+     Fix this by populating the media_mapping array with all media formats
79
+     rather than only the first one. The added test case reproduces the issue,
80
+     which fails without this patch.
81
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8294>
82
+
83
+2025-01-09 11:39:11 +0100  Edward Hervey <edward@centricular.com>
84
+
85
+   * sys/wasapi/gstwasapisink.c:
86
+     wasapi: Use signed value for can_frames
87
+     The can retrieval function can return negative values (which will be properly handled)
88
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293>
89
+
90
+2025-01-09 10:08:23 +0100  Edward Hervey <edward@centricular.com>
91
+
92
+   * sys/amfcodec/gstamfav1enc.cpp:
93
+   * sys/amfcodec/gstamfh264enc.cpp:
94
+   * sys/amfcodec/gstamfh265enc.cpp:
95
+     amfcodec: Add missing break statement
96
+     Setting frame-sad would also set ltr
97
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293>
98
+
99
+2025-01-06 09:57:33 +0100  Edward Hervey <edward@centricular.com>
100
+
101
+   * gst-libs/gst/codecparsers/gsth265bitwriter.c:
102
+     h265bitwriter: Don't use type too small
103
+     The computed `coef_val` could exceed the maximum range of a gint8. Use a bigger
104
+     one, the checks after will ensure it's properly cropped/padded
105
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293>
106
+
107
+2025-01-05 12:08:24 +0100  Edward Hervey <edward@centricular.com>
108
+
109
+   * gst-libs/gst/mpegts/gstmpegtssection.c:
110
+     mpegts: Add missing break
111
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293>
112
+
113
+2025-01-05 11:46:21 +0100  Edward Hervey <edward@centricular.com>
114
+
115
+   * gst-libs/gst/mse/gstmsemediatype.c:
116
+     msemediabuffer: Fix ASCII character detection
117
+     Use glib function. The previous check was checking whether a signed int was
118
+     lower than its limit (which ... is always TRUE).
119
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293>
120
+
121
+2025-01-05 11:43:49 +0100  Edward Hervey <edward@centricular.com>
122
+
123
+   * gst-libs/gst/mse/gstsourcebuffer.c:
124
+     msesourcebuffer: Fix unsigned value handling
125
+     Use the explicit valid clocktime handler instead
126
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293>
127
+
128
+2025-01-05 11:41:44 +0100  Edward Hervey <edward@centricular.com>
129
+
130
+   * gst/rist/gstristsink.c:
131
+     ristsink: Add missing break
132
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293>
133
+
134
+2025-01-07 12:56:13 +0200  Sebastian Dröge <sebastian@centricular.com>
135
+
136
+   * sys/decklink/gstdecklinkaudiosink.cpp:
137
+     decklinkaudiosink: Don't crash if started without corresponding video sink
138
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8291>
139
+
140
+2025-01-09 16:13:44 -0500  Monty C <montyc1999@gmail.com>
141
+
142
+   * sys/d3d12/hlsl/VSMain_color.hlsl:
143
+   * sys/d3d12/hlsl/VSMain_coord.hlsl:
144
+   * sys/d3d12/hlsl/VSMain_pos.hlsl:
145
+     d3d12: Fix shaders failing to compile with newer dxc versions
146
+     Newer dxc versions enable HLSL 2021 by default, which disallows implicit casting of structs.
147
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8274>
148
+
149
+2025-01-09 17:23:41 +0000  Colin Kinloch <colin.kinloch@collabora.com>
150
+
151
+   * gst-libs/gst/wayland/gstwldisplay.c:
152
+     wayland: Print table split when DMABuf format changes
153
+     The `zwp_linux_dmabuf_v1` doesn't specify an order for modifier events
154
+     to be sent.
155
+     In my case the linear format was sent last resulting in the first item
156
+     in each row being the previous format.
157
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8277>
158
+
159
+2024-12-25 15:04:03 +0100  Philippe Normand <philn@igalia.com>
160
+
161
+   * ext/wpe/gstwpethreadedview.cpp:
162
+   * ext/wpe/gstwpethreadedview.h:
163
+   * ext/wpe/gstwpevideosrc.cpp:
164
+     wpevideosrc: Clear cached SHM buffers after caps re-negotiation
165
+     Otherwise buffers not corresponding to the negotiated caps might be pushed
166
+     downstream.
167
+     Fixes #4094
168
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8266>
169
+
170
+2024-12-27 13:28:18 +0100  Philippe Normand <philn@igalia.com>
171
+
172
+   * ext/wpe/gstwpevideosrc.cpp:
173
+     wpevideosrc: Post progress messages on the bus
174
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8265>
175
+
176
+2024-12-25 14:42:16 +0100  Philippe Normand <philn@igalia.com>
177
+
178
+   * ext/wpe/gstwpevideosrc.cpp:
179
+     wpevideosrc: Handle latency queries
180
+     Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8265>
181
+
182
+2025-01-06 20:11:58 +0000  Tim-Philipp Müller <tim@centricular.com>
183
+
184
+   * meson.build:
185
+     Back to development after 1.24.11
186
+
187
 === release 1.24.11 ===
188
 
189
 2025-01-06 19:48:08 +0000  Tim-Philipp Müller <tim@centricular.com>
190
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/NEWS -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/NEWS Changed
158
 
1
@@ -1276,7 +1276,7 @@
2
 -   There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least
3
     avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected.
4
 
5
--   gst-libav currently doesn’t build against the latest FFmpeg 7.0 release. This is being worked on and tracked in this “libav:
6
+-   gst-libav < 1.24.6 didn’t build against the latest FFmpeg 7.0 release. This has been worked on and tracked in this “libav:
7
     Fix compatibility with ffmpeg 7” Merge Request.
8
 
9
 ## Statistics
10
@@ -3030,6 +3030,147 @@
11
 -   List of Merge Requests applied in 1.24.11
12
 -   List of Issues fixed in 1.24.11
13
 
14
+1.24.12
15
+
16
+The twelfth 1.24 bug-fix release (1.24.12) was released on 29 January 2025.
17
+
18
+This release only contains bugfixes and it should be safe to update from 1.24.x.
19
+
20
+Highlighted bugfixes in 1.24.12
21
+
22
+-   d3d12: Fix shaders failing to compile with newer dxc versions
23
+-   decklinkvideosink: Fix handling of caps framerate in auto mode; also a decklinkaudiosink fix
24
+-   devicemonitor: Fix potential crash macOS when a device is unplugged
25
+-   gst-libav: Fix crash in audio encoders like avenc_ac3 if input data has insufficient alignment
26
+-   gst-libav: Fix build against FFmpeg 4.2 as in Ubuntu 20.04
27
+-   gst-editing-services: Fix Python library name fetching on Windows
28
+-   netclientclock: Don’t store failed internal clocks in the cache, so applications can re-try later
29
+-   oggdemux: Seeking and duration handling fixes
30
+-   osxaudiosrc: Fixes for failing init/no output on recent iOS versions
31
+-   qtdemux: Use mvhd transform matrix and support for flipping
32
+-   rtpvp9pay: Fix profile parsing
33
+-   splitmuxsrc: Fix use with decodebin3 which would occasionally fail with an assertion when seeking
34
+-   tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true
35
+-   video-overlay-composition: Declare the video/size/orientation tags for the meta and implement scale transformations
36
+-   vtdec: Fix seeks occasionally hanging on macOS due to a race condition when draining
37
+-   webrtc: Fix duplicate payload types with RTX and multiple video codecs
38
+-   win32-pluginloader: Make sure not to create any windows when inspecting plugins
39
+-   wpe: Various fixes for re-negotiation, latency reporting, progress messages on startup
40
+-   x264enc: Add missing data to AvcDecoderConfigurationRecord in codec_data for high profile variants
41
+-   cerbero: Support using ccache with cmake if enabled
42
+-   Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements
43
+
44
+gstreamer
45
+
46
+-   device: Fix racy nullptr deref on macOS when a device is unplugged
47
+-   iterator: Added error handling to filtered iterators
48
+-   netclientclock: Don’t ever store failed internal clocks in the cache
49
+-   netclock-replay: use gst_c_args when building, fixing build failure on Solaris
50
+-   pluginloader-win32: create no window
51
+-   pluginloader-win32: fix use after free in find_helper_bin_location
52
+-   sparsefile: ensure error is set when read_buffer() returns 0
53
+-   basetransform: fix incorrect logging inside gst_base_transform_query_caps
54
+
55
+gst-plugins-base
56
+
57
+-   oggdemux: fixes seeking in some cases by not overwriting a valid duration with CLOCK_TIME_NONE
58
+-   video-overlay-composition: Declare the video/size/orientation tags for the meta & implement scale transformation
59
+-   Various fixes found from adding extra warning flags
60
+
61
+gst-plugins-good
62
+
63
+-   osxaudiosrc: Fixes for failing init/no output on recent iOS versions
64
+-   qtdemux: Use mvhd transform matrix and support for flipping
65
+-   qtmux: fix critical warnings on negotiation error
66
+-   rtpvp9pay: fix profile parsing
67
+-   splitmuxsrc: Ensure only a single stream-start event is pushed
68
+-   splitmuxsrc: decodebin3 Fails with assertion in mq_slot_handle_stream_start when seeking
69
+-   Various fixes found from adding extra warning flags
70
+
71
+gst-plugins-bad
72
+
73
+-   decklinkvideosink: Fix handling of caps framerate in auto mode
74
+-   decklinkaudiosink: Don’t crash if started without corresponding video sink
75
+-   d3d12: Fix shaders failing to compile with newer dxc versions
76
+-   tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true
77
+-   vtdec: fix seeks hangs due to a race condition draining
78
+-   vtdec: seeks freeze the pipeline
79
+-   wayland: Print table split when DMABuf format changes
80
+-   webrtc: fix duplicate payload types with RTX and multiple video codecs
81
+-   wpevideosrc: Clear cached SHM buffers after caps re-negotiation
82
+-   wpe: Report latency and start-up progress messages
83
+-   wpe: remove glFlush() when filling buffer
84
+-   Fix build with gtk3 but not wayland
85
+-   Various fixes found from adding extra warning flags
86
+
87
+gst-plugins-ugly
88
+
89
+-   x264enc: add missing data to AvcDecoderConfigurationRecord, and switch to GstByteWriter
90
+
91
+GStreamer Rust plugins
92
+
93
+-   No changes
94
+
95
+gst-libav
96
+
97
+-   avaudenc: fix crash in avenc_ac3 if input buffers are insufficiently aligned
98
+-   avcodecmap: Only use new channel positions when compiling against new enough ffmpeg
99
+-   gst-libav: 1.24.11: Fails to build with minimum supported ffmpeg version
100
+
101
+gst-rtsp-server
102
+
103
+-   No changes
104
+
105
+gstreamer-vaapi
106
+
107
+-   No changes
108
+
109
+gstreamer-sharp
110
+
111
+-   No changes
112
+
113
+gst-omx
114
+
115
+-   No changes
116
+
117
+gst-python
118
+
119
+-   No changes
120
+
121
+gst-editing-services
122
+
123
+-   ges: Fix Python library name fetching on Windows
124
+
125
+gst-devtools, gst-validate + gst-integration-testsuites
126
+
127
+-   No changes
128
+
129
+gst-examples
130
+
131
+-   No changes
132
+
133
+Development build environment
134
+
135
+-   No changes
136
+
137
+Cerbero build tool and packaging changes in 1.24.12
138
+
139
+-   cmake: Support using ccache if enabled
140
+
141
+Contributors to 1.24.12
142
+
143
+Adrian Perez de Castro, Alan Coopersmith, Alexander Slobodeniuk, Andoni Morales Alastruey, Andrew Yooeun Chun, Brad Hards,
144
+Carlos Bentzen, Colin Kinloch, Edward Hervey, François Laignel, Guillaume Desmottes, Jochen Henneberg, Jordan Yelloz, L. E.
145
+Segovia, Monty C, Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Rares Branici, Samuel Thibault, Sebastian Dröge, Silvio
146
+Lazzeretti, Tim-Philipp Müller, Tomas Granath, Will Miller,
147
+
148
+… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!
149
+
150
+List of merge requests and issues fixed in 1.24.12
151
+
152
+-   List of Merge Requests applied in 1.24.12
153
+-   List of Issues fixed in 1.24.12
154
+
155
 Schedule for 1.26
156
 
157
 Our next major feature release will be 1.26, and 1.25 will be the unstable development version leading up to the stable 1.26
158
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/RELEASE -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/RELEASE Changed
7
 
1
@@ -1,4 +1,4 @@
2
-This is GStreamer gst-plugins-bad 1.24.11.
3
+This is GStreamer gst-plugins-bad 1.24.12.
4
 
5
 The GStreamer team is thrilled to announce a new major feature release
6
 of your favourite cross-platform multimedia framework!
7
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ext/gtk/meson.build -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/gtk/meson.build Changed
18
 
1
@@ -1,3 +1,7 @@
2
+if not use_wayland
3
+  subdir_done()
4
+endif
5
+
6
 gtkwayland_sources = 
7
   'gstplugin.c',
8
   'gstgtkutils.c',
9
@@ -9,7 +13,7 @@
10
 gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3'))
11
 gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : get_option('gtk3'))
12
 
13
-if gtk_dep.found() and gtk_wayland_dep.found() and use_wayland
14
+if gtk_dep.found() and gtk_wayland_dep.found()
15
   gstgtkwayland = library('gstgtkwayland',
16
     gtkwayland_sources,
17
     c_args :  gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API',
18
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ext/webrtc/gstwebrtcbin.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/webrtc/gstwebrtcbin.c Changed
31
 
1
@@ -3560,6 +3560,7 @@
2
   for (i = 0; i < gst_caps_get_size (caps); i++) {
3
     GstCaps *format = gst_caps_new_empty ();
4
     GstStructure *s = gst_structure_copy (gst_caps_get_structure (caps, i));
5
+    gint media_pt;
6
 
7
     if (i == 0) {
8
       gst_structure_foreach (extmap, (GstStructureForeachFunc) _copy_field, s);
9
@@ -3582,6 +3583,9 @@
10
       return FALSE;
11
     }
12
 
13
+    if (gst_structure_get_int (s, "payload", &media_pt))
14
+      find_or_create_payload_map_for_media_pt (media_mapping, media_pt);
15
+
16
     gst_caps_unref (format);
17
   }
18
 
19
@@ -3594,10 +3598,7 @@
20
     guint rtx_target_ssrc = -1;
21
     gint media_pt;
22
 
23
-    if (gst_structure_get_int (s, "payload", &media_pt) &&
24
-        webrtc->bundle_policy == GST_WEBRTC_BUNDLE_POLICY_NONE)
25
-      find_or_create_payload_map_for_media_pt (media_mapping, media_pt);
26
-
27
+    gst_structure_get_int (s, "payload", &media_pt);
28
     rtx_target_pt = media_pt;
29
 
30
     if (!gst_structure_get_int (s, "clock-rate", &clockrate))
31
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ext/wpe/gstwpethreadedview.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/wpe/gstwpethreadedview.cpp Changed
39
 
1
@@ -711,6 +711,37 @@
2
     });
3
 }
4
 
5
+void GstWPEThreadedView::clearBuffers()
6
+{
7
+  bool dispatchFrameComplete = false;
8
+  {
9
+    GMutexHolder lock(images_mutex);
10
+
11
+    if (shm.pending) {
12
+      auto meta = gst_buffer_get_video_meta(shm.pending);
13
+      if (static_cast<int>(meta->width) != wpe.width || static_cast<int>(meta->height) != wpe.height) {
14
+        gst_clear_buffer(&shm.pending);
15
+        dispatchFrameComplete = true;
16
+      }
17
+    }
18
+
19
+    if (shm.committed) {
20
+      auto meta = gst_buffer_get_video_meta(shm.committed);
21
+      if (static_cast<int>(meta->width) != wpe.width || static_cast<int>(meta->height) != wpe.height) {
22
+        gst_clear_buffer(&shm.committed);
23
+        dispatchFrameComplete = true;
24
+      }
25
+    }
26
+  }
27
+
28
+  if (dispatchFrameComplete) {
29
+    frameComplete();
30
+    // Wait until the next SHM buffer has been received.
31
+    threading.ready = false;
32
+    waitLoadCompletion();
33
+  }
34
+}
35
+
36
 void GstWPEThreadedView::frameComplete()
37
 {
38
     GST_TRACE("frame complete");
39
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ext/wpe/gstwpethreadedview.h -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/wpe/gstwpethreadedview.h Changed
9
 
1
@@ -45,6 +45,7 @@
2
     void loadData(GBytes*);
3
     void runJavascript(const gchar*);
4
     void setDrawBackground(gboolean);
5
+    void clearBuffers();
6
 
7
     GstEGLImage* image();
8
     GstBuffer* buffer();
9
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ext/wpe/gstwpevideosrc.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/wpe/gstwpevideosrc.cpp Changed
133
 
1
@@ -174,6 +174,17 @@
2
     GST_PAD_ALWAYS,
3
     GST_STATIC_CAPS (WPE_VIDEO_SRC_CAPS));
4
 
5
+#define GST_ELEMENT_PROGRESS(el, type, code, text)                             \
6
+  G_STMT_START {                                                               \
7
+    gchar *__txt = _gst_element_error_printf text;                             \
8
+    gst_element_post_message (                                                 \
9
+        GST_ELEMENT_CAST (el),                                                 \
10
+        gst_message_new_progress (GST_OBJECT_CAST (el),                        \
11
+                                  GST_PROGRESS_TYPE_##type, code, __txt));     \
12
+    g_free (__txt);                                                            \
13
+  }                                                                            \
14
+  G_STMT_END
15
+
16
 static GstFlowReturn
17
 gst_wpe_video_src_create (GstBaseSrc * bsrc, guint64 offset, guint length,
18
     GstBuffer ** buf)
19
@@ -270,7 +281,6 @@
20
   gl->BindTexture (GL_TEXTURE_2D, tex_id);
21
   gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
22
       gst_egl_image_get_image (locked_image));
23
-  gl->Flush ();
24
   WPE_UNLOCK (src);
25
   return TRUE;
26
 }
27
@@ -284,6 +294,7 @@
28
   gboolean created_view = FALSE;
29
   GBytes *bytes;
30
 
31
+  GST_ELEMENT_PROGRESS (src, START, "open", ("Starting up"));
32
   GST_INFO_OBJECT (src, "Starting up");
33
   WPE_LOCK (src);
34
 
35
@@ -298,26 +309,37 @@
36
   auto & thread = GstWPEContextThread::singleton ();
37
 
38
   if (!src->view) {
39
-    src->view = thread.createWPEView (src, context, display,
40
+    GST_ELEMENT_PROGRESS (src, CONTINUE, "open", ("Creating WPE WebView"));
41
+    src->view =
42
+        thread.createWPEView (src, context, display,
43
         GST_VIDEO_INFO_WIDTH (&base_src->out_info),
44
         GST_VIDEO_INFO_HEIGHT (&base_src->out_info));
45
     created_view = TRUE;
46
     GST_DEBUG_OBJECT (src, "created view %p", src->view);
47
+    GST_ELEMENT_PROGRESS (src, CONTINUE, "open", ("WPE WebView is ready"));
48
   }
49
 
50
   if (!src->view) {
51
     WPE_UNLOCK (src);
52
+    GST_ELEMENT_PROGRESS (src, ERROR, "open",
53
+        ("WPEBackend-FDO EGL display initialisation failed"));
54
     GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
55
         ("WPEBackend-FDO EGL display initialisation failed"), (NULL));
56
     return FALSE;
57
   }
58
 
59
+  if (!created_view) {
60
+    GST_INFO_OBJECT (src, "Re-starting after re-negotiation, clearing cached SHM buffers");
61
+    src->view->clearBuffers ();
62
+  }
63
+
64
   GST_OBJECT_LOCK (src);
65
   bytes = src->bytes;
66
   src->bytes = NULL;
67
   GST_OBJECT_UNLOCK (src);
68
 
69
   if (bytes != NULL) {
70
+    GST_ELEMENT_PROGRESS (src, CONTINUE, "open", ("Loading HTML data"));
71
     src->view->loadData (bytes);
72
     g_bytes_unref (bytes);
73
   }
74
@@ -326,6 +348,7 @@
75
     src->n_frames = 0;
76
   }
77
   WPE_UNLOCK (src);
78
+  GST_ELEMENT_PROGRESS (src, COMPLETE, "open", ("Ready to produce buffers"));
79
   return TRUE;
80
 }
81
 
82
@@ -797,6 +820,42 @@
83
   return ret;
84
 }
85
 
86
+static gboolean
87
+gst_wpe_video_src_query (GstBaseSrc * base_src, GstQuery * query)
88
+{
89
+  GstWpeVideoSrc *src = GST_WPE_VIDEO_SRC (base_src);
90
+  GstGLBaseSrc *gl_src = GST_GL_BASE_SRC (base_src);
91
+  gboolean ret = FALSE;
92
+
93
+  switch (GST_QUERY_TYPE (query)) {
94
+    case GST_QUERY_LATENCY:{
95
+      GST_OBJECT_LOCK (src);
96
+      if (gl_src->out_info.fps_n > 0) {
97
+        GstClockTime latency;
98
+
99
+        latency = gst_util_uint64_scale (GST_SECOND, gl_src->out_info.fps_d,
100
+            gl_src->out_info.fps_n);
101
+        GST_OBJECT_UNLOCK (src);
102
+        gst_query_set_latency (query,
103
+            gst_base_src_is_live (GST_BASE_SRC_CAST (src)), latency,
104
+            GST_CLOCK_TIME_NONE);
105
+        GST_DEBUG_OBJECT (src, "Reporting latency of %" GST_TIME_FORMAT,
106
+            GST_TIME_ARGS (latency));
107
+        ret = TRUE;
108
+      } else {
109
+        GST_OBJECT_UNLOCK (src);
110
+      }
111
+
112
+      break;
113
+    }
114
+    default:
115
+      ret = GST_CALL_PARENT_WITH_DEFAULT (GST_BASE_SRC_CLASS, query,
116
+          (base_src, query), FALSE);
117
+      break;
118
+  }
119
+  return ret;
120
+}
121
+
122
 static void
123
 gst_wpe_video_src_init (GstWpeVideoSrc * src)
124
 {
125
@@ -859,6 +918,7 @@
126
       GST_DEBUG_FUNCPTR (gst_wpe_video_src_decide_allocation);
127
   base_src_class->stop = GST_DEBUG_FUNCPTR (gst_wpe_video_src_stop);
128
   base_src_class->event = GST_DEBUG_FUNCPTR (gst_wpe_video_src_event);
129
+  base_src_class->query = GST_DEBUG_FUNCPTR (gst_wpe_video_src_query);
130
 
131
   gl_base_src_class->supported_gl_api =
132
       static_cast < GstGLAPI >
133
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/codecparsers/gsth265bitwriter.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/codecparsers/gsth265bitwriter.c Changed
18
 
1
@@ -640,7 +640,6 @@
2
       const guint8 *sl;
3
       const guint8 *default_sl;
4
       guint8 nextCoef;
5
-      gint8 coef_val;
6
       guint8 scaling_list_pred_matrix_id_delta;
7
 
8
       if (!_get_scaling_list_params (src_scaling_list, sizeId, matrixId,
9
@@ -697,7 +696,7 @@
10
       }
11
 
12
       for (i = 0; i < size; i++) {
13
-        coef_val = sli - nextCoef;
14
+        gint coef_val = sli - nextCoef;
15
         nextCoef = sli;
16
 
17
         if (coef_val > 127) {
18
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/mpegts/gstmpegtssection.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/mpegts/gstmpegtssection.c Changed
9
 
1
@@ -1102,6 +1102,7 @@
2
     case GST_MTS_TABLE_ID_SELECTION_INFORMATION:
3
       if (pid == 0x001f)
4
         return GST_MPEGTS_SECTION_SIT;
5
+      break;
6
     default:
7
       /* Handle ranges */
8
       if (table_id >= GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_PRESENT &&
9
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/mse/gstmsemediatype.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/mse/gstmsemediatype.c Changed
34
 
1
@@ -57,12 +57,6 @@
2
 }
3
 
4
 static gboolean
5
-is_ascii (const gchar c)
6
-{
7
-  return c > 0 && c <= G_MAXINT8;
8
-}
9
-
10
-static gboolean
11
 is_eos (const gchar c)
12
 {
13
   return c == '\0';
14
@@ -135,8 +129,8 @@
15
   g_return_val_if_fail (value != NULL, FALSE);
16
 
17
   const gchar *unparsed = *input;
18
-  char c = unparsed0;
19
-  if (!is_ascii (c)) {
20
+  gchar c = unparsed0;
21
+  if (!g_ascii_isprint (c)) {
22
     return FALSE;
23
   }
24
 
25
@@ -160,7 +154,7 @@
26
   }
27
 
28
   gchar c = (*input)0;
29
-  if (!is_ascii (c)) {
30
+  if (!g_ascii_isprint (c)) {
31
     return FALSE;
32
   }
33
 
34
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/mse/gstsourcebuffer.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/mse/gstsourcebuffer.c Changed
19
 
1
@@ -1082,7 +1082,7 @@
2
 /**
3
  * gst_source_buffer_set_append_window_start:
4
  * @self: #GstSourceBuffer instance
5
- * @start: the append window end
6
+ * @start: the append window start
7
  * @error: (out) (optional) (nullable) (transfer full): the resulting error or `NULL`
8
  *
9
  * Modifies the current append window start of @self. If successful, samples
10
@@ -1115,7 +1115,7 @@
11
     return FALSE;
12
   }
13
 
14
-  if (start < 0 || start <= self->append_window_end) {
15
+  if (!GST_CLOCK_TIME_IS_VALID (start) || start <= self->append_window_end) {
16
     g_set_error (error,
17
         GST_MEDIA_SOURCE_ERROR, GST_MEDIA_SOURCE_ERROR_TYPE,
18
         "append window start must be between zero and append window end");
19
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/wayland/gstwldisplay.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/wayland/gstwldisplay.c Changed
29
 
1
@@ -204,7 +204,7 @@
2
 {
3
   GstWlDisplay *self = data;
4
   guint64 modifier = (guint64) modifier_hi << 32 | modifier_lo;
5
-  static gboolean table_header = TRUE;
6
+  static uint32_t last_format = 0;
7
 
8
   GstWlDisplayPrivate *priv = gst_wl_display_get_instance_private (self);
9
 
10
@@ -220,14 +220,15 @@
11
     if (fourcc == DRM_FORMAT_INVALID || modifier == DRM_FORMAT_MOD_INVALID)
12
       return;
13
 
14
-    if (table_header == TRUE) {
15
+    if (last_format == 0) {
16
       GST_INFO ("===== All DMA Formats With Modifiers =====");
17
       GST_INFO ("| Gst Format   | DRM Format              |");
18
-      table_header = FALSE;
19
     }
20
 
21
-    if (modifier == 0)
22
+    if (last_format != format) {
23
       GST_INFO ("|-----------------------------------------");
24
+      last_format = format;
25
+    }
26
 
27
     GST_INFO ("| %-12s | %-23s |",
28
         (modifier == 0) ? gst_video_format_to_string (gst_format) : "",
29
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-plugins-bad.doap -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-plugins-bad.doap Changed
18
 
1
@@ -35,6 +35,16 @@
2
 
3
  <release>
4
   <Version>
5
+   <revision>1.24.12</revision>
6
+   <branch>1.24</branch>
7
+   <name></name>
8
+   <created>2025-01-29</created>
9
+   <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.24.12.tar.xz" />
10
+  </Version>
11
+ </release>
12
+
13
+ <release>
14
+  <Version>
15
    <revision>1.24.11</revision>
16
    <branch>1.24</branch>
17
    <name></name>
18
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst/mpegtsdemux/mpegtspacketizer.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst/mpegtsdemux/mpegtspacketizer.c Changed
10
 
1
@@ -2275,7 +2275,7 @@
2
         pcrtable->base_time += diff;
3
         pcrtable->base_pcrtime += diff;
4
       } else if (pcrtable->base_pcrtime > tmp_pts
5
-          && pcrtable->base_pcrtime > PCR_GST_MAX_VALUE / 2) {
6
+          && pcrtable->base_pcrtime - tmp_pts > PCR_GST_MAX_VALUE / 2) {
7
         pcrtable->pcroffset += PCR_GST_MAX_VALUE;
8
       }
9
     }
10
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst/rist/gstristsink.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst/rist/gstristsink.c Changed
9
 
1
@@ -909,6 +909,7 @@
2
        * a NULL interface on a network without a default gateway */
3
       if (gst_rist_sink_start (sink) == GST_STATE_CHANGE_FAILURE)
4
         return GST_STATE_CHANGE_FAILURE;
5
+      break;
6
     case GST_STATE_CHANGE_PAUSED_TO_READY:
7
       gst_rist_sink_disable_stats_interval (sink);
8
       break;
9
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/meson.build -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/meson.build Changed
8
 
1
@@ -1,5 +1,5 @@
2
 project('gst-plugins-bad', 'c', 'cpp',
3
-  version : '1.24.11',
4
+  version : '1.24.12',
5
   meson_version : '>= 1.1',
6
   default_options :  'warning_level=1',
7
                       'buildtype=debugoptimized' )
8
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/po/gst-plugins-bad-1.0.pot -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/po/gst-plugins-bad-1.0.pot Changed
13
 
1
@@ -6,9 +6,9 @@
2
 #, fuzzy
3
 msgid ""
4
 msgstr ""
5
-"Project-Id-Version: gst-plugins-bad-1.24.11\n"
6
+"Project-Id-Version: gst-plugins-bad-1.24.12\n"
7
 "Report-Msgid-Bugs-To: \n"
8
-"POT-Creation-Date: 2025-01-06 19:52+0000\n"
9
+"POT-Creation-Date: 2025-01-29 20:14+0000\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
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/po/gst-plugins-bad.pot -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/po/gst-plugins-bad.pot Changed
13
 
1
@@ -6,9 +6,9 @@
2
 #, fuzzy
3
 msgid ""
4
 msgstr ""
5
-"Project-Id-Version: gst-plugins-bad-1.24.11\n"
6
+"Project-Id-Version: gst-plugins-bad-1.24.12\n"
7
 "Report-Msgid-Bugs-To: \n"
8
-"POT-Creation-Date: 2025-01-06 19:52+0000\n"
9
+"POT-Creation-Date: 2025-01-29 20:14+0000\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
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/amfcodec/gstamfav1enc.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/amfcodec/gstamfav1enc.cpp Changed
9
 
1
@@ -927,6 +927,7 @@
2
       break;
3
     case PROP_PA_FRAME_SAD:
4
       update_bool (self, &self->pa.frame_sad, value);
5
+      break;
6
     case PROP_PA_LTR:
7
       update_bool (self, &self->pa.ltr, value);
8
       break;
9
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/amfcodec/gstamfh264enc.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/amfcodec/gstamfh264enc.cpp Changed
9
 
1
@@ -1082,6 +1082,7 @@
2
       break;
3
     case PROP_PA_FRAME_SAD:
4
       update_bool (self, &self->pa.frame_sad, value);
5
+      break;
6
     case PROP_PA_LTR:
7
       update_bool (self, &self->pa.ltr, value);
8
       break;
9
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/amfcodec/gstamfh265enc.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/amfcodec/gstamfh265enc.cpp Changed
9
 
1
@@ -954,6 +954,7 @@
2
       break;
3
     case PROP_PA_FRAME_SAD:
4
       update_bool (self, &self->pa.frame_sad, value);
5
+      break;
6
     case PROP_PA_LTR:
7
       update_bool (self, &self->pa.ltr, value);
8
       break;
9
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/applemedia/vtdec.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/applemedia/vtdec.c Changed
41
 
1
@@ -303,7 +303,6 @@
2
   GstVideoCodecFrame *frame;
3
   GstFlowReturn ret = GST_FLOW_OK;
4
   GstVideoDecoder *decoder = GST_VIDEO_DECODER (vtdec);
5
-  gboolean is_flushing;
6
 
7
   g_mutex_lock (&vtdec->queue_mutex);
8
   while (gst_queue_array_is_empty (vtdec->reorder_queue)
9
@@ -321,6 +320,8 @@
10
    * that we push in PTS order, or if we're draining/flushing */
11
   while ((gst_queue_array_get_length (vtdec->reorder_queue) >=
12
           vtdec->dbp_size) || vtdec->is_flushing || vtdec->is_draining) {
13
+    gboolean is_flushing;
14
+
15
     frame = gst_queue_array_pop_head (vtdec->reorder_queue);
16
     is_flushing = vtdec->is_flushing;
17
     g_cond_signal (&vtdec->queue_cond);
18
@@ -358,7 +359,6 @@
19
 
20
   g_mutex_unlock (&vtdec->queue_mutex);
21
   GST_VIDEO_DECODER_STREAM_LOCK (vtdec);
22
-  vtdec->downstream_ret = ret;
23
 
24
   /* We need to empty the queue immediately so that session_output_callback() 
25
    * can push out the current buffer, otherwise it can deadlock */
26
@@ -370,10 +370,14 @@
27
       gst_video_decoder_release_frame (decoder, frame);
28
     }
29
 
30
+    if (vtdec->is_flushing && ret == GST_FLOW_FLUSHING) {
31
+      ret = GST_FLOW_OK;
32
+    }
33
     g_cond_signal (&vtdec->queue_cond);
34
     g_mutex_unlock (&vtdec->queue_mutex);
35
   }
36
 
37
+  vtdec->downstream_ret = ret;
38
   GST_VIDEO_DECODER_STREAM_UNLOCK (vtdec);
39
 
40
   if (ret != GST_FLOW_OK) {
41
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/d3d12/hlsl/VSMain_color.hlsl -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/d3d12/hlsl/VSMain_color.hlsl Changed
8
 
1
@@ -31,5 +31,5 @@
2
 
3
 VS_OUTPUT VSMain_color (VS_INPUT input)
4
 {
5
-  return input;
6
+  return VS_OUTPUT(input);
7
 }
8
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/d3d12/hlsl/VSMain_coord.hlsl -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/d3d12/hlsl/VSMain_coord.hlsl Changed
8
 
1
@@ -31,5 +31,5 @@
2
 
3
 VS_OUTPUT VSMain_coord (VS_INPUT input)
4
 {
5
-  return input;
6
+  return VS_OUTPUT(input);
7
 }
8
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/d3d12/hlsl/VSMain_pos.hlsl -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/d3d12/hlsl/VSMain_pos.hlsl Changed
8
 
1
@@ -29,5 +29,5 @@
2
 
3
 VS_OUTPUT VSMain_pos (VS_INPUT input)
4
 {
5
-  return input;
6
+  return VS_OUTPUT(input);
7
 }
8
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/decklink/gstdecklinkaudiosink.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/decklink/gstdecklinkaudiosink.cpp Changed
23
 
1
@@ -556,6 +556,12 @@
2
     self->output->output->BeginAudioPreroll ();
3
   }
4
 
5
+  if (!self->output->videosink) {
6
+    GST_ERROR_OBJECT (self,
7
+        "Can't output audio without video sink on the same device");
8
+    return GST_FLOW_ERROR;
9
+  }
10
+
11
   video_sink =
12
       GST_DECKLINK_VIDEO_SINK (gst_object_ref (self->output->videosink));
13
 
14
@@ -926,7 +932,7 @@
15
       GST_OBJECT_UNLOCK (self);
16
 
17
       g_mutex_lock (&self->output->lock);
18
-      if (self->output->start_scheduled_playback)
19
+      if (self->output->start_scheduled_playback && self->output->videosink)
20
         self->output->start_scheduled_playback (self->output->videosink);
21
       g_mutex_unlock (&self->output->lock);
22
       break;
23
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/decklink/gstdecklinkvideosink.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/decklink/gstdecklinkvideosink.cpp Changed
56
 
1
@@ -921,7 +921,17 @@
2
 
3
   if (self->mode == GST_DECKLINK_MODE_AUTO) {
4
     BMDPixelFormat f;
5
-    mode = gst_decklink_find_mode_and_format_for_caps (caps, &f);
6
+    GstCaps *tmp = gst_caps_copy (caps);
7
+    guint i, n = gst_caps_get_size (tmp);
8
+
9
+    for (i = 0; i < n; i++) {
10
+      GstStructure *s = gst_caps_get_structure (tmp, 0);
11
+      gst_structure_remove_field (s, "framerate");
12
+    }
13
+
14
+    mode = gst_decklink_find_mode_and_format_for_caps (tmp, &f);
15
+    gst_caps_unref (tmp);
16
+
17
     if (mode == NULL) {
18
       GST_WARNING_OBJECT (self,
19
           "Failed to find compatible mode for caps  %" GST_PTR_FORMAT, caps);
20
@@ -1025,7 +1035,10 @@
21
   /* For output we support any framerate and only really care about timestamps */
22
   gst_caps_map_in_place (mode_caps, reset_framerate, NULL);
23
 
24
+  GST_DEBUG_OBJECT (self, "Mode caps %" GST_PTR_FORMAT, mode_caps);
25
+
26
   if (filter) {
27
+    GST_DEBUG_OBJECT (self, "Filter caps %" GST_PTR_FORMAT, filter);
28
     caps =
29
         gst_caps_intersect_full (filter, mode_caps, GST_CAPS_INTERSECT_FIRST);
30
     gst_caps_unref (mode_caps);
31
@@ -1033,6 +1046,8 @@
32
     caps = mode_caps;
33
   }
34
 
35
+  GST_DEBUG_OBJECT (self, "Returning caps %" GST_PTR_FORMAT, caps);
36
+
37
   return caps;
38
 }
39
 
40
@@ -1577,9 +1592,12 @@
41
   timestamp = GST_BUFFER_TIMESTAMP (buffer);
42
   duration = GST_BUFFER_DURATION (buffer);
43
   if (duration == GST_CLOCK_TIME_NONE) {
44
-    duration =
45
-        gst_util_uint64_scale_int (GST_SECOND, self->info.fps_d,
46
-        self->info.fps_n);
47
+    if (self->info.fps_n == 0)
48
+      duration = 0;
49
+    else
50
+      duration =
51
+          gst_util_uint64_scale_int (GST_SECOND, self->info.fps_d,
52
+          self->info.fps_n);
53
   }
54
   running_time =
55
       gst_segment_to_running_time (&GST_BASE_SINK_CAST (self)->segment,
56
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/wasapi/gstwasapisink.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/wasapi/gstwasapisink.c Changed
11
 
1
@@ -616,7 +616,8 @@
2
   HRESULT hr;
3
   gint16 *dst = NULL;
4
   DWORD dwWaitResult;
5
-  guint can_frames, have_frames, n_frames, write_len, written_len = 0;
6
+  gint can_frames;
7
+  guint have_frames, n_frames, write_len, written_len = 0;
8
   HANDLE event_handle2;
9
 
10
   event_handle0 = self->event_handle;
11
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/tests/check/elements/webrtcbin.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/tests/check/elements/webrtcbin.c Changed
59
 
1
@@ -5964,6 +5964,49 @@
2
 
3
 GST_END_TEST;
4
 
5
+GST_START_TEST (test_video_rtx_no_duplicate_payloads)
6
+{
7
+  struct test_webrtc *t = test_webrtc_new ();
8
+  GstWebRTCRTPTransceiverDirection direction;
9
+  GstWebRTCRTPTransceiver *trans;
10
+  GstCaps *caps;
11
+
12
+  VAL_SDP_INIT (no_duplicate_payloads, on_sdp_media_no_duplicate_payloads,
13
+      NULL, NULL);
14
+  guint media_format_count = { 3 };
15
+  VAL_SDP_INIT (media_formats, on_sdp_media_count_formats,
16
+      media_format_count, &no_duplicate_payloads);
17
+  VAL_SDP_INIT (count, _count_num_sdp_media, GUINT_TO_POINTER (1),
18
+      &media_formats);
19
+  const gchar *expected_offer_setup = { "actpass", };
20
+  VAL_SDP_INIT (offer_setup, on_sdp_media_setup, expected_offer_setup, &count);
21
+  const gchar *expected_offer_direction = { "sendrecv", };
22
+  VAL_SDP_INIT (offer, on_sdp_media_direction, expected_offer_direction,
23
+      &offer_setup);
24
+
25
+  t->on_negotiation_needed = NULL;
26
+  t->on_ice_candidate = NULL;
27
+  t->on_pad_added = _pad_added_fakesink;
28
+
29
+  /* Setup sendrecv transceiver with VP8 and H264.
30
+   * The RTX's payload type shouldn't be 96 or 97 since those are already taken. */
31
+  caps = gst_caps_from_string (VP8_RTP_CAPS (96) ";" H264_RTP_CAPS (97));
32
+  direction = GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDRECV;
33
+  g_signal_emit_by_name (t->webrtc1, "add-transceiver", direction, caps,
34
+      &trans);
35
+  gst_caps_unref (caps);
36
+  fail_unless (trans != NULL);
37
+  g_object_set (trans, "do-nack", TRUE, NULL);
38
+  gst_object_unref (trans);
39
+
40
+  /* We don't really care about the answer in this test */
41
+  test_validate_sdp (t, &offer, NULL);
42
+
43
+  test_webrtc_free (t);
44
+}
45
+
46
+GST_END_TEST;
47
+
48
 static Suite *
49
 webrtcbin_suite (void)
50
 {
51
@@ -6053,6 +6096,7 @@
52
           "All datachannel tests are disabled. sctpenc %p, sctpdec %p", sctpenc,
53
           sctpdec);
54
     }
55
+    tcase_add_test (tc, test_video_rtx_no_duplicate_payloads);
56
   } else {
57
     GST_WARNING ("Some required elements were not found. "
58
         "All media tests are disabled. nicesrc %p, nicesink %p, "
59
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/tests/examples/gtk/meson.build -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/tests/examples/gtk/meson.build Changed
11
 
1
@@ -1,4 +1,8 @@
2
-if gtk_dep.found() and gtk_wayland_dep.found() and use_wayland
3
+if not use_wayland
4
+  subdir_done()
5
+endif
6
+
7
+if gtk_dep.found() and gtk_wayland_dep.found()
8
   executable('gtkwaylandsink',
9
     'gtkwaylandsink.c',
10
     extra_files: 'window.ui',
11
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/tests/examples/waylandsink/meson.build -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/tests/examples/waylandsink/meson.build Changed
40
 
1
@@ -1,22 +1,24 @@
2
+if not use_wayland
3
+  subdir_done()
4
+endif
5
+
6
 gtk_dep = dependency('gtk+-3.0', required : get_option('examples'))
7
 gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : get_option('examples'))
8
 
9
-if use_wayland
10
-  if gtk_dep.found() and gtk_wayland_dep.found()
11
-    executable('waylandsink',
12
-      'main.c',
13
-      extra_files: 'window.ui',
14
-      install: false,
15
-      include_directories : configinc,
16
-      dependencies : gtk_dep, gtk_wayland_dep, gst_dep, gstwayland_dep,
17
-      c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API',
18
-    )
19
-  endif
20
-  executable('wayland_threads',
21
-    'wayland-threads.c',
22
+if gtk_dep.found() and gtk_wayland_dep.found()
23
+  executable('waylandsink',
24
+    'main.c',
25
+    extra_files: 'window.ui',
26
     install: false,
27
     include_directories : configinc,
28
-    dependencies : gst_dep, gstwayland_dep, wl_client_dep,
29
+    dependencies : gtk_dep, gtk_wayland_dep, gst_dep, gstwayland_dep,
30
     c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API',
31
   )
32
 endif
33
+executable('wayland_threads',
34
+  'wayland-threads.c',
35
+  install: false,
36
+  include_directories : configinc,
37
+  dependencies : gst_dep, gstwayland_dep, wl_client_dep,
38
+  c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API',
39
+)
40