Andrey Sazonov [Thu, 21 May 2020 14:28:38 +0000 (14:28 +0000)]
planaraudioadapter: fix possible NULL ptr dereference
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1288>
Andrey Sazonov [Thu, 21 May 2020 11:24:51 +0000 (11:24 +0000)]
sdpdemux: fix klocwork issues
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1287>
Matthew Waters [Tue, 19 May 2020 04:58:35 +0000 (14:58 +1000)]
amc/videodec: only retrieve the stride/slice-height for raw output
When outputting to a surface, these values may not exist.
As found on a Google Pixel 3.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1284>
Stéphane Cerveau [Thu, 14 May 2020 15:13:00 +0000 (17:13 +0200)]
meson: add libopenjp2 fallback for openjpeg
As a wrap is now available in gst-build, the fallback
can be used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1270>
Ederson de Souza [Wed, 13 May 2020 22:02:41 +0000 (15:02 -0700)]
avtp: Add libavtp fallback dependence
So that libavtp can be found if added as subproject on gst-build.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1271>
Seungha Yang [Fri, 1 May 2020 06:58:09 +0000 (15:58 +0900)]
mediafoundation: Add device provider implementation
Only static device probing is supported for now
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1236>
Seungha Yang [Fri, 1 May 2020 06:12:43 +0000 (15:12 +0900)]
mfsourceobject: Store selected device path, name and index
Update path, name and index with selected device so that checked by
get_property() after constructed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1236>
Edward Hervey [Wed, 20 May 2020 08:54:21 +0000 (10:54 +0200)]
rtmp2src: Answer scheduling query
Just like for rtmpsrc, we must inform downstream that we are a
sequential (i.e. don't do random access efficiently) and
bandwith-limited (i.e. might need buffering downstream) element
Fixes buffering issues with playbin3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1282>
Nicolas Dufresne [Wed, 6 May 2020 16:27:56 +0000 (12:27 -0400)]
v4l2slh264dec: Request large enough bitstream buffer
The Cedrus driver would otherwise choose 1KB buffer, which is too small.
This follows what some drivers do, which is simply to use the size a
packed raw image would have. Specifications do not really guaranty any minimum
compression ratio.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1268>
Nicolas Dufresne [Tue, 5 May 2020 21:55:19 +0000 (17:55 -0400)]
v4l2slh264dec: Add slice based decoder support
This adds support for slice based decoder like the Allwinner/Cedrus driver. In
order to keep things efficient, we hold the sink buffer until we reach the end
of the picture. Note that as we don't know which one is last, we lazy queue the
slices. This effectively introduces one slice latency.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1268>
Nicolas Dufresne [Thu, 30 Apr 2020 19:17:05 +0000 (15:17 -0400)]
v4l2codecdec: Fix error handling
If none of the format the HW produce is supported, the fiter will be NULL,
which would lead to assertion when trying to release it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1268>
Nicolas Dufresne [Thu, 30 Apr 2020 18:18:47 +0000 (14:18 -0400)]
v4l2decoder: Add legacy non-multiplanar support
The Cedrus driver uses the lagacy buffer type (non-mplane). This automatically
detect and use the right v4l2_buf_type. This also affect code using
v4l2_buffer and v4l2_format structures.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1268>
Nicolas Dufresne [Tue, 5 May 2020 21:50:22 +0000 (17:50 -0400)]
v4l2codecs: Update kernel headers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1268>
Seungha Yang [Sat, 16 May 2020 12:52:59 +0000 (21:52 +0900)]
d3d11convert: Fix fallback texture setup when resolution is not even number
When texture format is semi-planar, resolution should be even number,
and add missing P016 format handling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1275>
Seungha Yang [Sat, 16 May 2020 12:45:02 +0000 (21:45 +0900)]
d3d11convert: Fix fallback texture copy
Fix texture copy when input texture has non-zero subresource index
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1275>
Seungha Yang [Sat, 16 May 2020 11:45:23 +0000 (20:45 +0900)]
d3d11: Add support for video rescale and rename element to d3d11convert
GstD3D11ColorConverter implementation is able to rescale video as well.
By doing colorspace conversion and rescale at once, we can save
one cycle of shader pipeline which will can save GPU resource.
Since this element can support color space conversion and rescale,
it's renamed as d3d11convert
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1275>
Seungha Yang [Sat, 16 May 2020 11:12:33 +0000 (20:12 +0900)]
d3d11: Move scoring util method for colorspace conversion to colorconvert element
It's used only by colorconvert element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1275>
Víctor Manuel Jáquez Leal [Sat, 16 May 2020 09:14:58 +0000 (11:14 +0200)]
codecs: h264decoder: chain finalize vmethod
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Nicolas Dufresne [Wed, 13 May 2020 21:23:12 +0000 (17:23 -0400)]
codecparsers: h264: Only set relevant default weight values
This is minor optimization to avoid setting values we don't need. It also
makes debugging easier since only relevant values a non-zero now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Nicolas Dufresne [Wed, 13 May 2020 19:32:44 +0000 (15:32 -0400)]
codecparsers: h264: Fix default ref list size
The default in PPS was not applied properly. The default does not apply for
I-Slice and l1 default only applies for B-Slice. This fixes the slice values
for num_ref_idx_l0_active_minus1 and num_ref_idx_l1_active_minus1.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Nicolas Dufresne [Tue, 12 May 2020 16:23:15 +0000 (12:23 -0400)]
codecs: h264decoder: Use calculated values for max_pic_num/frame_num
The parser pre-calculate these already, just use them.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Víctor Manuel Jáquez Leal [Sun, 3 May 2020 15:30:34 +0000 (17:30 +0200)]
codecs: h264decoder: ref pic lists as decode_slice parameters
Pass reference picture lists to decode_slice() vmethods
Change gstv4l2codech264dec and gstnvh264dec accordingly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Víctor Manuel Jáquez Leal [Mon, 27 Apr 2020 14:53:45 +0000 (16:53 +0200)]
codecs: h264decoder: handle reference picture lists
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Nicolas Dufresne [Fri, 15 May 2020 18:56:27 +0000 (14:56 -0400)]
codecs: h264decoder: Port from GList to GArray
Using glist requires a lot of small allocation at runtime and also
it comes with a slow sort algorithm. As we play with that for very
frame and slices, use GArray instead. Note that we cache some arrays
in the instance as there is no support for stack allocated arrays
in GArray.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Nicolas Dufresne [Fri, 8 May 2020 21:56:48 +0000 (17:56 -0400)]
codecs: h264decoder: Make get_long_ref_by_pic_num() transfer none
We don't use the extra reference, so let's just avoid the extra
ref/unref.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Nicolas Dufresne [Wed, 6 May 2020 16:23:34 +0000 (12:23 -0400)]
codecs: h264decoder: Make get_short_ref_by_pic_num() transfer none
We don't use the extra reference, so let's just avoid the extra
ref/unref.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Stéphane Cerveau [Tue, 19 May 2020 13:39:50 +0000 (15:39 +0200)]
tests: fix nalutils file name
The filename was too long causing issues with ccache
Fix https://gitlab.freedesktop.org/gstreamer/gst-build/-/issues/97
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1281>
Jan Alexander Steffens (heftig) [Mon, 18 May 2020 12:19:04 +0000 (14:19 +0200)]
mpegtsdemux: tests: Add simple tests for tsparse and tsdemux
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1274>
Jan Alexander Steffens (heftig) [Fri, 15 May 2020 15:05:59 +0000 (17:05 +0200)]
mpegtsdemux: Close a buffer leak and simplify input_done
tsparse leaked input buffers quite badly:
GST_TRACERS=leaks GST_DEBUG=GST_TRACER:9 gst-launch-1.0 audiotestsrc num-buffers=3 ! avenc_aac ! mpegtsmux ! tsparse ! fakesink
The input_done vfunc was passed the input buffer, which it had to
consume. For this reason, the base class takes a reference on the buffer
if and only if input_done is not NULL.
Before
34af8ed66a7c63048ce0bdf59bbe61011d7c6292, input_done was used in
tsparse to pass on the input buffer on the "src" pad. That commit
changed the code to packetize for that pad as well and removed the use
of input_done.
Afterwards,
0d2e9085236ed94622c327f73489e558cc95d05f set input_done
again in order to handle automatic alignment of the output buffers to
the input buffers. However, it ignored the provided buffer and did not
even unref it, causing a leak.
Since no code makes use of the buffer provided with input_done, just
remove the argument in order to simplify things a bit.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1274>
Mats Lindestam [Sun, 17 May 2020 08:27:03 +0000 (10:27 +0200)]
gstcurlhttpsink: Set 'Expect: 100-continue'-header
In the upgrade of libcurl from 7.64.1 to 7.69.1 the
EXPECT_100_THRESHOLD has been increased from 1 Kb to 1 Mb
(see https://curl.haxx.se/mail/lib-2020-01/0050.html).
This caused the gstcurlhttpsink to not being able to rewind
and resend in the case, e.g. response '401 Unauthorized'.
Now the 'Expect: 100-continue'-header is explicitly set in
the gstcurlhttpsink.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1276>
Arun Raghavan [Wed, 29 Apr 2020 20:43:06 +0000 (16:43 -0400)]
opensles: Remove hard-coded buffer-/latency-time values
These were originally required in early Android versions, but are no
longer needed.
Seungha Yang [Thu, 14 May 2020 11:47:06 +0000 (20:47 +0900)]
mediafoundation: Refactor GstMFSourceObject implementation
* Move CoInitializeEx/CoUninitialize pair into thread function in order to
ensure MTA COM thread
* Move common code to baseclass
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1269>
Seungha Yang [Thu, 14 May 2020 11:17:33 +0000 (20:17 +0900)]
mediafoundation: Remove COM thread constraints from GstMFTransform object
Move CoInitializeEx/CoUninitialize pair into our dedicated thread so that
we can ensure COM thread is MTA. This will remove thread constraints
around plugin init.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1269>
Matthew Waters [Fri, 15 May 2020 03:52:06 +0000 (13:52 +1000)]
amcvideodec: fix sync meta copying not taking a reference
Fixup for
9b9e39be248389370e80b429da5a528418733483: amc: Fix crash when a sync_meta survives its sink
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/603
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1272>
J. Kim [Mon, 13 Apr 2020 09:09:55 +0000 (18:09 +0900)]
srtobject: add streamid property
The stream id starts with '#!::' according to SRT Access Control[1],
but GstURI requires URI encoded string.This commit introduces additional
property to set the id by normal string.
[1] https://github.com/Haivision/srt/blob/master/docs/AccessControl.md
Nirbheek Chauhan [Mon, 11 May 2020 23:30:36 +0000 (05:00 +0530)]
meson: Pass native: false to add_languages()
This is needed for cross-compiling without a build machine compiler
available. The option was added in 0.54, but we only need this in
Cerbero and it doesn't affect older versions so it should be ok.
Will only cause a spurious warning.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1266>
Alex Hoenig [Tue, 12 May 2020 14:55:45 +0000 (10:55 -0400)]
mpegtsmux: detect and ignore gap buffers
Fixes #1291. Without this, when a stream has gaps and then resumes, the next buffer PTS that is written to the TS is given the PTS of the first gap.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1263>
Matthew Waters [Tue, 12 May 2020 06:05:01 +0000 (16:05 +1000)]
ccconverter: check fraction multiply for overflow
It should not happen and if it does, something went very wrong earlier
CID
1463350
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1262>
Matthew Waters [Tue, 12 May 2020 06:01:42 +0000 (16:01 +1000)]
ccconverter: tighten up a couple of NULL checks
CID
1463347
CID
1463346
CID
1463345
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1262>
Matthew Waters [Tue, 12 May 2020 06:00:58 +0000 (16:00 +1000)]
ccconverter: fix unintialized read of mapped output info in error case
We only need to gst_buffer_unmap() if we have gst_buffer_map()ed. In
most cases we can shorten the lenght of time we need to map the output
buffer. Fix similar occurences elsewhere.
CID
1463349
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1262>
Matthew Waters [Tue, 12 May 2020 05:24:32 +0000 (15:24 +1000)]
ccconverter: fix uninitialized read in error case
CID
1463351
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1262>
Ting-Wei Lan [Sun, 10 May 2020 09:38:11 +0000 (17:38 +0800)]
v4l2codecs: Fix compilation error on FreeBSD
This commit does the following things to fix compilation on FreeBSD:
1. Add required typedefs to linux/types-compat.h.
2. Remove unnecessary include linux/ioctl.h and replace linux/types.h
with linux/types-compat.h. Both files do not exist on FreeBSD.
3. Check the header including makedev macro. FreeBSD does not have
sys/sysmacros.h, and including it unconditionally causes error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1259>
Matthew Waters [Mon, 11 May 2020 07:14:09 +0000 (17:14 +1000)]
ccconverter: implement discont handling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Thu, 7 May 2020 13:59:30 +0000 (23:59 +1000)]
ccconverter: use a better padding byte sequence for writing cdp
0xf8 can be interpreted as cea608 data at the beginning of a cdp packet
as the cc_valid bit is not checked when cc_valid in (0b00 or 0b01).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Thu, 19 Mar 2020 06:42:13 +0000 (17:42 +1100)]
ccconverter: split temporary storage into 3
Instead of storing the raw cc_data, store the 2 cea608 fields individually
as well as the ccp data.
Simply copying the input cc_data to the output cc_data violates a number of
requirements in the cea708 specification. The most prominent being, that
cea608 triples must be placed at the beginning of each cdp.
We also need to comply with the framerate-dpendent limits for both the
cea608 and the ccp data which may involve splitting or merging some
cea608 data but not ccp data or vice versa.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Tue, 17 Mar 2020 06:23:44 +0000 (17:23 +1100)]
ccconvert: compact input cc_data where possible
Skip over padding cc_data triples.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Thu, 12 Mar 2020 23:54:02 +0000 (10:54 +1100)]
ccconverter: implement support for CDP framerate conversions
- Any format involving CDP is supported.
- Time codes (if present) are scaled as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Thu, 12 Mar 2020 05:08:54 +0000 (16:08 +1100)]
tests/ccconverter: test the time codes are successfully passed through
Where time codes are not stored in the caption data themselves
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Thu, 12 Mar 2020 04:06:46 +0000 (15:06 +1100)]
ccconverter: introduce define for max cdp packet length
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Thu, 12 Mar 2020 04:01:02 +0000 (15:01 +1100)]
ccconverter: don't rely on external state in *_internal()
This allows using the _internal() variants for simply converting some
caption data without relying on any external state.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Thu, 12 Mar 2020 03:06:49 +0000 (14:06 +1100)]
ccconverter: cc_count limits are per framerate
Enforce this and add a test for cdp input being too large.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Thu, 12 Mar 2020 01:54:41 +0000 (12:54 +1100)]
ccconverter: refactor cdp id, fps, max_cc_count into a table
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Matthew Waters [Wed, 11 Mar 2020 22:55:40 +0000 (09:55 +1100)]
ccconverter: pivot to implementing generate_output
Will make a n-n buffer element much easier to implement.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1116>
Jan Alexander Steffens (heftig) [Sat, 9 May 2020 17:59:46 +0000 (19:59 +0200)]
vulkan: Drop use of VK_RESULT_BEGIN_RANGE
This was removed in Vulkan 1.2.140.
> Shortly after 2020-04-24, we will be removing the automatically
> generated `VK_*_BEGIN_RANGE`, `VK_*_END_RANGE`, and `VK_*_RANGE_SIZE`
> tokens from the Vulkan headers. These tokens are currently defined for
> some enumerated types, but are explicitly not part of the Vulkan API.
> They existed only to support some Vulkan implementation internals,
> which no longer require them. We will be accepting comments on this
> topic in [#1230], but we strongly suggest any external projects using
> these tokens immediately migrate away from them.
[#1230]: https://github.com/KhronosGroup/Vulkan-Docs/issues/1230
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1255>
Sebastian Dröge [Fri, 8 May 2020 19:36:01 +0000 (22:36 +0300)]
audiobuffersplit: Perform discont tracking on running time
Otherwise we would have to drain on every segment event. Like this we
can handle segment events that don't cause a discontinuity in running
time to be handled without draining.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1254>
Sebastian Dröge [Fri, 8 May 2020 18:36:44 +0000 (21:36 +0300)]
audiobuffersplit: Keep incoming and outgoing segments separate
We might have to drain already queued input based on the old segment
before forwarding the new segment event. The new segment is only
forwarded after a discont as otherwise we might cause unnecessary
timestamp jumps as we output buffers timestamped based on sample counts.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1254>
Chris Ayoup [Thu, 30 Apr 2020 16:01:13 +0000 (16:01 +0000)]
webrtc: move filtering properties to webrtcice
We want webrtcbin to only expose properties that are defined in JSEP, so
these additional properties should be moved out. In order to access
them, the webrtcice instance is exposed from webrtcbin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1223>
Chris Ayoup [Fri, 17 Apr 2020 18:00:59 +0000 (18:00 +0000)]
webrtc: allow setting local IP addresses
If a local IP address is specified, ICE gathering can be much faster
in environments where there are multiple IP addreses but only some are
usable (for example, if you are running docker on the machine).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1223>
Chris Ayoup [Thu, 16 Apr 2020 22:37:35 +0000 (22:37 +0000)]
webrtc: Allow toggling TCP and UDP candidates
Add some properties to allow TCP and UDP candidates to be toggled. This
is useful in cases where someone is using this element in an environment
where it is known in advance whether a given transport will work or not
and will prevent wasting time generating and checking candidate pairs
that will not succeed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1223>
Haihao Xiang [Thu, 2 Apr 2020 02:44:31 +0000 (10:44 +0800)]
msdkvpp: clear the parameters after closing the session
Otherwise the stale values are used for the new process.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1159>
Sebastian Dröge [Sun, 10 May 2020 08:23:02 +0000 (11:23 +0300)]
spanplc: Don't segfault when retrieving the stats property without a spanplc context
For example when trying to get the property value in NULL state.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1258>
Sebastian Dröge [Sun, 10 May 2020 08:16:44 +0000 (11:16 +0300)]
onviftimestamp: Add missing `break` in set_property()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1257>
Nicolas Dufresne [Thu, 7 May 2020 18:05:16 +0000 (14:05 -0400)]
test: h265parse: Test parsing buffer the ends with half a NAL header
This test cover the case where we are parsing, but our current buffers ends
with half the NAL header (which is 2 bytes in HEVC). Previously we would
throw an error message on the bus.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Nicolas Dufresne [Thu, 7 May 2020 17:59:33 +0000 (13:59 -0400)]
h265parse: Ensure parsing ends on start-code + full header
The parser is used all over the place assuming that after calling
gst_h265_parser_identify_nalu(), the start-code found is can also be
identified. In H264 this works, because scan_for_start_code rely on
gst_byte_reader_masked_scan_uint32() that ensures that 1 byte passed the 3
bytes start code is found. But for HEVC, we need two bytes to identify the
following NAL.
This patch will return NO_NAL_END, even if a start code is found in the case
there was not enough bytes. This solution was chosen to maintain backward
compatibility, and reduce complexicity.
Fixes #1287
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Nicolas Dufresne [Thu, 7 May 2020 15:09:23 +0000 (11:09 -0400)]
test: h264/h265: Add test for four bytes start code initial skip
This test detects if the parser have skipped too much and dropped meaninful
NALs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Nicolas Dufresne [Thu, 7 May 2020 16:02:40 +0000 (12:02 -0400)]
test: h264/h265: Constify all test buffers
This ensure that no test modify other tests data.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Nicolas Dufresne [Thu, 7 May 2020 15:06:45 +0000 (11:06 -0400)]
h264/h265parse: Fix initial skip
Account for start codes possibly be 4 bytes. For HEVC, also take into
account that we might be missing only one of the two identification
bytes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Nicolas Dufresne [Thu, 7 May 2020 12:29:28 +0000 (08:29 -0400)]
h265parse: Ensure correct timestamps
If the input has a miss-placed filler zero byte (e.g. a filler without a 4
bytes start code on the next NAL), we would endup using the same timestamp
twice. Ask the base class to read the timestamp from the buffer were the NAL
actually starts.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Nicolas Dufresne [Thu, 7 May 2020 11:43:30 +0000 (07:43 -0400)]
h264parser: Removed impossible error case
Same as done for H264, this error was trying to catch the case where we had
a start code without any bytes afterward. This will never happen since the
start code scanner only returns a match if there is one byte after start
code (pattern 0x00000100 / mask 0xffffff00). In H264, once byte is sufficient
to identify the NALU.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Nicolas Dufresne [Thu, 7 May 2020 02:28:34 +0000 (22:28 -0400)]
h264parse: Properly handle 4 bytes start code
This will stop stripping four bytes start code. This was fixed and broken
again as it was causing the a timestamp shift. We now call
gst_base_parse_set_ts_at_offset() with the offset of the first NAL to ensure
that fixing a moderatly broken input stream won't affect the timestamps. We
also fixes the unit test, removing a comment about the stripping behaviour not
being correct.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Nicolas Dufresne [Thu, 7 May 2020 02:18:12 +0000 (22:18 -0400)]
h265parser: Fix NAL size check for identification
Unlike H264, H265 requires 2 bytes after the start code to allow NAL
identification. This would otherwise report a broken NAL and skip
important data.
Fixes #1287
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Nicolas Dufresne [Thu, 7 May 2020 02:13:45 +0000 (22:13 -0400)]
h265parser: Removed impossible error case
This error was trying to catch the case where we had a start code without any
bytes afterward. This will never happen since the start code scanner only returns
a match if there is one byte adter start code (pattern 0x00000100 / mask
0xffffff00).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1251>
Xu Guangxin [Wed, 29 Apr 2020 08:19:08 +0000 (16:19 +0800)]
msdk: bufferpool: set alignment to video meta
else gst_video_meta_validate_alignment will report error like
"videometa gstvideometa.c:416:gst_video_meta_validate_alignment: Stride of plane 0 defined in meta (384) is different from the one computed from the alignment (320)"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1224>
Sebastian Dröge [Wed, 6 May 2020 17:04:17 +0000 (20:04 +0300)]
timecodestamper: Unref latency query after usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1249>
Sebastian Dröge [Wed, 6 May 2020 08:47:56 +0000 (11:47 +0300)]
musepackdec: Don't fail all queries if no sample rate is known yet
The sample rate is only needed for the POSITION/DURATION queries and we
would otherwise fail important queries like the CAPS query.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/498
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1248>
Luka Blaskovic [Fri, 1 May 2020 05:46:56 +0000 (07:46 +0200)]
opencv: allow compilation against 4.3.x
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1235>
Matthew Waters [Wed, 6 May 2020 05:36:19 +0000 (15:36 +1000)]
webrtc: fix an off-by-one calculating low-threshold
We were not signalling low-threshold when the previous amount was at
exactly the low-threshold mark.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1247>
Matthew Waters [Wed, 6 May 2020 05:35:26 +0000 (15:35 +1000)]
webrtc: fix a slightly racy test
There is no guarantee that the peer data channel has transitioned to
open when we do.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1247>
Matthew Waters [Wed, 6 May 2020 05:49:05 +0000 (15:49 +1000)]
webrtc: remove debugging leftover
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1247>
Matthew Waters [Tue, 5 May 2020 14:30:34 +0000 (00:30 +1000)]
webrtc: always reply to a promise
Otherwise, we defeat the purpose of a promise.
We were not replying when the state was closed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1240>
Matthew Waters [Tue, 5 May 2020 14:25:45 +0000 (00:25 +1000)]
webrtc: name threads based on the element name
Makes debugging a busy loop possibly easier
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1240>
Matthew Waters [Tue, 5 May 2020 07:15:51 +0000 (17:15 +1000)]
tests/webrtc: fix a data channel leak in a test
test_data_channel_create_after_negotiate overrides the data_channel_data
without ever freeing it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1240>
Matthew Waters [Tue, 5 May 2020 07:14:46 +0000 (17:14 +1000)]
webrtc: correctly use the pad template
GstHarness uses this for releasing request pads correctly. Fixes
numerous leaks in the webrtc unit tests.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1240>
Matthew Waters [Tue, 5 May 2020 04:35:10 +0000 (14:35 +1000)]
webrtc: Fix a couple of renegotiation races
When negotiating the SDP we should only connect the streams that are
actually mentioned in the SDP. All other streams are not relevant at
this time and would likely be part of a future SDP update. Fixes a
couple of the renegotiation webrtc unit tests.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1240>
Matthew Waters [Tue, 5 May 2020 04:33:34 +0000 (14:33 +1000)]
tests/webrtc: move bus thread creation earlier
Fixes a small deadlock race where the bus watch GSource could execute before
the unlock mutex GSource.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1240>
Matthew Waters [Mon, 4 May 2020 04:39:45 +0000 (14:39 +1000)]
tests: add libnice to the plugin loading whitelist
Allows webrtcbin to actually unit test some negotiation scenarios.
Without this, only two of the possible 33 tests are being executed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1240>
Nicolas Dufresne [Tue, 5 May 2020 16:01:21 +0000 (12:01 -0400)]
v4l2slvp8dec: Flip the meaning of segment_feature_mode
In section 9.3.4 a), segment_feature_mode have 0 for absolute and 1 for delta,
while in 19.2, it says the opposite. But the reference code, which usually
rules over the text state that 1 means absolute:
if (hdr->update_data)
{
hdr->abs = bool_get_bit(bool);
And uses it with that meaning to decide weither to override the existing value
or just add the detla. This fixes multiple decoding issues.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1245>
Nicolas Dufresne [Mon, 4 May 2020 19:33:39 +0000 (15:33 -0400)]
v4l2slvp8dec: Copy header version
This field was not copied.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1245>
Nicolas Dufresne [Mon, 4 May 2020 18:54:23 +0000 (14:54 -0400)]
v4l2slvp8dec: Add debugging for reference frames
This simply trace the frame number of the references used for decoding.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1245>
Nicolas Dufresne [Mon, 4 May 2020 18:52:45 +0000 (14:52 -0400)]
v4l2slvp8dec: Ensure width/height is always set
Our parser strictly read the bitstream. As it's known from DXVA that always
having a valid width/height might be needed, use the cached width/height
instead of the value from the parser. This didn't impact Hantro driver.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1245>
Nicolas Dufresne [Mon, 4 May 2020 18:52:02 +0000 (14:52 -0400)]
v4l2slvp8dec: Fix debug category name
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1245>
Edward Hervey [Tue, 5 May 2020 15:40:51 +0000 (17:40 +0200)]
iqa: Fix all leaks in error path
CID #
1456049
CID #
1456080
CID #
1456083
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1244>
He Junyan [Sat, 28 Mar 2020 16:45:47 +0000 (00:45 +0800)]
test: h265parser: Add a test case for SCC extension.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1146>
He Junyan [Sat, 28 Mar 2020 06:46:13 +0000 (14:46 +0800)]
libs: parser: h265: Add SCC extension support.
Add support for screen content coding extensions profiles.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1146>
Seungha Yang [Tue, 5 May 2020 16:25:04 +0000 (01:25 +0900)]
d3d11vp8dec: Remove useless assign operation
It's already been done in the line just above.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1246>
Edward Hervey [Tue, 5 May 2020 14:07:40 +0000 (16:07 +0200)]
check: Fix dash mpd unit test
Unexpected critical/warning: g_object_set_is_valid_property: object class 'GstMPDBaseURLNode' has no property named 'service location'
Stack trace:
gst_debug_get_stack_trace (gstinfo.c:3021)
gst_check_log_critical_func (gstcheck.c:281)
g_logv (gmessages.c:1350)
g_log (gmessages.c:1415)
g_object_set_valist (gobject.c:2327)
gst_mpd_client_add_baseurl_node (gstmpdclient.c:3142)
dash_mpdparser_check_mpd_client_set_methods (dash_mpd.c:6192)
srunner_run_tagged (check_run.c:465)
gst_check_run_suite (gstcheck.c:1086)
main (dash_mpd.c:6521)
__libc_start_main (libc-start.c:308)
_start (/home/bilboed/work/devel/gst-build/build/subprojects/gst-plugins-bad/tests/check/elements_dash_mpd:0x40554a)
Seungha Yang [Tue, 5 May 2020 11:32:53 +0000 (20:32 +0900)]
d3d11window: Fix processor output view resource leak
Because this object holds reference to native d3d11 device handle internally,
related native d3d11 objects would be leaked as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1243>
Matthew Waters [Fri, 1 May 2020 04:19:56 +0000 (14:19 +1000)]
sctp: enable usrsctp debug when supported
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1234>
Tim-Philipp Müller [Sun, 3 May 2020 10:05:32 +0000 (10:05 +0000)]
tests: curlhttpsrc: fix compiler warning on raspbian
tests/check/elements/curlhttpsrc.c:142:14: warning: format ‘%lu’
expects argument of type ‘long unsigned int’, but argument 8 has
type ‘gsize’ {aka ‘unsigned int’}
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1239>
Tim-Philipp Müller [Sun, 3 May 2020 09:59:45 +0000 (09:59 +0000)]
nvcodec: fix compiler warning in certain setups
Fixes gstnvh264dec.c:648:12: warning: unused variable ‘ret’
compiler warning on raspbian where HAVE_NVCODEC_GST_GL is
not defined.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1239>