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 6
gstreamer-plugins-bad-codecs.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Tue May 17 16:38:34 UTC 2022 - Bjørn Lie <zaitor@opensuse.org>
4
+
5
+- Update to version 1.20.2
6
+
7
+-------------------------------------------------------------------
8
Sat Mar 26 01:04:36 UTC 2022 - Bjørn Lie <zaitor@opensuse.org>
9
10
- Update to version 1.20.1
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.1
6
+Version: 1.20.2
7
Release: 0
8
Summary: Codecs/plugins for gstreamer-plugins-bad
9
License: LGPL-2.1-or-later
10
gst-plugins-bad-1.20.1.tar.xz/ChangeLog -> gst-plugins-bad-1.20.2.tar.xz/ChangeLog
Changed
201
1
2
+=== release 1.20.2 ===
3
+
4
+2022-05-02 23:29:25 +0100 Tim-Philipp Müller <tim@centricular.com>
5
+
6
+ * NEWS:
7
+ * RELEASE:
8
+ * gst-plugins-bad.doap:
9
+ * meson.build:
10
+ Release 1.20.2
11
+
12
+2022-05-02 23:29:19 +0100 Tim-Philipp Müller <tim@centricular.com>
13
+
14
+ * ChangeLog:
15
+ Update ChangeLogs for 1.20.2
16
+
17
+2022-04-23 04:00:21 +0900 Seungha Yang <seungha@centricular.com>
18
+
19
+ * sys/d3d11/gstd3d11window_win32.cpp:
20
+ d3d11videosink: Fix for unhandled mouse double click events
21
+ Only window created with CS_DBLCLKS style can receive those mouse
22
+ double click events, so we need to use the style for internal/external
23
+ windows can get double click events.
24
+ Also, passthrough mouse events to parent window in the same message pumping
25
+ threads instead of manually forwarding each mouse event.
26
+ Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1172
27
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2286>
28
+
29
+2022-04-08 04:24:36 +0900 Seungha Yang <seungha@centricular.com>
30
+
31
+ * sys/d3d11/gstd3d11window_win32.cpp:
32
+ d3d11window: Use ANSI version WIN32 API explicitly
33
+ We were using ANSI version APIs implicitly because UNICODE is not
34
+ defined by ourselves. But potentially it can be broken if user
35
+ defines UNICODE.
36
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2286>
37
+
38
+2022-04-29 19:08:46 +0300 Sebastian Dröge <sebastian@centricular.com>
39
+
40
+ * gst/interlace/gstinterlace.c:
41
+ interlace: Also handle a missing "interlace-mode" field as progressive
42
+ Otherwise caps negotiation will fail in situations that are supposed
43
+ to work, like:
44
+ "video/x-raw,framerate=(fraction)60/1" ! interlace field-pattern=0 ! "video/x-raw,framerate=(fraction)30/1"
45
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2337>
46
+
47
+2022-04-29 19:08:32 +0300 Sebastian Dröge <sebastian@centricular.com>
48
+
49
+ * gst/interlace/gstinterlace.c:
50
+ interlace: Add some more debug output to the getcaps function
51
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2337>
52
+
53
+2022-04-27 15:24:50 +0200 Edward Hervey <edward@centricular.com>
54
+
55
+ * gst/mpegtsdemux/mpegtsbase.c:
56
+ mpegts: Handle "empty" PMT gracefully
57
+ Some streams have 2 PMT sections in a single TS packet. The first one is "valid"
58
+ but doesn't contain/define any streams. That causes an unrecoverable issue when
59
+ we try to activate the 2nd (valid) PMT.
60
+ Instead of doing that, pre-emptively refuse to process PMT without any streams
61
+ present within. We still do post that section on the bus to inform applications.
62
+ Fixes #1181
63
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2327>
64
+
65
+2022-04-28 00:31:49 +0900 Seungha Yang <seungha@centricular.com>
66
+
67
+ * sys/nvcodec/gstnvvp9dec.c:
68
+ nvvp9sldec: Increase DPB size to cover render delay
69
+ This should've included in the previous MR
70
+ https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/987
71
+ already, but missed.
72
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2324>
73
+
74
+2022-04-24 00:02:18 +0800 He Junyan <junyan.he@intel.com>
75
+
76
+ * sys/va/gstvabasedec.c:
77
+ va: dec: Use gst_buffer_pool_config_set_va_alignment() to set alignment.
78
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301>
79
+
80
+2022-04-23 23:59:08 +0800 He Junyan <junyan.he@intel.com>
81
+
82
+ * sys/va/gstvapool.h:
83
+ va: pool: Replace all tabs with spaces in header file.
84
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301>
85
+
86
+2022-04-23 23:52:34 +0800 He Junyan <junyan.he@intel.com>
87
+
88
+ * sys/va/gstvapool.c:
89
+ va: pool: Delete the GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT.
90
+ The va pool is used for GPU side surface/image, its alignment should
91
+ not be changed arbitrarily by others. So we decide not to expose the
92
+ GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT flag anymore.
93
+ Instead, user can call gst_buffer_pool_config_set_va_alignment() to
94
+ set its surface/image alignment.
95
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301>
96
+
97
+2022-04-23 23:40:14 +0800 He Junyan <junyan.he@intel.com>
98
+
99
+ * sys/va/gstvapool.c:
100
+ * sys/va/gstvapool.h:
101
+ va: pool: Add set_va_alignment() API.
102
+ We want to use gst_buffer_pool_config_set_va_alignment() to replace
103
+ gst_buffer_pool_config_get_video_alignment(). The later one is specific
104
+ for GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT option.
105
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2301>
106
+
107
+2022-04-26 01:16:06 +0800 He Junyan <junyan.he@intel.com>
108
+
109
+ * gst/videoparsers/gstav1parse.c:
110
+ av1parse: Fix a latent memory leak in colorimetry setting.
111
+ Also delete the useless "have_cinfo" judgement.
112
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2297>
113
+
114
+2022-04-24 22:54:58 +0800 He Junyan <junyan.he@intel.com>
115
+
116
+ * gst/videoparsers/gstav1parse.c:
117
+ av1parse: Correct the meaning of color_range flag.
118
+ According to spec:
119
+ color range equal to 0 shall be referred to as the studio swing
120
+ representation and color range equal to 1 shall be referred to as
121
+ the full swing representation.
122
+ The current status is just the opposite.
123
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2297>
124
+
125
+2022-04-22 17:44:06 +0200 Stéphane Cerveau <scerveau@collabora.com>
126
+
127
+ * ext/rsvg/gstrsvgdec.h:
128
+ rvsg: fix cairo include
129
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2280>
130
+
131
+2022-04-21 00:38:37 +0900 Sangchul Lee <sc11.lee@samsung.com>
132
+
133
+ * ext/webrtc/gstwebrtcbin.c:
134
+ webrtcbin: Avoid access of freed memory
135
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2258>
136
+
137
+2022-04-20 08:09:58 +0900 Wonchul Lee <wonchul.dev@gmail.com>
138
+
139
+ * ext/dash/gstdashsink.c:
140
+ dashsink: Unlock when failed to get content
141
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2246>
142
+
143
+2022-04-18 17:50:22 +0900 Camilo Celis Guzman <camilo@pexip.com>
144
+
145
+ * gst/videoparsers/gstav1parse.c:
146
+ gstav1parse: fixup various possible logical errors
147
+ Found via an analyzed build for Clang. Specifically we had:
148
+ gstav1parse.c1850,11 in gst_av1_parse_detect_stream_format: Logic error: The left operand of '==' is a garbage value
149
+ gstav1parse.c1606,11 in gst_av1_parse_handle_to_small_and_equal_align: Logic error: The left operand of '==' is a garbage value
150
+ Also a couple of false-positives:
151
+ gstav1parse.c1398,24 in gst_av1_parse_handle_one_obu: Logic error: Branch condition evaluates to a garbage value
152
+ gstav1parse.c1440,37 in gst_av1_parse_handle_one_obu: Logic error: The left operand of '-' is a garbage value
153
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2240>
154
+
155
+2022-04-12 01:01:23 +0900 Seungha Yang <seungha@centricular.com>
156
+
157
+ * sys/d3d11/gstd3d11decoder.cpp:
158
+ * sys/d3d11/meson.build:
159
+ win32: Enable high-resolution timer for MinGW build
160
+ timeapi.h is missing in our MinGW toolchain. Include mmsystem.h
161
+ header instead, which defines struct and APIs in case of our MinGW
162
+ toolchain. Note that in case of native Windows10 SDK (MSVC build),
163
+ mmsystem.h will include timeapi.h
164
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2167>
165
+
166
+2022-04-14 08:23:51 +0200 Edward Hervey <edward@centricular.com>
167
+
168
+ * gst/mpegtsdemux/gstmpegdefs.h:
169
+ * gst/mpegtsdemux/tsdemux.c:
170
+ tsdemux: Fix AC-4 detection
171
+ This regression was introduced by
172
+ https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1102
173
+ and has been present since 1.18
174
+ * Stream Type 0x06 is defined in the base mpeg-ts specification as Private PES
175
+ Packets. Determining the content should be solely based on descriptors found
176
+ within the PMT.
177
+ * This was abused in that commit by defining a "bluray-only" stream type for AC4
178
+ : `ST_BD_AUDIO_AC4`
179
+ * This should be entirely handled in the regular private pes handling further
180
+ down in the code
181
+ Fixes #1154
182
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2176>
183
+
184
+2022-04-11 10:32:40 +0200 Edward Hervey <edward@centricular.com>
185
+
186
+ * gst/mxf/mxfdemux.c:
187
+ mxfdemux: Fix issue with re-syncing
188
+ In case of re-syncing (i.e. moving to another partition to avoid too much of an
189
+ interleave), there was previously no checks to figure out whether a given
190
+ partition was already fully handled (i.e. when coming across it again after a
191
+ previous resync).
192
+ In order to handle this at least for single-track partitions, check whether we
193
+ have reached the essence track duration, and if so skip the partition.
194
+ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2162>
195
+
196
+2022-04-11 10:31:15 +0200 Edward Hervey <edward@centricular.com>
197
+
198
+ * gst/mxf/mxfdemux.c:
199
+ mxfdemux: Don't double-increase track position
200
+ The essence track position should only be overriden if we sucesfully switched to
201
gst-plugins-bad-1.20.1.tar.xz/NEWS -> gst-plugins-bad-1.20.2.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.1 and was released
6
-on 14 March 2022.
7
+The latest bug-fix release in the 1.20 series is 1.20.2 and was released
8
+on 2 May 2022.
9
10
See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
11
version of this document.
12
13
-Last updated: Monday 14 March 2022, 00:30 UTC (log)
14
+Last updated: Monday 2 May 2022, 0:30 UTC (log)
15
16
Introduction
17
18
19
- List of Merge Requests applied in 1.20.1
20
- List of Issues fixed in 1.20.1
21
22
+1.20.2
23
+
24
+The second 1.20 bug-fix release (1.20.2) was released on 2 May 2022.
25
+
26
+This release only contains bugfixes and it should be safe to update from
27
+1.20.x.
28
+
29
+Highlighted bugfixes in 1.20.2
30
+
31
+- avviddec: Remove vc1/wmv3 override and fix crashes on WMV files with
32
+ FFMPEG 5.0+
33
+- macOS: fix plugin discovery for GStreamer installed via brew and fix
34
+ loading of Rust plugins
35
+- rtpbasepayload: various header extension handling fixes
36
+- rtpopusdepay: fix regression in stereo input handling if
37
+ sprop-stereo is not advertised
38
+- rtspclientsink: fix possible shutdown deadlock
39
+- mpegts: gracefully handle “empty” program maps and fix AC-4
40
+ detection
41
+- mxfdemux: Handle empty VANC packets and fix EOS handling
42
+- playbin3: various playbin3, uridecodebin3, and playsink fixes
43
+- ptpclock: fix initial sync-up with certain devices
44
+- gltransformation: let graphene alloc its structures memory aligned
45
+- webrtcbin fixes and webrtc sendrecv example improvements
46
+- video4linux2: various fixes including some fixes for Raspberry Pi
47
+ users
48
+- videorate segment handling fixes and other fixes
49
+- nvh264dec, nvh265dec: Fix broken key-unit trick modes and reverse
50
+ playback
51
+- wpe: Reintroduce persistent WebContext
52
+- cerbero: Make it easier to consume 1.20.1 macOS GStreamer .pkgs
53
+- build fixes and gobject annotation fixes
54
+- bug fixes, security fixes, memory leak fixes, and other stability
55
+ and reliability improvements
56
+
57
+gstreamer
58
+
59
+- devicemonitor: clean up signal handlers and hidden providers list
60
+- Leaks tracer: fix pthread_atfork return value check leading to bogus
61
+ warning in log
62
+- Rust plugins: Not picked up by the plugin loader on macOS
63
+- Failed to use plugins of latest GStreamer version 1.20.x installed
64
+ by brew on macOS
65
+- ptpclock: Allow at least 100ms delay between Sync/Follow_Up and
66
+ Delay_Req/Delay_Resp messages. Fixes problems acquiring initial sync
67
+ with certain devices
68
+- meson: Add -Wl,-rpath,${libdir} on macOS
69
+- registry: skip Rust dep builddirs when searching for plugins
70
+ recursively
71
+
72
+gst-plugins-base
73
+
74
+- appsrc: Clarify buffer ref semantics in signals documentation
75
+- appsrc: fix annotations for bindings
76
+- typefind: Skip extension parsing for data:// URIs, fixing regression
77
+ with mp4 files serialised to data uris
78
+- playbin3: various fixes
79
+- playbin3: fix missing lock when unknown stream type in pad-removed
80
+ cb
81
+- decodebin3: fix collection leaks
82
+- decodebin3: Don’t duplicate stream selections
83
+- discoverer: chain up to parent finalize methods in all our types to
84
+ fix memory leaks
85
+- glmixerbin: slightly better pad/element creation
86
+- gltransformation: let graphene alloc its structures memory aligned
87
+- ogg: fix possible buffer overrun
88
+- rtpbasepayload: Don’t write header extensions if there’s no
89
+ corresponding…
90
+- rtpbasepayload: always store input buffer meta before negotiation
91
+- rtpbasepayload: fix transfer annotation for push and push_list
92
+- subparse: don’t try to index string with -1
93
+- riff-media: fix memory leak after usage for g_strjoin()
94
+- playbin/playbin3: Allow setting a NULL URI
95
+- playsink: Complete reconfiguration on pad release.
96
+- parsebin: Expose streams of unknown type
97
+- pbutils: Fix wmv screen description detection
98
+- subparse: don’t deref a potentially NULL variable
99
+- rawvideoparse: set format from caps in
100
+ gst_raw_video_parse_set_config_from_caps
101
+- videodecoder: release stream lock after handling gap events
102
+- videorate: fix assertion when pushing last and only buffer without
103
+ duration
104
+- videorate: Revert “don’t reset on segment update” to fix segment
105
+ handling regressions
106
+- gst-play-1.0, gst-launch-1.0: Enable win32 high-resolution timer
107
+ also for MinGW build
108
+
109
+gst-plugins-good
110
+
111
+- deinterlace: silence unused-but-set werror from imported code
112
+- qtdemux: fix leak of channel_mapping
113
+- rtpopusdepay: missing sprop-stereo should not assume mono
114
+- rtpjitterbuffer: Fix invalid memory access in
115
+ rtp_jitter_buffer_pop()
116
+- rtpptdemux: fix leak of caps when ignoring a pt
117
+- rtpredenc: quieten warning about ignoring header extensions
118
+- soup: Fix pre-processor macros in souploader for libsoup-3.0
119
+- twcc: Note that twcc-stats packet loss counts reordering as loss +
120
+ add some logging
121
+- video4linux2: Manual backports for RPi users
122
+- wavparse: handle URI query in any parse state, fixing audio track
123
+ selection issue in GES
124
+- wavparse: Unset DISCONT buffer flag for divided into multiple
125
+ buffers in push mode
126
+
127
+gst-plugins-bad
128
+
129
+- av1parse: Fix several issues about the colorimetry.
130
+- av1parse: fix up various possible logic errors
131
+- dashsink: fix missing mutex unlock in error code path when failing
132
+ to get content
133
+- d3d11videosink: Fix for unhandled mouse double click events
134
+- interlace: Also handle a missing “interlace-mode” field as
135
+ progressive
136
+- msdk: fix build with MSVC
137
+- mxfdemux: Fix issues at EOS
138
+- mxfdemux: Handle empty VANC packets
139
+- nvh264dec, nvh265dec: Fix broken key-unit trick and reverse playback
140
+- nvvp9sldec: Increase DPB size to cover render delay
141
+- rvsg: fix cairo include
142
+- tsdemux: Fix AC-4 detection in MPEG-TS
143
+- tsdemux: Handle “empty” PMT gracefully
144
+- va: pool: don’t advertise the GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT
145
+ option any more
146
+- v4l2codecs: Fix memory leak
147
+- v4l2videodec: set frame duration according to framerate
148
+- webrtcbin: Update documentation of ‘get-stats’ action signal
149
+- webrtcbin: Check data channel transport for notifying
150
+ ‘ice-gathering-state’
151
+- webrtcbin: Avoid access of freed memory
152
+- wpe: Reintroduce persistent WebContext
153
+- Build: use CMake to find some openssl and exr deps
154
+- Fix multiple “unused-but-set variable” compiler warnings
155
+
156
+gst-plugins-ugly
157
+
158
+- x264enc: Don’t try to fixate ANY allowed caps
159
+
160
+gst-libav
161
+
162
+- video decoders: fix frame leak on negotiation error
163
+- Fix build on systems without C++ compiler
164
+- avviddec: Remove vc1/wmv3 override (fixing crash with FFmpeg 5
165
+- Segfaults on ASF/WMV files with FFMPEG 5.0+
166
+
167
+gst-rtsp-server
168
+
169
+- rtspclientsink: fix possible shutdown deadlock in collect_streams()
170
+- Minor spelling fixes
171
+
172
+gstreamer-vaapi
173
+
174
+- No changes
175
+
176
+gstreamer-sharp
177
+
178
+- No changes
179
+
180
+gst-omx
181
+
182
+- No changes
183
+
184
+gst-python
185
+
186
+- Fix build on systems without C++ compiler
187
+
188
+gst-editing-services
189
+
190
+- License clarification: GES is released under the LGPL2+ license
191
+
192
+gst-examples:
193
+
194
+- Fix build on macOS with gtk+-quartz-3.0
195
+- player android: add missing dummy.cpp
196
+- player android: update for android changes
197
+- webrtc_sendrecv.py: Link pads instead of elements
198
+- webrtc_sendrecv.py: Implement all negotiation modes + bugfixes
199
+
200
+Development build environment + gst-full build
201
gst-plugins-bad-1.20.1.tar.xz/RELEASE -> gst-plugins-bad-1.20.2.tar.xz/RELEASE
Changed
7
1
2
-This is GStreamer gst-plugins-bad 1.20.1.
3
+This is GStreamer gst-plugins-bad 1.20.2.
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.1.tar.xz/ext/dash/gstdashsink.c -> gst-plugins-bad-1.20.2.tar.xz/ext/dash/gstdashsink.c
Changed
13
1
2
3
g_mutex_lock (&sink->mpd_lock);
4
gst_dash_sink_generate_mpd_content (sink, current_stream);
5
- if (!gst_mpd_client_get_xml_content (sink->mpd_client, &mpd_content, &size))
6
+ if (!gst_mpd_client_get_xml_content (sink->mpd_client, &mpd_content, &size)) {
7
+ g_mutex_unlock (&sink->mpd_lock);
8
return;
9
+ }
10
g_mutex_unlock (&sink->mpd_lock);
11
12
if (sink->mpd_root_path)
13
gst-plugins-bad-1.20.1.tar.xz/ext/openexr/meson.build -> gst-plugins-bad-1.20.2.tar.xz/ext/openexr/meson.build
Changed
8
1
2
-openexr_dep = dependency('OpenEXR', required: get_option('openexr'))
3
+openexr_dep = dependency('OpenEXR', modules: 'OpenEXR::IlmImf', required: get_option('openexr'))
4
+
5
if openexr_dep.found()
6
openexr_override_options =
7
# Older versions of openexr fail to build with -Werror when using GCC >= 9.2
8
gst-plugins-bad-1.20.1.tar.xz/ext/resindvd/gstpesfilter.c -> gst-plugins-bad-1.20.2.tar.xz/ext/resindvd/gstpesfilter.c
Changed
10
1
2
guint32 start_code;
3
4
gboolean STD_buffer_bound_scale G_GNUC_UNUSED;
5
- guint16 STD_buffer_size_bound;
6
+ guint16 STD_buffer_size_bound G_GNUC_UNUSED;
7
const guint8 *data;
8
gint avail, datalen;
9
gboolean have_size = FALSE;
10
gst-plugins-bad-1.20.1.tar.xz/ext/rsvg/gstrsvgdec.h -> gst-plugins-bad-1.20.2.tar.xz/ext/rsvg/gstrsvgdec.h
Changed
10
1
2
#include <gst/base/gstadapter.h>
3
#include <gst/video/video.h>
4
5
-#include <cairo/cairo.h>
6
+#include <cairo.h>
7
8
#include <librsvg/rsvg.h>
9
10
gst-plugins-bad-1.20.1.tar.xz/ext/webrtc/gstwebrtcbin.c -> gst-plugins-bad-1.20.2.tar.xz/ext/webrtc/gstwebrtcbin.c
Changed
132
1
2
{
3
#define STATE(val) GST_WEBRTC_ICE_GATHERING_STATE_ ## val
4
GstWebRTCICEGatheringState any_state = 0;
5
- gboolean all_completed = webrtc->priv->transceivers->len > 0;
6
+ GstWebRTCICEGatheringState ice_state;
7
+ GstWebRTCDTLSTransport *dtls_transport;
8
+ GstWebRTCICETransport *transport;
9
+ gboolean all_completed = webrtc->priv->transceivers->len > 0 ||
10
+ webrtc->priv->data_channel_transport;
11
int i;
12
13
for (i = 0; i < webrtc->priv->transceivers->len; i++) {
14
15
g_ptr_array_index (webrtc->priv->transceivers, i);
16
WebRTCTransceiver *trans = WEBRTC_TRANSCEIVER (rtp_trans);
17
TransportStream *stream = trans->stream;
18
- GstWebRTCDTLSTransport *dtls_transport;
19
- GstWebRTCICETransport *transport;
20
- GstWebRTCICEGatheringState ice_state;
21
22
if (rtp_trans->stopped || stream == NULL) {
23
GST_TRACE_OBJECT (webrtc, "transceiver %p stopped or unassociated",
24
25
all_completed = FALSE;
26
}
27
28
+ /* check data channel transport gathering state */
29
+ if (all_completed && webrtc->priv->data_channel_transport) {
30
+ if ((dtls_transport = webrtc->priv->data_channel_transport->transport)) {
31
+ transport = dtls_transport->transport;
32
+ g_object_get (transport, "gathering-state", &ice_state, NULL);
33
+ GST_TRACE_OBJECT (webrtc,
34
+ "data channel transport %p gathering state: 0x%x", dtls_transport,
35
+ ice_state);
36
+ any_state |= (1 << ice_state);
37
+ if (ice_state != STATE (COMPLETE))
38
+ all_completed = FALSE;
39
+ }
40
+ }
41
+
42
GST_TRACE_OBJECT (webrtc, "ICE gathering state: 0x%x", any_state);
43
44
/* Any of the RTCIceTransport s are in the gathering state. */
45
46
47
caps = _query_pad_caps (webrtc, rtp_trans, pad, filter, error);
48
}
49
- gst_object_unref (pad);
50
51
if (*error)
52
goto out;
53
54
55
out:
56
57
+ if (pad)
58
+ gst_object_unref (pad);
59
if (codec_preferences)
60
gst_caps_unref (codec_preferences);
61
62
63
goto rejected;
64
}
65
66
- GST_TRACE_OBJECT (webrtc, "trying to compare %" GST_PTR_FORMAT
67
+ GST_LOG_OBJECT (webrtc, "trying to compare %" GST_PTR_FORMAT
68
" and %" GST_PTR_FORMAT, offer_caps, trans_caps);
69
70
/* FIXME: technically this is a little overreaching as some fields we
71
72
/* if no transceiver, then we only receive that stream and respond with
73
* the intersection with the transceivers codec preferences caps */
74
answer_dir = GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_RECVONLY;
75
+ GST_WARNING_OBJECT (webrtc, "did not find compatible transceiver for "
76
+ "offer caps %" GST_PTR_FORMAT ", will only receive", offer_caps);
77
}
78
79
if (!rtp_trans) {
80
81
* "ssrc" G_TYPE_STRING the rtp sequence src in use
82
* "transport-id" G_TYPE_STRING identifier for the associated RTCTransportStats for this stream
83
* "codec-id" G_TYPE_STRING identifier for the associated RTCCodecStats for this stream
84
- * "fir-count" G_TYPE_UINT FIR requests received by the sender (only for local statistics)
85
- * "pli-count" G_TYPE_UINT PLI requests received by the sender (only for local statistics)
86
- * "nack-count" G_TYPE_UINT NACK requests received by the sender (only for local statistics)
87
*
88
* RTCReceivedStreamStats supported fields (https://w3c.github.io/webrtc-stats/#receivedrtpstats-dict*)
89
*
90
- * "packets-received" G_TYPE_UINT64 number of packets received (only for local inbound)
91
- * "bytes-received" G_TYPE_UINT64 number of bytes received (only for local inbound)
92
- * "packets-lost" G_TYPE_UINT number of packets lost
93
- * "jitter" G_TYPE_DOUBLE packet jitter measured in secondss
94
+ * "packets-received" G_TYPE_UINT64 number of packets received (only for local inbound)
95
+ * "packets-lost" G_TYPE_UINT64 number of packets lost
96
+ * "packets-discarded" G_TYPE_UINT64 number of packets discarded
97
+ * "packets-repaired" G_TYPE_UINT64 number of packets repaired
98
+ * "jitter" G_TYPE_DOUBLE packet jitter measured in seconds
99
*
100
* RTCInboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#inboundrtpstats-dict*)
101
*
102
* "remote-id" G_TYPE_STRING identifier for the associated RTCRemoteOutboundRTPStreamStats
103
+ * "bytes-received" G_TYPE_UINT64 number of bytes received (only for local inbound)
104
+ * "packets-duplicated" G_TYPE_UINT64 number of packets duplicated
105
+ * "fir-count" G_TYPE_UINT FIR packets sent by the receiver
106
+ * "pli-count" G_TYPE_UINT PLI packets sent by the receiver
107
+ * "nack-count" G_TYPE_UINT NACK packets sent by the receiver
108
*
109
* RTCRemoteInboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#remoteinboundrtpstats-dict*)
110
*
111
* "local-id" G_TYPE_STRING identifier for the associated RTCOutboundRTPSTreamStats
112
* "round-trip-time" G_TYPE_DOUBLE round trip time of packets measured in seconds
113
+ * "fraction-lost" G_TYPE_DOUBLE fraction packet loss
114
*
115
* RTCSentRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#sentrtpstats-dict*)
116
*
117
118
* RTCOutboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#outboundrtpstats-dict*)
119
*
120
* "remote-id" G_TYPE_STRING identifier for the associated RTCRemoteInboundRTPSTreamStats
121
+ * "fir-count" G_TYPE_UINT FIR packets received by the sender
122
+ * "pli-count" G_TYPE_UINT PLI packets received by the sender
123
+ * "nack-count" G_TYPE_UINT NACK packets received by the sender
124
*
125
* RTCRemoteOutboundRTPStreamStats supported fields (https://w3c.github.io/webrtc-stats/#remoteoutboundrtpstats-dict*)
126
*
127
* "local-id" G_TYPE_STRING identifier for the associated RTCInboundRTPSTreamStats
128
+ * "remote-timestamp" G_TYPE_DOUBLE remote timestamp the statistics were sent by the remote
129
*
130
*/
131
gst_webrtc_bin_signalsGET_STATS_SIGNAL =
132
gst-plugins-bad-1.20.1.tar.xz/ext/wpe/WPEThreadedView.cpp -> gst-plugins-bad-1.20.2.tar.xz/ext/wpe/WPEThreadedView.cpp
Changed
20
1
2
3
WPEView* view = nullptr;
4
dispatch(&() mutable {
5
- auto* manager = webkit_website_data_manager_new_ephemeral();
6
- auto web_context = webkit_web_context_new_with_website_data_manager(manager);
7
- g_object_unref(manager);
8
-
9
- view = new WPEView(web_context, src, context, display, width, height);
10
+ if (!glib.web_context) {
11
+ auto *manager = webkit_website_data_manager_new_ephemeral();
12
+ glib.web_context =
13
+ webkit_web_context_new_with_website_data_manager(manager);
14
+ g_object_unref(manager);
15
+ }
16
+ view = new WPEView(glib.web_context, src, context, display, width, height);
17
});
18
19
if (view && view->hasUri()) {
20
gst-plugins-bad-1.20.1.tar.xz/gst-libs/gst/mpegts/gst-dvb-section.c -> gst-plugins-bad-1.20.2.tar.xz/gst-libs/gst/mpegts/gst-dvb-section.c
Changed
87
1
2
_parse_eit (GstMpegtsSection * section)
3
{
4
GstMpegtsEIT *eit = NULL;
5
- guint i = 0, allocated_events = 12;
6
+ guint allocated_events = 12;
7
guint8 *data, *end, *duration_ptr;
8
guint16 descriptors_loop_length;
9
10
11
if (event->descriptors == NULL)
12
goto error;
13
data += descriptors_loop_length;
14
-
15
- i += 1;
16
}
17
18
if (data != end - 4) {
19
20
_parse_bat (GstMpegtsSection * section)
21
{
22
GstMpegtsBAT *bat = NULL;
23
- guint i = 0, allocated_streams = 12;
24
+ guint allocated_streams = 12;
25
guint8 *data, *end, *entry_begin;
26
guint16 descriptors_loop_length, transport_stream_loop_length;
27
28
29
30
data += descriptors_loop_length;
31
32
- i += 1;
33
transport_stream_loop_length -= data - entry_begin;
34
}
35
36
37
_parse_nit (GstMpegtsSection * section)
38
{
39
GstMpegtsNIT *nit = NULL;
40
- guint i = 0, allocated_streams = 12;
41
+ guint allocated_streams = 12;
42
guint8 *data, *end, *entry_begin;
43
guint16 descriptors_loop_length, transport_stream_loop_length;
44
45
46
47
data += descriptors_loop_length;
48
49
- i += 1;
50
transport_stream_loop_length -= data - entry_begin;
51
}
52
53
54
_parse_sdt (GstMpegtsSection * section)
55
{
56
GstMpegtsSDT *sdt = NULL;
57
- guint i = 0, allocated_services = 8;
58
+ guint allocated_services = 8;
59
guint8 *data, *end, *entry_begin;
60
guint tmp;
61
guint sdt_info_length;
62
63
data += descriptors_loop_length;
64
65
sdt_info_length -= data - entry_begin;
66
- i += 1;
67
}
68
69
if (data != end - 4) {
70
71
_parse_sit (GstMpegtsSection * section)
72
{
73
GstMpegtsSIT *sit = NULL;
74
- guint i = 0, allocated_services = 8;
75
+ guint allocated_services = 8;
76
guint8 *data, *end, *entry_begin;
77
guint sit_info_length;
78
guint descriptors_loop_length;
79
80
data += descriptors_loop_length;
81
82
sit_info_length -= data - entry_begin;
83
- i += 1;
84
}
85
86
if (data != end - 4) {
87
gst-plugins-bad-1.20.1.tar.xz/gst-plugins-bad.doap -> gst-plugins-bad-1.20.2.tar.xz/gst-plugins-bad.doap
Changed
18
1
2
3
<release>
4
<Version>
5
+ <revision>1.20.2</revision>
6
+ <branch>1.20</branch>
7
+ <name></name>
8
+ <created>2022-05-02</created>
9
+ <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.20.2.tar.xz" />
10
+ </Version>
11
+ </release>
12
+
13
+ <release>
14
+ <Version>
15
<revision>1.20.1</revision>
16
<branch>1.20</branch>
17
<name></name>
18
gst-plugins-bad-1.20.1.tar.xz/gst/interlace/gstinterlace.c -> gst-plugins-bad-1.20.2.tar.xz/gst/interlace/gstinterlace.c
Changed
33
1
2
interlace_mode = gst_structure_get_string (s, "interlace-mode");
3
/* Do not double the framerate for interlaced - we will either passthrough
4
* or fail to negotiate */
5
- if (skip_progressive && (g_strcmp0 (interlace_mode, "progressive") != 0))
6
+ if (skip_progressive && (interlace_mode
7
+ && g_strcmp0 (interlace_mode, "progressive") != 0))
8
continue;
9
10
if (G_VALUE_TYPE (val) == GST_TYPE_FRACTION) {
11
12
top_field_first = interlace->top_field_first;
13
GST_OBJECT_UNLOCK (interlace);
14
15
+ GST_DEBUG_OBJECT (pad, "Querying caps with filter %" GST_PTR_FORMAT, filter);
16
+
17
if (filter != NULL) {
18
clean_filter = gst_caps_copy (filter);
19
if (pattern == GST_INTERLACE_PATTERN_1_1) {
20
21
}
22
}
23
24
+ GST_DEBUG_OBJECT (pad, "Querying peer with filter %" GST_PTR_FORMAT,
25
+ clean_filter);
26
tcaps = gst_pad_get_pad_template_caps (otherpad);
27
othercaps = gst_pad_peer_query_caps (otherpad, clean_filter);
28
othercaps = gst_caps_make_writable (othercaps);
29
+ GST_DEBUG_OBJECT (pad, "Other caps %" GST_PTR_FORMAT, othercaps);
30
if (othercaps) {
31
if (pattern == GST_INTERLACE_PATTERN_2_2) {
32
for (i = 0; i < gst_caps_get_size (othercaps); ++i) {
33
gst-plugins-bad-1.20.1.tar.xz/gst/mpegdemux/gstpesfilter.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegdemux/gstpesfilter.c
Changed
10
1
2
guint32 start_code;
3
4
gboolean STD_buffer_bound_scale G_GNUC_UNUSED;
5
- guint16 STD_buffer_size_bound;
6
+ guint16 STD_buffer_size_bound G_GNUC_UNUSED;
7
const guint8 *data;
8
gint avail, datalen;
9
gboolean have_size = FALSE;
10
gst-plugins-bad-1.20.1.tar.xz/gst/mpegtsdemux/gstmpegdefs.h -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegtsdemux/gstmpegdefs.h
Changed
9
1
2
#define ST_PS_DVD_SUBPICTURE 0xff
3
4
/* Blu-ray related (registration: 'HDMV'*/
5
-#define ST_BD_AUDIO_AC4 0x06
6
#define ST_BD_AUDIO_LPCM 0x80
7
#define ST_BD_AUDIO_AC3 0x81
8
#define ST_BD_AUDIO_DTS 0x82
9
gst-plugins-bad-1.20.1.tar.xz/gst/mpegtsdemux/mpegtsbase.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegtsdemux/mpegtsbase.c
Changed
14
1
2
return TRUE;
3
}
4
5
+ /* Don't attempt to handle pmt without any streams */
6
+ if (G_UNLIKELY (pmt->streams->len == 0)) {
7
+ GST_WARNING ("Skipping PMT without any entries");
8
+ return TRUE;
9
+ }
10
+
11
program_number = section->subtable_extension;
12
GST_DEBUG ("Applying PMT (program_number:%d, pid:0x%04x)",
13
program_number, section->pid);
14
gst-plugins-bad-1.20.1.tar.xz/gst/mpegtsdemux/tsdemux.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegtsdemux/tsdemux.c
Changed
16
1
2
is_audio = TRUE;
3
caps = gst_caps_new_empty_simple ("audio/x-eac3");
4
break;
5
- case ST_BD_AUDIO_AC4:
6
- /* Opus also uses 0x06, and there are bad streams that have HDMV registration ID,
7
- * but contain an Opus registration id, so check for it */
8
- if (bstream->registration_id != DRF_ID_OPUS) {
9
- is_audio = TRUE;
10
- caps = gst_caps_new_empty_simple ("audio/x-ac4");
11
- }
12
- break;
13
case ST_BD_AUDIO_AC3_TRUE_HD:
14
is_audio = TRUE;
15
caps = gst_caps_new_empty_simple ("audio/x-true-hd");
16
gst-plugins-bad-1.20.1.tar.xz/gst/mpegtsmux/gstbasetsmux.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mpegtsmux/gstbasetsmux.c
Changed
10
1
2
GstIterator *iter;
3
GValue sinkpad_value = G_VALUE_INIT;
4
GstClockTime running_time;
5
- gboolean all_headers, done = FALSE, res = FALSE;
6
+ gboolean all_headers, done = FALSE;
7
guint count;
8
9
if (!gst_video_event_is_force_key_unit (event))
10
gst-plugins-bad-1.20.1.tar.xz/gst/mxf/mxfdemux.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mxf/mxfdemux.c
Changed
57
1
2
ret =
3
gst_mxf_demux_pad_set_component (demux, pad,
4
pad->current_component_index + 1);
5
- if (ret != GST_FLOW_OK && ret != GST_FLOW_EOS) {
6
- GST_ERROR_OBJECT (demux, "Switching component failed");
7
- } else {
8
+ if (ret == GST_FLOW_OK) {
9
pad->current_essence_track->position =
10
pad->current_essence_track_position;
11
+ } else if (ret != GST_FLOW_EOS) {
12
+ GST_ERROR_OBJECT (demux, "Switching component failed");
13
}
14
} else if (etrack->duration > 0
15
&& pad->current_essence_track_position >= etrack->duration) {
16
17
/* We entered a new partition */
18
if (ret == GST_FLOW_OK && mxf_is_partition_pack (&klv.key)) {
19
GstMXFDemuxPartition *partition = demux->current_partition;
20
+ gboolean partition_done = FALSE;
21
22
/* Grab footer metadata if needed */
23
if (demux->pull_footer_metadata
24
25
"Track already at another position : %" G_GINT64_FORMAT,
26
partition->single_track->position);
27
if (find_edit_entry (demux, partition->single_track,
28
- partition->single_track->position, FALSE, &entry))
29
+ partition->single_track->position, FALSE, &entry)) {
30
lowest_offset = entry.offset;
31
+ } else if (partition->single_track->position >=
32
+ partition->single_track->duration) {
33
+ GST_DEBUG_OBJECT (demux, "Track fully consumed, partition done");
34
+ partition_done = TRUE;
35
+ }
36
}
37
} else {
38
guint i;
39
40
}
41
}
42
43
- if (lowest_offset != G_MAXUINT64) {
44
+ if (partition_done || lowest_offset != G_MAXUINT64) {
45
GstMXFDemuxPartition *next_partition = NULL;
46
GList *cur_part = g_list_find (demux->partitions, partition);
47
if (cur_part && cur_part->next)
48
next_partition = (GstMXFDemuxPartition *) cur_part->next->data;
49
50
/* If we have completely processed this partition, skip to next partition */
51
- if (lowest_offset > next_partition->partition.this_partition) {
52
+ if (partition_done
53
+ || lowest_offset > next_partition->partition.this_partition) {
54
GST_DEBUG_OBJECT (demux,
55
"Partition entirely processed, skipping to next one");
56
demux->offset = next_partition->partition.this_partition;
57
gst-plugins-bad-1.20.1.tar.xz/gst/mxf/mxfvanc.c -> gst-plugins-bad-1.20.2.tar.xz/gst/mxf/mxfvanc.c
Changed
24
1
2
return GST_FLOW_ERROR;
3
}
4
5
- if (gst_buffer_get_size (buffer) < 2) {
6
+ /* Either there is no data or there is at least room for the 16bit length,
7
+ * therefore the only invalid packet length is 1 */
8
+ if (gst_buffer_get_size (buffer) == 1) {
9
GST_ERROR ("Invalid VANC essence element size");
10
gst_buffer_unref (buffer);
11
return GST_FLOW_ERROR;
12
13
gst_buffer_map (buffer, &map, GST_MAP_READ);
14
gst_byte_reader_init (&reader, map.data, map.size);
15
16
+ /* Some XDCAM recorders store empty vanc packets (without even the
17
+ * length). Treat them as gaps */
18
+ if (map.size == 0)
19
+ goto no_data;
20
+
21
num_packets = gst_byte_reader_get_uint16_be_unchecked (&reader);
22
if (num_packets == 0) {
23
/* SMPTE 436-1:2013 5.5 The Number of VI Lines or ANC Packets Property
24
gst-plugins-bad-1.20.1.tar.xz/gst/speed/gstspeed.c -> gst-plugins-bad-1.20.2.tar.xz/gst/speed/gstspeed.c
Changed
26
1
2
case GST_EVENT_SEGMENT:{
3
gdouble rate;
4
GstFormat format;
5
- gint64 start_value, stop_value, base;
6
+ gint64 start_value, stop_value;
7
const GstSegment *segment;
8
GstSegment seg;
9
10
11
format = segment->format;
12
start_value = segment->start;
13
stop_value = segment->stop;
14
- base = segment->base;
15
16
gst_event_unref (event);
17
18
19
start_value /= filter->speed;
20
if (stop_value >= 0)
21
stop_value /= filter->speed;
22
- base /= filter->speed;
23
24
/* this would only really be correct if we clipped incoming data */
25
filter->timestamp = start_value;
26
gst-plugins-bad-1.20.1.tar.xz/gst/videoparsers/gstav1parse.c -> gst-plugins-bad-1.20.2.tar.xz/gst/videoparsers/gstav1parse.c
Changed
67
1
2
3
if (seq_header.color_config.color_description_present_flag) {
4
GstVideoColorimetry cinfo;
5
- gboolean have_cinfo = TRUE;
6
gchar *colorimetry = NULL;
7
8
- if (have_cinfo) {
9
- if (seq_header.color_config.color_range)
10
- cinfo.range = GST_VIDEO_COLOR_RANGE_16_235;
11
- else
12
- cinfo.range = GST_VIDEO_COLOR_RANGE_0_255;
13
-
14
- cinfo.matrix = gst_video_color_matrix_from_iso
15
- (seq_header.color_config.matrix_coefficients);
16
- cinfo.transfer = gst_video_transfer_function_from_iso
17
- (seq_header.color_config.transfer_characteristics);
18
- cinfo.primaries = gst_video_color_primaries_from_iso
19
- (seq_header.color_config.color_primaries);
20
- colorimetry = gst_video_colorimetry_to_string (&cinfo);
21
- }
22
+ if (seq_header.color_config.color_range)
23
+ cinfo.range = GST_VIDEO_COLOR_RANGE_0_255;
24
+ else
25
+ cinfo.range = GST_VIDEO_COLOR_RANGE_16_235;
26
+
27
+ cinfo.matrix = gst_video_color_matrix_from_iso
28
+ (seq_header.color_config.matrix_coefficients);
29
+ cinfo.transfer = gst_video_transfer_function_from_iso
30
+ (seq_header.color_config.transfer_characteristics);
31
+ cinfo.primaries = gst_video_color_primaries_from_iso
32
+ (seq_header.color_config.color_primaries);
33
+
34
+ colorimetry = gst_video_colorimetry_to_string (&cinfo);
35
36
- if (g_strcmp0 (colorimetry, self->colorimetry)) {
37
- g_clear_pointer (&self->colorimetry, g_free);
38
+ if (g_strcmp0 (colorimetry, self->colorimetry) != 0) {
39
+ g_free (self->colorimetry);
40
self->colorimetry = colorimetry;
41
+ colorimetry = NULL;
42
self->update_caps = TRUE;
43
}
44
+
45
+ g_clear_pointer (&colorimetry, g_free);
46
}
47
48
if (self->subsampling_x != seq_header.color_config.subsampling_x) {
49
50
GstMapInfo map_info;
51
GstAV1OBU obu;
52
GstFlowReturn ret = GST_FLOW_OK;
53
- GstAV1ParserResult res;
54
+ GstAV1ParserResult res = GST_AV1_PARSER_INVALID_OPERATION;
55
GstBuffer *buffer = gst_buffer_ref (frame->buffer);
56
guint32 total_consumed, consumed;
57
gboolean frame_complete;
58
59
GstAV1Parse *self = GST_AV1_PARSE (parse);
60
GstMapInfo map_info;
61
GstAV1OBU obu;
62
- GstAV1ParserResult res;
63
+ GstAV1ParserResult res = GST_AV1_PARSER_INVALID_OPERATION;
64
GstBuffer *buffer = gst_buffer_ref (frame->buffer);
65
gboolean got_seq, got_frame;
66
gboolean frame_complete;
67
gst-plugins-bad-1.20.1.tar.xz/meson.build -> gst-plugins-bad-1.20.2.tar.xz/meson.build
Changed
8
1
2
project('gst-plugins-bad', 'c', 'cpp',
3
- version : '1.20.1',
4
+ version : '1.20.2',
5
meson_version : '>= 0.59',
6
default_options : 'warning_level=1',
7
'buildtype=debugoptimized' )
8
gst-plugins-bad-1.20.1.tar.xz/po/gst-plugins-bad-1.0.pot -> gst-plugins-bad-1.20.2.tar.xz/po/gst-plugins-bad-1.0.pot
Changed
19
1
2
msgstr ""
3
"Project-Id-Version: gst-plugins-bad-1.0\n"
4
"Report-Msgid-Bugs-To: \n"
5
-"POT-Creation-Date: 2022-03-14 11:40+0000\n"
6
+"POT-Creation-Date: 2022-05-02 23:30+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
11
msgstr ""
12
13
#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:4102
14
-#: gst/mpegtsdemux/mpegtsbase.c:1751
15
+#: gst/mpegtsdemux/mpegtsbase.c:1757
16
msgid "Internal data stream error."
17
msgstr ""
18
19
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/avfassetsrc.m -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/avfassetsrc.m
Changed
20
1
2
{
3
CMSampleBufferRef cmbuf;
4
AVAssetReaderTrackOutput *areader = NULL;
5
- GstCaps *caps;
6
GstBuffer *buf;
7
CMTime dur, ts;
8
9
GST_LOG ("Reading %s next buffer", MEDIA_TYPE_TO_STR (type));
10
if (type == GST_AVF_ASSET_READER_MEDIA_TYPE_AUDIO && audio_track != NULL) {
11
areader = audio_track;
12
- caps = audio_caps;
13
} else if (type == GST_AVF_ASSET_READER_MEDIA_TYPE_VIDEO &&
14
video_track != NULL) {
15
areader = video_track;
16
- caps = video_caps;
17
}
18
19
if (areader == NULL) {
20
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/avsamplevideosink.m -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/avsamplevideosink.m
Changed
15
1
2
gst_av_sample_video_sink_class_init (GstAVSampleVideoSinkClass * klass)
3
{
4
GObjectClass *gobject_class;
5
- GstElementClass *gstelement_class;
6
GstBaseSinkClass *gstbasesink_class;
7
GstVideoSinkClass *gstvideosink_class;
8
GstElementClass *element_class;
9
10
gobject_class = (GObjectClass *) klass;
11
- gstelement_class = (GstElementClass *) klass;
12
gstbasesink_class = (GstBaseSinkClass *) klass;
13
gstvideosink_class = (GstVideoSinkClass *) klass;
14
element_class = GST_ELEMENT_CLASS (klass);
15
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/corevideobuffer.c -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/corevideobuffer.c
Changed
13
1
2
gst_apple_core_video_pixel_buffer_unref (gpixbuf);
3
4
if (info) {
5
- GstVideoMeta *video_meta;
6
-
7
- video_meta =
8
- gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE,
9
+ gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE,
10
GST_VIDEO_INFO_FORMAT (info), info->width, info->height, n_planes,
11
offset, stride);
12
}
13
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/iosurfaceglmemory.c -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/iosurfaceglmemory.c
Changed
20
1
2
IOSurfaceDecrementUseCount (memory->surface);
3
memory->surface = surface;
4
if (surface) {
5
- GLuint tex_id, tex_target, texifmt, texfmt;
6
+ GLuint tex_id, tex_target, texifmt;
7
guint plane;
8
CGLError cglError;
9
10
11
tex_id = gl_mem->tex_id;
12
tex_target = gst_gl_texture_target_to_gl (gl_mem->tex_target);
13
texifmt = gst_gl_format_from_video_info (context, &gl_mem->info, plane);
14
- texfmt =
15
- gst_gl_sized_gl_format_from_gl_format_type (context, texifmt,
16
- GL_UNSIGNED_BYTE);
17
gl->BindTexture (tex_target, tex_id);
18
cglError = CGLTexImageIOSurface2D ((CGLContextObj)
19
gst_gl_context_get_gl_context (context), tex_target, texifmt,
20
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/videotexturecache.m -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/videotexturecache.m
Changed
20
1
2
GstVideoFormat in_format, GstCaps * out_caps)
3
{
4
GstCaps *in_caps;
5
- GstCapsFeatures *features;
6
7
g_return_if_fail (gst_caps_is_fixed (out_caps));
8
9
out_caps = gst_caps_copy (out_caps);
10
- features = gst_caps_get_features (out_caps, 0);
11
gst_video_info_from_caps (&cache->output_info, out_caps);
12
13
in_caps = gst_caps_copy (out_caps);
14
gst_caps_set_simple (in_caps, "format",
15
G_TYPE_STRING, gst_video_format_to_string (in_format), NULL);
16
- features = gst_caps_get_features (in_caps, 0);
17
gst_video_info_from_caps (&cache->input_info, in_caps);
18
19
gst_caps_take (&cache->in_caps, in_caps);
20
gst-plugins-bad-1.20.1.tar.xz/sys/applemedia/vtdec.c -> gst-plugins-bad-1.20.2.tar.xz/sys/applemedia/vtdec.c
Changed
18
1
2
{
3
OSStatus status;
4
CMSampleBufferRef cm_sample_buffer = NULL;
5
- VTDecodeFrameFlags input_flags, output_flags;
6
+ VTDecodeFrameFlags input_flags;
7
GstVtdec *vtdec = GST_VTDEC (decoder);
8
GstFlowReturn ret = GST_FLOW_OK;
9
int decode_frame_number = frame->decode_frame_number;
10
11
* reordering ourselves.
12
*/
13
input_flags = kVTDecodeFrame_EnableAsynchronousDecompression;
14
- output_flags = 0;
15
16
cm_sample_buffer =
17
cm_sample_buffer_from_gst_buffer (vtdec, frame->input_buffer);
18
gst-plugins-bad-1.20.1.tar.xz/sys/d3d11/gstd3d11decoder.cpp -> gst-plugins-bad-1.20.2.tar.xz/sys/d3d11/gstd3d11decoder.cpp
Changed
10
1
2
#include <string>
3
4
#ifdef HAVE_WINMM
5
-#include <timeapi.h>
6
+#include <mmsystem.h>
7
#endif
8
9
GST_DEBUG_CATEGORY_EXTERN (gst_d3d11_decoder_debug);
10
gst-plugins-bad-1.20.1.tar.xz/sys/d3d11/gstd3d11window_win32.cpp -> gst-plugins-bad-1.20.2.tar.xz/sys/d3d11/gstd3d11window_win32.cpp
Changed
201
1
2
3
if (self->external_hwnd) {
4
gst_d3d11_window_win32_release_external_handle (self->external_hwnd);
5
- RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
6
+ RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
7
8
if (self->internal_hwnd_thread == g_thread_self ()) {
9
/* State changing thread is identical to internal window thread.
10
11
* Instead, posts message so that it can be closed from window thread
12
* asynchronously */
13
GST_INFO_OBJECT (self, "Posting custom destory message");
14
- PostMessage (self->internal_hwnd, WM_GST_D3D11_DESTROY_INTERNAL_WINDOW,
15
+ PostMessageA (self->internal_hwnd, WM_GST_D3D11_DESTROY_INTERNAL_WINDOW,
16
0, 0);
17
}
18
19
20
21
if (self->internal_hwnd_thread == g_thread_self ()) {
22
/* We are on message pumping thread already, handle this synchroniously */
23
- SendMessage (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0);
24
+ SendMessageA (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0);
25
} else {
26
/* Post message to message pumping thread. Handling HWND specific message
27
* on message pumping thread is not a worst idea in generall */
28
- PostMessage (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0);
29
+ PostMessageA (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0);
30
}
31
} else {
32
/* XXX: Not sure what's expected behavior if we are drawing on internal
33
34
35
g_main_loop_run (self->loop);
36
37
- RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
38
+ RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
39
gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd);
40
self->internal_hwnd = NULL;
41
self->internal_hwnd_thread = NULL;
42
43
WNDPROC external_window_proc;
44
45
external_window_proc =
46
- (WNDPROC) GetWindowLongPtr (self->external_hwnd, GWLP_WNDPROC);
47
+ (WNDPROC) GetWindowLongPtrA (self->external_hwnd, GWLP_WNDPROC);
48
49
GST_DEBUG_OBJECT (self, "set external window %" G_GUINTPTR_FORMAT
50
", original window procedure %p", (guintptr) self->external_hwnd,
51
external_window_proc);
52
53
- SetProp (self->external_hwnd, EXTERNAL_PROC_PROP_NAME,
54
+ SetPropA (self->external_hwnd, EXTERNAL_PROC_PROP_NAME,
55
(HANDLE) external_window_proc);
56
- SetProp (self->external_hwnd, D3D11_WINDOW_PROP_NAME, self);
57
- SetWindowLongPtr (self->external_hwnd, GWLP_WNDPROC,
58
+ SetPropA (self->external_hwnd, D3D11_WINDOW_PROP_NAME, self);
59
+ SetWindowLongPtrA (self->external_hwnd, GWLP_WNDPROC,
60
(LONG_PTR) sub_class_proc);
61
62
/* Will create our internal window on parent window's thread */
63
- SendMessage (self->external_hwnd, WM_GST_D3D11_CONSTRUCT_INTERNAL_WINDOW,
64
+ SendMessageA (self->external_hwnd, WM_GST_D3D11_CONSTRUCT_INTERNAL_WINDOW,
65
0, 0);
66
}
67
68
69
if (!hwnd)
70
return;
71
72
- external_proc = (WNDPROC) GetProp (hwnd, EXTERNAL_PROC_PROP_NAME);
73
+ external_proc = (WNDPROC) GetPropA (hwnd, EXTERNAL_PROC_PROP_NAME);
74
if (!external_proc) {
75
GST_WARNING ("Failed to get original window procedure");
76
return;
77
78
GST_DEBUG ("release external window %" G_GUINTPTR_FORMAT
79
", original window procedure %p", (guintptr) hwnd, external_proc);
80
81
- RemoveProp (hwnd, EXTERNAL_PROC_PROP_NAME);
82
- RemoveProp (hwnd, D3D11_WINDOW_PROP_NAME);
83
+ RemovePropA (hwnd, EXTERNAL_PROC_PROP_NAME);
84
+ RemovePropA (hwnd, D3D11_WINDOW_PROP_NAME);
85
86
- if (!SetWindowLongPtr (hwnd, GWLP_WNDPROC, (LONG_PTR) external_proc))
87
+ if (!SetWindowLongPtrA (hwnd, GWLP_WNDPROC, (LONG_PTR) external_proc))
88
GST_WARNING ("Couldn't restore original window procedure");
89
}
90
91
static gboolean
92
gst_d3d11_window_win32_create_internal_window (GstD3D11WindowWin32 * self)
93
{
94
- WNDCLASSEX wc;
95
+ WNDCLASSEXA wc;
96
ATOM atom = 0;
97
- HINSTANCE hinstance = GetModuleHandle (NULL);
98
+ HINSTANCE hinstance = GetModuleHandleA (NULL);
99
100
GST_LOG_OBJECT (self, "Attempting to create a win32 window");
101
102
G_LOCK (create_lock);
103
- atom = GetClassInfoEx (hinstance, "GSTD3D11", &wc);
104
+ atom = GetClassInfoExA (hinstance, "GSTD3D11", &wc);
105
if (atom == 0) {
106
GST_LOG_OBJECT (self, "Register internal window class");
107
- ZeroMemory (&wc, sizeof (WNDCLASSEX));
108
+ ZeroMemory (&wc, sizeof (WNDCLASSEXA));
109
110
- wc.cbSize = sizeof (WNDCLASSEX);
111
+ wc.cbSize = sizeof (WNDCLASSEXA);
112
wc.lpfnWndProc = window_proc;
113
wc.hInstance = hinstance;
114
wc.hIcon = LoadIcon (NULL, IDI_WINLOGO);
115
- wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
116
+ wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
117
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
118
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
119
wc.lpszClassName = "GSTD3D11";
120
121
- atom = RegisterClassEx (&wc);
122
+ atom = RegisterClassExA (&wc);
123
124
if (atom == 0) {
125
G_UNLOCK (create_lock);
126
127
self->internal_hwnd = 0;
128
self->visible = FALSE;
129
130
- self->internal_hwnd = CreateWindowEx (0,
131
+ self->internal_hwnd = CreateWindowExA (0,
132
"GSTD3D11",
133
"Direct3D11 renderer",
134
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW,
135
136
137
if (!window->fullscreen) {
138
/* Restore the window's attributes and size */
139
- SetWindowLong (hwnd, GWL_STYLE, self->restore_style);
140
+ SetWindowLongA (hwnd, GWL_STYLE, self->restore_style);
141
142
SetWindowPos (hwnd, HWND_NOTOPMOST,
143
self->restore_rect.left,
144
145
self->restore_style = GetWindowLong (hwnd, GWL_STYLE);
146
147
/* Make the window borderless so that the client area can fill the screen */
148
- SetWindowLong (hwnd, GWL_STYLE,
149
+ SetWindowLongA (hwnd, GWL_STYLE,
150
self->restore_style &
151
~(WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU |
152
WS_THICKFRAME));
153
154
break;
155
case WM_CLOSE:
156
if (self->internal_hwnd) {
157
- RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
158
+ RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
159
ShowWindow (self->internal_hwnd, SW_HIDE);
160
gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd);
161
self->internal_hwnd = NULL;
162
163
case WM_MBUTTONDOWN:
164
case WM_MBUTTONUP:
165
case WM_MOUSEMOVE:
166
- /* To handle mouse event only once, do this only for internal window */
167
- if (self->internal_hwnd && self->internal_hwnd == hWnd)
168
- gst_d3d11_window_win32_on_mouse_event (self, hWnd, uMsg, wParam,
169
- lParam);
170
-
171
- /* DefWindowProc will not chain up mouse event to parent window */
172
- if (self->external_hwnd && self->external_hwnd != hWnd)
173
- SendMessage (self->external_hwnd, uMsg, wParam, lParam);
174
+ gst_d3d11_window_win32_on_mouse_event (self, hWnd, uMsg, wParam, lParam);
175
break;
176
case WM_SYSKEYDOWN:
177
if ((window->fullscreen_toggle_mode &
178
179
*/
180
ReleaseDC (hWnd, self->device_handle);
181
182
- SetProp (hWnd, D3D11_WINDOW_PROP_NAME, self);
183
- } else if (GetProp (hWnd, D3D11_WINDOW_PROP_NAME)) {
184
- HANDLE handle = GetProp (hWnd, D3D11_WINDOW_PROP_NAME);
185
+ SetPropA (hWnd, D3D11_WINDOW_PROP_NAME, self);
186
+ } else if (GetPropA (hWnd, D3D11_WINDOW_PROP_NAME)) {
187
+ HANDLE handle = GetPropA (hWnd, D3D11_WINDOW_PROP_NAME);
188
189
if (!GST_IS_D3D11_WINDOW_WIN32 (handle)) {
190
GST_WARNING ("%p is not d3d11window object", handle);
191
- goto done;
192
+ return DefWindowProcA (hWnd, uMsg, wParam, lParam);
193
}
194
195
self = GST_D3D11_WINDOW_WIN32 (handle);
196
197
198
gst_d3d11_window_win32_handle_window_proc (self, hWnd, uMsg, wParam,
199
lParam);
200
+
201
gst-plugins-bad-1.20.1.tar.xz/sys/d3d11/meson.build -> gst-plugins-bad-1.20.2.tar.xz/sys/d3d11/meson.build
Changed
10
1
2
message('Enable D3D11 Desktop Duplication API')
3
endif
4
# multimedia clock is desktop only API
5
- if has_decoder and winmm_lib.found() and cc.has_header('timeapi.h')
6
+ if has_decoder and winmm_lib.found() and cc.has_header('mmsystem.h')
7
extra_args += '-DHAVE_WINMM'
8
extra_dep += winmm_lib
9
endif
10
gst-plugins-bad-1.20.1.tar.xz/sys/msdk/msdk.c -> gst-plugins-bad-1.20.2.tar.xz/sys/msdk/msdk.c
Changed
10
1
2
mfxStatus sts = MFX_ERR_NONE;
3
mfxLoader loader = NULL;
4
mfxSession session = NULL;
5
- uint32_t impl_idx = 0;
6
+ mfxU32 impl_idx = 0;
7
mfxConfig cfg;
8
mfxVariant impl_value;
9
10
gst-plugins-bad-1.20.1.tar.xz/sys/nvcodec/gstnvdec.c -> gst-plugins-bad-1.20.2.tar.xz/sys/nvcodec/gstnvdec.c
Changed
201
1
2
gst_nvdec_start (GstVideoDecoder * decoder)
3
{
4
GstNvDec *nvdec = GST_NVDEC (decoder);
5
+ GstNvDecClass *klass = GST_NVDEC_GET_CLASS (nvdec);
6
7
nvdec->state = GST_NVDEC_STATE_INIT;
8
nvdec->last_ret = GST_FLOW_OK;
9
gst_video_info_init (&nvdec->out_info);
10
11
+ if (klass->codec_type == cudaVideoCodec_H264)
12
+ nvdec->h264_parser = gst_h264_nal_parser_new ();
13
+ else if (klass->codec_type == cudaVideoCodec_HEVC)
14
+ nvdec->h265_parser = gst_h265_parser_new ();
15
+
16
return TRUE;
17
}
18
19
20
return ret;
21
}
22
23
+static void
24
+gst_nvdec_clear_codec_data (GstNvDec * self)
25
+{
26
+ GstNvDecClass *klass = GST_NVDEC_GET_CLASS (self);
27
+ guint i;
28
+
29
+ if (klass->codec_type == cudaVideoCodec_HEVC) {
30
+ for (i = 0; i < G_N_ELEMENTS (self->vps_nals); i++) {
31
+ gst_clear_buffer (&self->vps_nalsi);
32
+ }
33
+ }
34
+
35
+ if (klass->codec_type == cudaVideoCodec_HEVC ||
36
+ klass->codec_type == cudaVideoCodec_H264) {
37
+ for (i = 0; i < G_N_ELEMENTS (self->sps_nals); i++) {
38
+ gst_clear_buffer (&self->sps_nalsi);
39
+ }
40
+
41
+ for (i = 0; i < G_N_ELEMENTS (self->pps_nals); i++) {
42
+ gst_clear_buffer (&self->pps_nalsi);
43
+ }
44
+ }
45
+
46
+ gst_clear_buffer (&self->codec_data);
47
+
48
+ self->need_codec_data = TRUE;
49
+}
50
+
51
static gboolean
52
gst_nvdec_stop (GstVideoDecoder * decoder)
53
{
54
55
return FALSE;
56
57
#ifdef HAVE_NVCODEC_GST_GL
58
- if (nvdec->gl_context) {
59
- gst_object_unref (nvdec->gl_context);
60
- nvdec->gl_context = NULL;
61
- }
62
-
63
- if (nvdec->other_gl_context) {
64
- gst_object_unref (nvdec->other_gl_context);
65
- nvdec->other_gl_context = NULL;
66
- }
67
-
68
- if (nvdec->gl_display) {
69
- gst_object_unref (nvdec->gl_display);
70
- nvdec->gl_display = NULL;
71
- }
72
+ gst_clear_object (&nvdec->gl_context);
73
+ gst_clear_object (&nvdec->other_gl_context);
74
+ gst_clear_object (&nvdec->gl_display);
75
#endif
76
77
- if (nvdec->input_state) {
78
- gst_video_codec_state_unref (nvdec->input_state);
79
- nvdec->input_state = NULL;
80
- }
81
+ g_clear_pointer (&nvdec->input_state, gst_video_codec_state_unref);
82
+ g_clear_pointer (&nvdec->output_state, gst_video_codec_state_unref);
83
84
- if (nvdec->output_state) {
85
- gst_video_codec_state_unref (nvdec->output_state);
86
- nvdec->output_state = NULL;
87
- }
88
+ g_clear_pointer (&nvdec->h264_parser, gst_h264_nal_parser_free);
89
+ g_clear_pointer (&nvdec->h265_parser, gst_h265_parser_free);
90
91
- gst_clear_buffer (&nvdec->codec_data);
92
+ gst_nvdec_clear_codec_data (nvdec);
93
94
return TRUE;
95
}
96
97
gst_cuda_context_pop (NULL);
98
99
/* store codec data */
100
+ gst_nvdec_clear_codec_data (nvdec);
101
+
102
if (ret && nvdec->input_state->caps) {
103
- const GValue *codec_data_value;
104
GstStructure *str;
105
106
str = gst_caps_get_structure (nvdec->input_state->caps, 0);
107
- codec_data_value = gst_structure_get_value (str, "codec_data");
108
- if (codec_data_value && GST_VALUE_HOLDS_BUFFER (codec_data_value)) {
109
- GstBuffer *codec_data = gst_value_get_buffer (codec_data_value);
110
- gst_buffer_replace (&nvdec->codec_data, codec_data);
111
+
112
+ if (klass->codec_type == cudaVideoCodec_MPEG4) {
113
+ const GValue *codec_data_value;
114
+ codec_data_value = gst_structure_get_value (str, "codec_data");
115
+ if (codec_data_value && GST_VALUE_HOLDS_BUFFER (codec_data_value)) {
116
+ GstBuffer *codec_data = gst_value_get_buffer (codec_data_value);
117
+ gst_buffer_replace (&nvdec->codec_data, codec_data);
118
+ }
119
}
120
121
/* For all CODEC we get complete picture ... */
122
123
return TRUE;
124
}
125
126
+static void
127
+gst_nvdec_store_h264_nal (GstNvDec * self, guint id,
128
+ GstH264NalUnitType nal_type, GstH264NalUnit * nalu)
129
+{
130
+ GstBuffer *buf, **store;
131
+ guint size = nalu->size, store_size;
132
+ static const guint8 start_code = { 0, 0, 1 };
133
+
134
+ if (nal_type == GST_H264_NAL_SPS || nal_type == GST_H264_NAL_SUBSET_SPS) {
135
+ store_size = GST_H264_MAX_SPS_COUNT;
136
+ store = self->sps_nals;
137
+ GST_DEBUG_OBJECT (self, "storing sps %u", id);
138
+ } else if (nal_type == GST_H264_NAL_PPS) {
139
+ store_size = GST_H264_MAX_PPS_COUNT;
140
+ store = self->pps_nals;
141
+ GST_DEBUG_OBJECT (self, "storing pps %u", id);
142
+ } else {
143
+ return;
144
+ }
145
+
146
+ if (id >= store_size) {
147
+ GST_DEBUG_OBJECT (self, "unable to store nal, id out-of-range %d", id);
148
+ return;
149
+ }
150
+
151
+ buf = gst_buffer_new_allocate (NULL, size + sizeof (start_code), NULL);
152
+ gst_buffer_fill (buf, 0, start_code, sizeof (start_code));
153
+ gst_buffer_fill (buf, sizeof (start_code), nalu->data + nalu->offset, size);
154
+
155
+ if (storeid)
156
+ gst_buffer_unref (storeid);
157
+
158
+ storeid = buf;
159
+}
160
+
161
+static GstBuffer *
162
+gst_nvdec_handle_h264_buffer (GstNvDec * self, GstBuffer * buffer)
163
+{
164
+ GstH264NalParser *parser = self->h264_parser;
165
+ GstH264NalUnit nalu;
166
+ GstH264ParserResult pres;
167
+ GstMapInfo map;
168
+ gboolean have_sps = FALSE;
169
+ gboolean have_pps = FALSE;
170
+ guint i;
171
+ GstBuffer *new_buf;
172
+
173
+ if (!gst_buffer_map (buffer, &map, GST_MAP_READ)) {
174
+ GST_WARNING_OBJECT (self, "Failed to map input buffer");
175
+ return gst_buffer_ref (buffer);
176
+ }
177
+
178
+ memset (&nalu, 0, sizeof (GstH264NalUnit));
179
+
180
+ do {
181
+ pres = gst_h264_parser_identify_nalu (parser,
182
+ map.data, nalu.offset + nalu.size, map.size, &nalu);
183
+
184
+ if (pres == GST_H264_PARSER_NO_NAL_END)
185
+ pres = GST_H264_PARSER_OK;
186
+
187
+ switch (nalu.type) {
188
+ case GST_H264_NAL_SPS:
189
+ case GST_H264_NAL_SUBSET_SPS:{
190
+ GstH264SPS sps;
191
+
192
+ if (nalu.type == GST_H264_NAL_SPS) {
193
+ pres = gst_h264_parser_parse_sps (parser, &nalu, &sps);
194
+ } else {
195
+ pres = gst_h264_parser_parse_subset_sps (parser, &nalu, &sps);
196
+ }
197
+
198
+ if (pres != GST_H264_PARSER_OK)
199
+ break;
200
+
201
gst-plugins-bad-1.20.1.tar.xz/sys/nvcodec/gstnvdec.h -> gst-plugins-bad-1.20.2.tar.xz/sys/nvcodec/gstnvdec.h
Changed
25
1
2
#endif
3
4
#include <gst/video/video.h>
5
+#include <gst/codecparsers/gsth264parser.h>
6
+#include <gst/codecparsers/gsth265parser.h>
7
#include "gstcuvidloader.h"
8
#include "gstcudaloader.h"
9
#include "gstcudacontext.h"
10
11
12
GstBuffer *codec_data;
13
gboolean recv_complete_picture;
14
+
15
+ GstH264NalParser *h264_parser;
16
+ GstH265Parser *h265_parser;
17
+ GstBuffer *vps_nalsGST_H265_MAX_VPS_COUNT;
18
+ GstBuffer *sps_nalsGST_H264_MAX_SPS_COUNT;
19
+ GstBuffer *pps_nalsGST_H264_MAX_PPS_COUNT;
20
+
21
+ gboolean need_codec_data;
22
};
23
24
struct _GstNvDecClass
25
gst-plugins-bad-1.20.1.tar.xz/sys/nvcodec/gstnvvp9dec.c -> gst-plugins-bad-1.20.2.tar.xz/sys/nvcodec/gstnvvp9dec.c
Changed
10
1
2
cudaVideoCodec_VP9, &info, self->width, self->height,
3
frame_hdr->bit_depth,
4
/* +4 for render delay */
5
- NUM_OUTPUT_VIEW)) {
6
+ NUM_OUTPUT_VIEW + 4)) {
7
GST_ERROR_OBJECT (self, "Failed to configure decoder");
8
return GST_FLOW_NOT_NEGOTIATED;
9
}
10
gst-plugins-bad-1.20.1.tar.xz/sys/v4l2codecs/gstv4l2decoder.c -> gst-plugins-bad-1.20.2.tar.xz/sys/v4l2codecs/gstv4l2decoder.c
Changed
9
1
2
g_free (self->media_device);
3
g_free (self->video_device);
4
gst_queue_array_free (self->request_pool);
5
+ gst_queue_array_free (self->pending_requests);
6
7
G_OBJECT_CLASS (gst_v4l2_decoder_parent_class)->finalize (obj);
8
}
9
gst-plugins-bad-1.20.1.tar.xz/sys/va/gstvabasedec.c -> gst-plugins-bad-1.20.2.tar.xz/sys/va/gstvabasedec.c
Changed
29
1
2
gst_buffer_pool_config_add_option (config,
3
GST_BUFFER_POOL_OPTION_VIDEO_META);
4
5
- if (_need_video_crop (base)) {
6
- gst_buffer_pool_config_add_option (config,
7
- GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT);
8
- gst_buffer_pool_config_set_video_alignment (config, &base->valign);
9
- }
10
+ if (_need_video_crop (base))
11
+ gst_buffer_pool_config_set_va_alignment (config, &base->valign);
12
13
gst_buffer_pool_config_set_va_allocation_params (config,
14
VA_SURFACE_ATTRIB_USAGE_HINT_DECODER);
15
16
gst_buffer_pool_config_add_option (config,
17
GST_BUFFER_POOL_OPTION_VIDEO_META);
18
19
- if (base->need_valign) {
20
- gst_buffer_pool_config_add_option (config,
21
- GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT);
22
- gst_buffer_pool_config_set_video_alignment (config, &base->valign);
23
- }
24
+ if (base->need_valign)
25
+ gst_buffer_pool_config_set_va_alignment (config, &base->valign);
26
27
gst_buffer_pool_config_set_va_allocation_params (config,
28
VA_SURFACE_ATTRIB_USAGE_HINT_DECODER);
29
gst-plugins-bad-1.20.1.tar.xz/sys/va/gstvapool.c -> gst-plugins-bad-1.20.2.tar.xz/sys/va/gstvapool.c
Changed
63
1
2
static const gchar **
3
gst_va_pool_get_options (GstBufferPool * pool)
4
{
5
- static const gchar *options = { GST_BUFFER_POOL_OPTION_VIDEO_META,
6
- GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT, NULL
7
- };
8
+ static const gchar *options = { GST_BUFFER_POOL_OPTION_VIDEO_META, NULL };
9
return options;
10
}
11
12
13
return TRUE;
14
}
15
16
+static inline gboolean
17
+gst_buffer_pool_config_get_va_alignment (GstStructure * config,
18
+ GstVideoAlignment * align)
19
+{
20
+ return gst_structure_get (config,
21
+ "va-padding-top", G_TYPE_UINT, &align->padding_top,
22
+ "va-padding-bottom", G_TYPE_UINT, &align->padding_bottom,
23
+ "va-padding-left", G_TYPE_UINT, &align->padding_left,
24
+ "va-padding-right", G_TYPE_UINT, &align->padding_right, NULL);
25
+}
26
+
27
static gboolean
28
gst_va_pool_set_config (GstBufferPool * pool, GstStructure * config)
29
{
30
31
GST_BUFFER_POOL_OPTION_VIDEO_META);
32
33
/* parse extra alignment info */
34
- has_alignment = gst_buffer_pool_config_has_option (config,
35
- GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT);
36
+ has_alignment = gst_buffer_pool_config_get_va_alignment (config,
37
+ &video_align);
38
39
if (has_alignment) {
40
- gst_buffer_pool_config_get_video_alignment (config, &video_align);
41
-
42
width += video_align.padding_left + video_align.padding_right;
43
height += video_align.padding_bottom + video_align.padding_top;
44
45
46
gst_structure_set (config, "usage-hint", G_TYPE_UINT, usage_hint, NULL);
47
}
48
49
+void
50
+gst_buffer_pool_config_set_va_alignment (GstStructure * config,
51
+ const GstVideoAlignment * align)
52
+{
53
+ gst_structure_set (config,
54
+ "va-padding-top", G_TYPE_UINT, align->padding_top,
55
+ "va-padding-bottom", G_TYPE_UINT, align->padding_bottom,
56
+ "va-padding-left", G_TYPE_UINT, align->padding_left,
57
+ "va-padding-right", G_TYPE_UINT, align->padding_right, NULL);
58
+}
59
+
60
gboolean
61
gst_va_pool_requires_video_meta (GstBufferPool * pool)
62
{
63
gst-plugins-bad-1.20.1.tar.xz/sys/va/gstvapool.h -> gst-plugins-bad-1.20.2.tar.xz/sys/va/gstvapool.h
Changed
34
1
2
#pragma once
3
4
#include <gst/gst.h>
5
+#include <gst/video/video.h>
6
7
G_BEGIN_DECLS
8
9
10
GstBufferPool * gst_va_pool_new (void);
11
gboolean gst_va_pool_requires_video_meta (GstBufferPool * pool);
12
void gst_buffer_pool_config_set_va_allocation_params (GstStructure * config,
13
- guint usage_hint);
14
+ guint usage_hint);
15
+
16
+void gst_buffer_pool_config_set_va_alignment (GstStructure * config,
17
+ const GstVideoAlignment * align);
18
19
GstBufferPool * gst_va_pool_new_with_config (GstCaps * caps,
20
- guint size,
21
- guint min_buffers,
22
- guint max_buffers,
23
- guint usage_hint,
24
- GstAllocator * allocator,
25
- GstAllocationParams * alloc_params);
26
+ guint size,
27
+ guint min_buffers,
28
+ guint max_buffers,
29
+ guint usage_hint,
30
+ GstAllocator * allocator,
31
+ GstAllocationParams * alloc_params);
32
33
G_END_DECLS
34
gst-plugins-bad-1.20.1.tar.xz/tests/examples/camerabin2/gst-camerabin2-test.c -> gst-plugins-bad-1.20.2.tar.xz/tests/examples/camerabin2/gst-camerabin2-test.c
Changed
10
1
2
change_mode_after = gst_util_get_timestamp ();
3
}
4
5
- return TRUE;
6
+ return res;
7
error:
8
cleanup_pipeline ();
9
return FALSE;
10