Xavier Claessens [Tue, 26 Mar 2019 15:24:58 +0000 (11:24 -0400)]
amc: Select between encoder/decoder at GstAmcCodec construct time
Magical 0/1 values where passed to gst_amc_codec_configure() flags
argument. It's more natural to have a boolean is gst_amc_codec_new().
Xavier Claessens [Tue, 13 Nov 2018 18:16:34 +0000 (13:16 -0500)]
amc: Remove gst_amc_format_contains_key()
It is not needed, we can just try to get the key and ignore error.
NdkMediaFormat doesn't have that method.
Xavier Claessens [Mon, 12 Nov 2018 19:02:37 +0000 (14:02 -0500)]
amc: Turn GstAmcSurfaceTexture into a base class with JNI implementation
Xavier Claessens [Sun, 11 Nov 2018 13:51:04 +0000 (08:51 -0500)]
amc: Create JNI wrapper for MediaCodecList
There is no NdkMediaCodecList API yet, but it is still better to isolate
JNI code. This will facilitate porting to a native API if Google ever
release one.
Xavier Claessens [Sat, 10 Nov 2018 21:51:02 +0000 (16:51 -0500)]
amc: Move MediaCodec JNI wrapper into its own module
This will facilitate adding another implementation based on
NdkMediaCodec instead of JNI.
Nirbheek Chauhan [Tue, 20 Aug 2019 08:51:17 +0000 (14:21 +0530)]
sctp: Fix crash on free() when using the MSVC binaries
On Windows, if libusrsctp and gstreamer are built with different
C runtimes (CRT), we cannot free memory allocated inside libusrsctp
with the `free()` function from gstreamer's CRT.
`usrsctp_freedumpbuffer()` simply calls `free()`, but because of the
way DLLs work on Windows, it will always call the free function from
the correct CRT.
Matthew Waters [Wed, 14 Aug 2019 12:08:34 +0000 (22:08 +1000)]
h264parse: don't critical on VUI parameters > 2^31
A guint32 greater than 2^31 would be interpreted as negative by
gst_util_uint64_scale_int() and critical. Use the 64-bit integer version
of the function instead.
Seungha Yang [Tue, 13 Aug 2019 01:07:38 +0000 (10:07 +0900)]
nvdec: Fix possible null object unref
gst_query_get_n_allocation_pools > 0 does not guarantee that
the N th internal array has GstBufferPool object. So users should
check the returned GstBufferPool object from
gst_query_parse_nth_allocation_pool.
Seungha Yang [Mon, 19 Aug 2019 04:22:20 +0000 (13:22 +0900)]
nvcodec: Use default flag for CUDA stream creation
Since nvdec/nvenc engine is running on default stream,
non-default CUDA stream should be synchronized with default
stream eventually.
Wangfei [Thu, 15 Aug 2019 02:58:01 +0000 (10:58 +0800)]
h26[45]parser: Fix emulation prevention byte detection
Add a separate epb_cache variable to the codecparser NalReader to
detect Emulation Prevention Bytes separately from the main bit cache.
This fixes problems where the existing logic can mistakenly detect
multiple EPB with a sequence like: 0x00 0x00 0x03 0x00 0x03. In that
case, the 5th byte should not be regarded as an EPB.
Seungha Yang [Sun, 18 Aug 2019 13:51:18 +0000 (22:51 +0900)]
nvenc: Use non default CUDA stream and async operation
Use CUDA async operation if possible with non default CUDA stream
Seungha Yang [Sun, 18 Aug 2019 13:07:38 +0000 (22:07 +0900)]
nvdec: Don't use default CUDA stream
Async CUDA operation with default stream (NULL CUstream) is not much
beneficial than blocking operation since all CUDA operations which belong
to the CUDA context will be synchronized with the default stream's operation.
Note that CUDA stream will share all resources of the corresponding CUDA context
but which can help parallel operation similar to the relation between thread and process
Seungha Yang [Sun, 18 Aug 2019 13:14:37 +0000 (22:14 +0900)]
nvdec: Push/Pop CUDA context around library API call
Seungha Yang [Sun, 18 Aug 2019 06:45:37 +0000 (15:45 +0900)]
nvdec: Fix timestamp mismatch on draining frames
The internal decoding state must be GST_NVDEC_STATE_PARSE before
calling CuvidParseVideoData(). Otherwise, nvdec will be confused
on decode callback as if the frame is decoding only frame and
the input timestamp of corresponding frame will be ignored.
Eventually one decoded frame will have non-increased PTS.
Aaron Boxer [Thu, 8 Aug 2019 20:54:32 +0000 (16:54 -0400)]
tsdemux: do not error if buffer size is invalid due to DISCONT
Don't signal a pipeline error when processing incomplete
j2pk PES packets that are too small. That can happen normally
during a DISCONT and shouldn't shut down the whole pipeline
Mathieu Duponchelle [Fri, 16 Aug 2019 13:22:26 +0000 (15:22 +0200)]
iqa: fix leak of map_meta.data
Seungha Yang [Fri, 16 Aug 2019 10:32:39 +0000 (19:32 +0900)]
nvdec: Do not access nvdec object from destroy function of qdata
The destroy callback can be called just before the fìnalization of
GstMiniObject. So the nvdec object might be destroyed already.
Instead, store the GstCudaContext with increased ref to safely
unregister the CUDA resource.
Seungha Yang [Thu, 15 Aug 2019 08:49:12 +0000 (17:49 +0900)]
d3dvideosink: Fix crash on WinProc handler
... caused by null pointer dereference. The d3dvideosink object might
not available yet on the handler.
Seungha Yang [Thu, 15 Aug 2019 07:31:01 +0000 (16:31 +0900)]
meson: d3d11: Remove unnecessary dependency
d3d11 never use any API of gstreamer-allocators-1.0
Seungha Yang [Thu, 15 Aug 2019 07:20:26 +0000 (16:20 +0900)]
d3d11videosink: Take into account pixel aspect ratio
Fix unexpected cropping with non 1:1 pixel aspect-ratio.
The actual buffer width/height should be passed to gst_d3d11_window_render(),
instead of the calculated resolution. The width/height
values are parameters for copying d3d11 video memory.
Also, aspect-ratio should be considered on resize callback
to decide render rectangle size.
Sebastian Dröge [Wed, 14 Aug 2019 07:13:52 +0000 (10:13 +0300)]
cccombiner: Make use of new GstAggregator::negotiate()
Simplifies the caps handling code considerably here and removes some
spurious negotiation.
Xavier Claessens [Wed, 14 Aug 2019 15:21:30 +0000 (11:21 -0400)]
amc: Fix crash when a sync_meta survives its sink
_amc_gl_free() could be called after the GstAmcVideoDec has been
finalized, in the case downstream still has a ref to a buffer.
Doug Nazar [Fri, 9 Aug 2019 06:41:51 +0000 (02:41 -0400)]
pitch: Fix race between putSamples() and setting soundtouch parameters
The various soundtouch set*() functions may cause buffer (re)allocations
which interferes with inputting the audio data.
Matthew Waters [Fri, 9 Aug 2019 04:49:24 +0000 (14:49 +1000)]
vulkan/ios: keep track of surface changes
Matthew Waters [Tue, 6 Aug 2019 02:38:41 +0000 (12:38 +1000)]
vulkan/ios: initialize the frame to the parent's
Mathieu Duponchelle [Tue, 13 Aug 2019 21:24:41 +0000 (23:24 +0200)]
atscmux: fix AC-3 stream id
According to ATSC A/52, Annex A, section 4.2:
The value of stream_id in the PES header shall be 0xBD
(indicating private_stream_1)
OleksandrKvl [Tue, 13 Aug 2019 14:50:33 +0000 (17:50 +0300)]
pcapparse: fix DISCONT flag setting
DISCONT flag should be set only for first packet.
Fixes #1047.
David Gunzinger [Tue, 13 Aug 2019 10:10:54 +0000 (12:10 +0200)]
webrtc: fix type of max-retransmits, make it work
Sebastian Dröge [Mon, 12 Aug 2019 17:26:51 +0000 (20:26 +0300)]
mxfdemux: Also allow picture essence element type 0x05 for VC-3
It's found like this in various files out there even if it does not
conform to SMPTE 2019-4.
Ignacio Casal Quinteiro [Tue, 6 Aug 2019 15:42:15 +0000 (17:42 +0200)]
wasapi: fix symbol redefinition build error
Olivier Crête [Wed, 31 Jul 2019 15:49:55 +0000 (11:49 -0400)]
rist: Fix documentation
Olivier Crête [Tue, 30 Jul 2019 16:54:04 +0000 (12:54 -0400)]
rist: Document stats-internal unit
Olivier Crête [Fri, 26 Jul 2019 20:17:59 +0000 (16:17 -0400)]
ristsink: Only accept RTCP APP packets with subtype==0
Olivier Crête [Tue, 9 Jul 2019 20:50:43 +0000 (16:50 -0400)]
rist: Fix typo in the documentation
Olivier Crête [Tue, 9 Jul 2019 20:50:14 +0000 (16:50 -0400)]
rist: Use the right parameters the signal
Seungha Yang [Fri, 9 Aug 2019 03:52:31 +0000 (12:52 +0900)]
x265enc: Enhance profile setting with fixing infinite loop condition
Don't fixate profile caps which will choose the first profile from list.
Instead, store all profiles allowed by peer and try them until x265 can
accept one of them.
Seungha Yang [Fri, 9 Aug 2019 03:03:34 +0000 (12:03 +0900)]
x265enc: Fix deadlock on profile setting failure
Don't miss unlock before returning
Seungha Yang [Fri, 9 Aug 2019 02:39:43 +0000 (11:39 +0900)]
nvenc: Add support YV12 format
YV12 format is supported by Nvidia NVENC without manual conversion.
So nvenc is exposing YV12 format at sinkpad template but there is some
missing point around uploading the memory to GPU.
Marc Leeman [Thu, 8 Aug 2019 18:47:05 +0000 (18:47 +0000)]
rtp: do not overrule RtpInfo when non dynamic type
When looking up the Rtp information, do not overwrite information
already found with encoding-name by static information.
Seungha Yang [Thu, 8 Aug 2019 11:06:41 +0000 (20:06 +0900)]
nvh265enc: Enable HDR related SEI nal insertion
If upstream provides the HDR related information, create SEI message
nals and pass them to NVENC.
Seungha Yang [Thu, 8 Aug 2019 11:01:41 +0000 (20:01 +0900)]
h265parse: Fix mastering display info parsing
Fix mismatched Red Y coordinate value.
Fuwei Tang [Wed, 7 Aug 2019 20:54:38 +0000 (04:54 +0800)]
msdkdec: fix decoding issue for interlaced streams
Currently h264parser produces a field or a frame for
alignment=au for interlaced streams, but the flag
MFX_BITSTREAM_COMPLETE_FRAME needs a complete frame
or complementary field pair of data, this results in
broken images being output.
Some patches have been sent out to fix h264parser,
but they are pending on some unfinished work. In
order to make gstreamer-msdk decoding work properly
for interlaced streams before h264parser is fixed,
this flag will be removed temporarily and will be
added back once h264parser if fixed.
Related to:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/399
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/228
Seungha Yang [Tue, 6 Aug 2019 12:54:49 +0000 (21:54 +0900)]
nvh265enc: Add support YUV 444 10bits encoding
Note that h264 encoder does not support the YUV 444 10bits format
Seungha Yang [Tue, 6 Aug 2019 12:55:36 +0000 (21:55 +0900)]
nvenc: Remove unnecessary constraint from YUV420 10bits capability decision
YUV444 capability shouldn't be applied to YUV420 10 bits format
Sebastian Dröge [Wed, 7 Aug 2019 09:58:40 +0000 (12:58 +0300)]
decklinkvideosrc: Retrieve mode of the ancillary data from the frame
Instead of using the information we stored ourselves for the video frame
itself. Which was also the wrong one: it was the mode from the property,
not the autodetected one.
This fixes vanc extraction with mode=auto
Sebastian Dröge [Wed, 7 Aug 2019 09:58:03 +0000 (12:58 +0300)]
decklinkvideosrc: Also set the INTERLACED buffer flag on non-TFF buffers
Aaron Boxer [Mon, 22 Jul 2019 16:52:53 +0000 (12:52 -0400)]
msdkdec: no need to cache output state info
Seungha Yang [Wed, 7 Aug 2019 02:49:43 +0000 (11:49 +0900)]
nvenc: Fix broken RGB format support
Add missing format check introduced by the commit
7de4dbdeb27561c00be94f8666b39dc661c59f7b
Mathieu Duponchelle [Tue, 29 Jan 2019 20:57:44 +0000 (21:57 +0100)]
tsdemux: always take the seek segment stop into account
Even if an accurate seek was not requested, we should still
respect the seek stop.
Jan Schmidt [Wed, 19 Sep 2018 15:05:52 +0000 (01:05 +1000)]
tsdemux: Use gst_segment_do_seek()
Remove some custom and incomplete seek calculation
logic in favour of gst_segment_do_seek(), and
short-circuit any actual seeking or recalculation
if the position didn't change and just send an updated
segment directly.
This removes the custom seeking logic in favour of
using standard core seek handling.
Jan Schmidt [Wed, 19 Sep 2018 15:07:34 +0000 (01:07 +1000)]
mpegtsdemux: Keep the position increasing.
Don't keep the segment position jumping back and forth
based on stream DTS/PTS, only increase the position
if the new value is larger than the old.
Jan Schmidt [Fri, 31 Aug 2018 12:43:46 +0000 (22:43 +1000)]
mpegts: Re-work segment tracking
Add an output segment into the base class for sub-classes
to use for their output segment, in a place where the base
class can see it.
Seungha Yang [Tue, 6 Aug 2019 04:50:28 +0000 (13:50 +0900)]
nvcodec: Wrap CUDA API return check with gst_cuda_result
The gst_cuda_result macro function is more helpful for debugging
than previous cuda_OK because gst_cuda_result prints the function
and line number. If the CUDA API return was not CUDA_SUCCESS,
gst_cuda_result will print WARNING level debug message with
error name, error text strings.
Seungha Yang [Tue, 6 Aug 2019 04:44:20 +0000 (13:44 +0900)]
nvdec: Port to GstCUDAContext
... and drop CUvideoctxlock usage. The CUvideoctxlock basically
has the identical role of cuda context push/pop but nvdec specific
way. Since we can share the CUDA context among encoders and decoders,
use CUDA context directly for accessing GPU API.
Seungha Yang [Thu, 25 Jul 2019 10:33:54 +0000 (19:33 +0900)]
nvenc: Port to GstCudaContext
... and add support CUDA context sharing similar to glcontext sharing.
Multiple CUDA context per GPU is not the best practice. The context
sharing method is very similar to that of glcontext. The difference
is that there can be multiple context object on a pipeline since
the CUDA context is created per GPU id. For example, a pipeline
has nvh264dec (uses GPU #0) and nvh264device0dec (uses GPU #1),
then two CUDA context will propagated to all pipeline.
Seungha Yang [Fri, 23 Nov 2018 13:01:41 +0000 (22:01 +0900)]
nvcodec: Introduce NVIDA CUDA helpers
New object and helper functions can remove duplicated code
from nvenc/nvdec. Also this is prework for CUDA device context sharing
among nvdec(s)/nvenc(s).
Mathieu Duponchelle [Fri, 26 Jul 2019 01:27:22 +0000 (03:27 +0200)]
rtponviftimestamp: add opt-out "drop-out-of-segment" property
The default behaviour of rtponviftimestamp is to drop buffers
outside the segment. This creates obvious problems for reverse
playback.
The ONVIF specification unfortunately doesn't describe how to handle
that specific use case, but we can expose a property to let the
user disable the dropping behaviour, and forward these buffers with
a G_MAXUINT64 ONVIF timestamp.
Also modify rtponvifparse to handle such timestamps appropriately.
Mathieu Duponchelle [Fri, 26 Jul 2019 01:26:25 +0000 (03:26 +0200)]
rtponvifparse: parse E flag and send EOS when needed
Seungha Yang [Fri, 21 Jun 2019 11:47:37 +0000 (20:47 +0900)]
x265enc: Add support more 8/10/12 bits 4:2:0, 4:2:2 and 4:4:4 profiles
... with multi-library interface support. Depending on bit depth support of
the linked library, run-time api switch can be made via multi-library interface.
See more detail about libx265 multi-library interface
https://x265.readthedocs.io/en/default/api.html#multi-library-interface
Sebastian Dröge [Tue, 6 Aug 2019 18:44:35 +0000 (21:44 +0300)]
decklinkaudiosrc/decklinkvideosrc: Do nothing in BaseSrc::negotiate() and always set caps in ::create()
We don't support negotiation with downstream but simply set caps based
on the buffers we receive. This prevents renegotiation to other formats,
and negotiation to NTSC in mode=auto in the beginning until the first
buffer is received.
As side-effect of this, also remove various other caps handling code
that was working around the behaviour of the default
BaseSrc::negotiate().
Sebastian Dröge [Tue, 6 Aug 2019 15:55:28 +0000 (18:55 +0300)]
errorignore: Try pushing again after a caps event too
It might have reconfigured everything correctly so that pushing buffers
works again afterwards, e.g. if the previous caps event was just
rejected.
Sebastian Dröge [Tue, 6 Aug 2019 15:51:54 +0000 (18:51 +0300)]
timecodestamper: Require a non-0/1 framerate on the pad templates
We reject caps with other framerates as it's impossible to generate
timecodes unless we actually know a constant framerate. Reflect this
also in the pad template caps.
Sebastian Dröge [Tue, 6 Aug 2019 13:38:08 +0000 (16:38 +0300)]
avwait: Improve debug output a bit
Seungha Yang [Mon, 29 Jul 2019 04:52:04 +0000 (13:52 +0900)]
nvenc: Return profile compatible input formats from GstVideoEncoder::getcaps
Do not accept any input formats which could not be supported
by downstream requested codec profiles.
Seungha Yang [Fri, 26 Jul 2019 15:52:59 +0000 (00:52 +0900)]
nvenc: Fix caps negotiation failure on unspecified interlace-mode
During GstVideoInfo conversion from GstCaps, interlace-mode is
inferred to progressive so unspecified interlace-mode should not cause any
negotiation issue. Simly set GST_PAD_FLAG_ACCEPT_INTERSECT flag
on sinkpad to fix issue.
Seungha Yang [Fri, 26 Jul 2019 15:57:02 +0000 (00:57 +0900)]
nvenc: Remove unused member variables
Supported interlace-mode and codec profiles are checked
during plugin init and those values are never used.
Seungha Yang [Fri, 26 Jul 2019 15:41:17 +0000 (00:41 +0900)]
tests: nvenc: Add test caps negotiation with interlace-mode field
Sebastian Dröge [Mon, 5 Aug 2019 16:45:05 +0000 (19:45 +0300)]
rtptransceiver: Remove direction setter and vfunc and replace it by a property
It was changed from a function to a property in the latest WebRTC spec.
Haihao Xiang [Thu, 25 Jul 2019 14:55:09 +0000 (22:55 +0800)]
msdkdec: Update frame info from video parameters
A 10bit stream may have different depth values for Luma and Chroma, and
MSDK requires the frame info must match the corresponding video
parameters
Yeongjin Jeong [Fri, 2 Aug 2019 07:31:59 +0000 (16:31 +0900)]
vulkan: Fix GstMemory leaks
Allocated GstMemory should be freed with g_free()
Fuwei Tang [Sat, 3 Aug 2019 03:31:21 +0000 (11:31 +0800)]
h264parse: fix issue that caps "interlace-mode" can't be updated correctly
Upstream overrides the info "interlace-mode", otherwise update it with
SPS info.
Seungha Yang [Tue, 30 Jul 2019 14:49:09 +0000 (23:49 +0900)]
nvdec: Respect upstream provided timestamp
Decoder sometimes reports nonincreasing timestamp.
Use input frame's timestamp like other decoder elements.
Seungha Yang [Tue, 30 Jul 2019 04:15:32 +0000 (13:15 +0900)]
nvenc: Add support RGB 8/10bits formats
BGRA/RGBA/RGB10A2/BGR10A2 formats can be supported by nvenc.
Depending on device, supported format can be different.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1038
Seungha Yang [Tue, 30 Jul 2019 15:02:59 +0000 (00:02 +0900)]
nvdec: Use upstream framerate if possible
Encoded bitstream might not have valid framerate. If upstream
provided non-variable-framerate (i.e., fps_n > 0 and fps_d > 0)
use upstream framerate instead of parsed one.
Seungha Yang [Tue, 30 Jul 2019 14:54:48 +0000 (23:54 +0900)]
nvenc: Fix crash with unspecified framerate
Nvidia driver seems to calculating floating point framerate
without validation. This causes crash both on linux and Windows.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1012
Doug Nazar [Sat, 3 Aug 2019 09:28:33 +0000 (05:28 -0400)]
mpegdemux: Parse mpeg audio layer version and add to caps.
Doug Nazar [Sat, 3 Aug 2019 09:21:29 +0000 (05:21 -0400)]
mpegdemux: Finish setting up stream before adding pad.
Aaron Boxer [Fri, 26 Jul 2019 13:45:46 +0000 (07:45 -0600)]
msdkdec: no need to cache allocation_caps
Matthew Waters [Mon, 5 Aug 2019 01:31:48 +0000 (11:31 +1000)]
vulkan: add a couple of headers to the install list
Marc Leeman [Wed, 31 Jul 2019 18:03:19 +0000 (18:03 +0000)]
mpeg4videoparse: allow sending config at IDR
Based on h264parse, also allow to send the config at every IDR.
Seungha Yang [Wed, 31 Jul 2019 03:12:18 +0000 (12:12 +0900)]
configure: Update for nvcodec dependency change
nvcodec is compilable without external dependency
Seungha Yang [Wed, 31 Jul 2019 03:11:05 +0000 (12:11 +0900)]
nvdec: Fix build warning error
gstnvdec.c:1222:3: error: implicit declaration of function ‘memset’ [-Werror=implicit-function-declaration]
memset (&type_info, 0, sizeof (type_info));
^~~~~~
Mathieu Duponchelle [Tue, 30 Jul 2019 19:18:59 +0000 (21:18 +0200)]
basetsmux: expose pcr-interval property
Instead of using a static hardcoded PCR interval, allow the user
to configure it.
Also revert back the default to a 40 ms interval, that was changed
in recent patches for no good reason.
Yeongjin Jeong [Wed, 31 Jul 2019 09:02:02 +0000 (18:02 +0900)]
tests: x265enc: Add tiny resolution encoding check
Add the tiny picture encoding test case allowed in x265
Yeongjin Jeong [Mon, 1 Jul 2019 09:14:55 +0000 (18:14 +0900)]
x265enc: Specify max CU size depending on input resolution
x265 does not allow user to configure a picture size smaller than
at least one CU size, and maxCUSize must be 16, 32, or 64.
Therefore, the CU size must be set according to the input resolution,
and the input resolution can not be less than 16.
Ederson de Souza [Tue, 23 Jul 2019 20:06:55 +0000 (13:06 -0700)]
avtp: CVF - fix error message
The error is about *not* being able to map a buffer.
Ederson de Souza [Mon, 8 Jul 2019 21:19:07 +0000 (14:19 -0700)]
avtp: CVF - Do not infinite loop trying to fragment zero sized NAL unit
Zero sized NAL-units should not happen, but if they do, do not infinite
loop. Added also a unit test for this case.
Jan Schmidt [Tue, 30 Jul 2019 14:38:44 +0000 (00:38 +1000)]
h265parser: Skip unused SEI bits differently
3-byte emulation bytes can confuse the current code that skips
bits at the end of an SEI. Use a simpler method that's also
quicker because it skips all remaining bits in one go instead
of 1 bit at a time.
Seungha Yang [Sat, 20 Jul 2019 13:38:46 +0000 (22:38 +0900)]
h265parse: Add support for compatible profiles of extensions
From decoder's capability point of view as defined by the h265 specification,
accept peer profile caps.
Seungha Yang [Tue, 30 Jul 2019 10:07:42 +0000 (19:07 +0900)]
nvenc: Fix build error with x86 msvc
__stdcall is accepted or ignored by the compiler on x64 but x86
is not the case. So the function definition should be consistent
with declaration.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1039
Seungha Yang [Tue, 30 Jul 2019 08:49:25 +0000 (17:49 +0900)]
nvenc: Fix deadlock when pad_push return was not GST_FLOW_OK
Encoding thread is terminated without any notification so
upstream streaming thread is locked because there is nothing
to pop from GAsyncQueue. If downstream returns error,
we need put SHUTDOWN_COOKIE to GAsyncQueue for chain function
can wakeup.
Seungha Yang [Tue, 30 Jul 2019 02:06:43 +0000 (11:06 +0900)]
nvcodec: Fix broken ABI in cuda stub header to fix nvenc with opengl
Fix the broken ABI introduced by the commit
367e742e5dd53400d212ce07d0ac0745f3535ac3
From CUDA Toolkit 3.2, size_t has been used in CUDA_MEMCPY2D structure
instead of unsigned int.
Jakub Adam [Wed, 12 Jun 2019 13:00:38 +0000 (15:00 +0200)]
webrtcbin: Support data channel SDP offers from Chrome
When negotiating a data channel, Chrome as recent as 75 still uses SDP
based on version 05 of the SCTP SDP draft, for example:
m=application 9 DTLS/SCTP 5000
a=sctpmap:5000 webrtc-datachannel 1024
Implement support for parsing SCTP port out of SDP message with sctpmap
attribute. Fixes data channel negotiation with Chrome browser.
Aaron Boxer [Sun, 28 Jul 2019 23:08:24 +0000 (19:08 -0400)]
openjpegdec: enable multi-threaded decode
Aaron Boxer [Sun, 28 Jul 2019 23:07:04 +0000 (19:07 -0400)]
openjpegdec: check return value when setting up decoder
Charlie Turner [Tue, 2 Jul 2019 11:27:40 +0000 (12:27 +0100)]
adaptivedemux: remove some deadlocks using webkitwebsrc.
WebKit's websrc depends on the main-thread for download completion
rendezvous. This exposed a number of deadlocks in adaptivedemux due to
it holding the MANIFEST_LOCK during network requests, and also needing
to hold it to change_state and resolve queries, which frequently occur
during these download windows.
Make demux->running MT-safe so that it can be accessed without using the
MANIFEST_LOCK. In case a source is downloading and requires a MT-thread
notification for completion of the fragment download, a state change
during this download window will deadlock unless we cancel the downloads
and ensure they are not restarted before we finish the state-change.
Also make demux->priv->have_manifest MT-safe. A duration query happening
in the window described above can deadlock for the same reason. Other
src queries (like SEEKING) that happen in this window also could
deadlock, but I haven't hit this scenario.
Increase granularity of API_LOCK'ing in change_state as well. We need to
cancel downloads before trying to take this lock, since sink events
(EOS) will hold it before starting a fragment download.
Ilya Smelykh [Mon, 29 Jul 2019 07:56:16 +0000 (14:56 +0700)]
webrtcbin: fix GInetAddress leak
Aaron Boxer [Sun, 28 Jul 2019 18:19:36 +0000 (14:19 -0400)]
openjpeg: remove support for OpenJPEG 1.5
Also require OpenJPEG version >= 2.2
Wonchul Lee [Tue, 23 Jul 2019 13:26:19 +0000 (22:26 +0900)]
av1enc: enable row-mt property conditionally
The row based multi threading control was introduced after 1.0.0 version
of libaom released. It adds a guard to check the relevant control
definition declared. It fixes #1025
Aaron Boxer [Wed, 24 Jul 2019 18:44:21 +0000 (12:44 -0600)]
msdk: enable 32 bit build on windows