Seungha Yang [Mon, 13 Apr 2020 11:31:14 +0000 (20:31 +0900)]
h265parser: Fix some coverity issues
- Remove useless comparison
- Fix invalid memory access
CID: 1461477, 1461476, 1461475, 1461474, 1461279
Philippe Normand [Fri, 3 Apr 2020 14:45:02 +0000 (15:45 +0100)]
wpe: Add support for SHM without requiring EGLDisplay
The previous version of the SHM export support still required a valid
EGLDisplay. The upcoming WPEBackend-FDO 1.8.x aims to remove this requirement,
hence allowing wpesrc to be used without GPU.
J. Kim [Mon, 13 Apr 2020 06:21:48 +0000 (15:21 +0900)]
srtobject: fix mutex lock target
GstSRTObject is a structure that has an actual GstElement
which is extended to srt{src,sink}.
Víctor Manuel Jáquez Leal [Fri, 10 Apr 2020 19:03:04 +0000 (21:03 +0200)]
v4l2codecs: fix v4l2codecdevice get type
Currently the GType of v4l2codecdevice is hardcoded to zero, but it
rather should be delivered by the GType system.
Jordan Petridis [Fri, 10 Apr 2020 15:22:21 +0000 (18:22 +0300)]
gstmsdkdec: fix logical operation that misses parenthesis
in C, & is weaker than the ! operator and clang is giving the following
error about it.
```
../subprojects/gst-plugins-bad/sys/msdk/gstmsdkdec.c:731:7: error: logical not is only applied to the left hand side of this bitwise operator [-Werror,-Wlogical-not-parentheses]
if (!gst_msdk_context_get_job_type (thiz->context) & GST_MSDK_JOB_DECODER) {
^ ~
../subprojects/gst-plugins-bad/sys/msdk/gstmsdkdec.c:731:7: note: add parentheses after the '!' to evaluate the bitwise operator first
if (!gst_msdk_context_get_job_type (thiz->context) & GST_MSDK_JOB_DECODER) {
^
( )
../subprojects/gst-plugins-bad/sys/msdk/gstmsdkdec.c:731:7: note: add parentheses around left hand side expression to silence this warning
if (!gst_msdk_context_get_job_type (thiz->context) & GST_MSDK_JOB_DECODER) {
^
( )
1 error generated.
```
Seungha Yang [Mon, 23 Mar 2020 05:40:52 +0000 (14:40 +0900)]
codecs: Add minimal state validation
... to prevent requesting decoding before the preparation.
For instance, baseclass should not request decoding a picture if there
is no parsed valid headers, since subclass is most likely
not ready to decoding it.
Seungha Yang [Mon, 30 Mar 2020 06:42:35 +0000 (15:42 +0900)]
h265parser: Add APIs to allow update VPS/SPS/PPS
gst_h265_parser_parse_{vps,sps,pps} APIs were used to parse VPS/SPS/PPS and
also in order to update parser's internal state at once. Meanwhile
gst_h265_parse_{vps,sps,pps} APIs are to parse VPS/SPS/PPS without state update.
This commit introduces new APIs so that only accepted VPS/SPS/PPS by user
can be updated to be used by parser.
Seungha Yang [Mon, 30 Mar 2020 06:27:40 +0000 (15:27 +0900)]
h264parser: Add APIs to allow update SPS/PPS
gst_h264_parser_parse_{sps,pps} APIs were used to parse SPS/PPS and
also in order to update parser's internal state at once. Meanwhile
gst_h264_parse_{sps,pps} APIs are to parse SPS/PPS without state update.
This commit introduces new APIs so that only accepted SPS/PPS by user
can be updated to be used by parser.
Seungha Yang [Thu, 9 Apr 2020 14:12:25 +0000 (23:12 +0900)]
meson: kmssink: Allow fallback only on linux
Otherwise fallback will waste meson configure time on non-linux
Zeid Bekli [Tue, 7 Apr 2020 23:22:07 +0000 (01:22 +0200)]
srtp: Added support for BYE packet
SRTCP can't get SSRC from BYE packet, this will make srtpdec element
to drop the package. Adding support to get the SSRC from BYE packets.
Seungha Yang [Thu, 9 Apr 2020 07:12:58 +0000 (16:12 +0900)]
nvdec: Don't hardcode DPB size
Too many decode surface would waste GPU memory. Also it seems to be
introducing additional latency depending on stream. Since nvcodec
sdk version 9.0, CUVID parser API has been providing the minimum
required number of surface. By using it, we can save GPU memory
and reduce possible latency.
Nicolas Dufresne [Wed, 8 Apr 2020 18:21:30 +0000 (14:21 -0400)]
v4l2codecs: Fix FD leak during device enumeration
This was revealed by Coverity.
CID 1461248
Stéphane Cerveau [Tue, 7 Apr 2020 17:28:27 +0000 (19:28 +0200)]
dash: fix VARARGS coverity error
va_end was not called in every code path due to
g_return_val_if_fail.
API usage errors (VARARGS)
va_end was not called for "myargs".
CID: 1461294
Xavier Claessens [Wed, 8 Apr 2020 16:10:21 +0000 (12:10 -0400)]
Meson: Change extra-checks to feature option and make it yielding
Nicolas Dufresne [Wed, 8 Apr 2020 18:00:48 +0000 (14:00 -0400)]
h264parse: Fix content light level value changes
Same as for H265, was found by Coverity.
Nicolas Dufresne [Tue, 7 Apr 2020 21:04:30 +0000 (17:04 -0400)]
h265parse: Fix content light level value changes
The comparision was not testing anything meaninful. This fixes the comparision
so we now update the caps whenever the value differ. This was detected by
coverity.
CID 1461291
Jan Alexander Steffens (heftig) [Wed, 8 Apr 2020 16:39:06 +0000 (18:39 +0200)]
rtmp2: Avoid a deadlock when getting stats
We need to do this without holding the lock as the `g_async_queue_pop`
waits on the loop thread to deliver the stats. The loop thread might
attempt to take the lock as well, leading to a deadlock.
Taking a reference to the connection should be enough to keep this
safe.
Seungha Yang [Wed, 8 Apr 2020 06:37:03 +0000 (15:37 +0900)]
h264parse: Add support for inband timecode update
Add new property "update-timecode" to allow updating timecode
in picture timing SEI depending on timecode meta. Since the picture
timing SEI message requires proper VUI setting but we don't support
re-writing SPS, this might not work for some streams
Seungha Yang [Wed, 8 Apr 2020 08:07:36 +0000 (17:07 +0900)]
h264parse: Don't unconditionally append timecode meta
If upstream buffer has its own timecode metatdata, don't append
new timecode meta into the buffer.
Seungha Yang [Wed, 8 Apr 2020 07:24:06 +0000 (16:24 +0900)]
h264parser: Parse all SEI payload type even if it's not handled by parser
... so that user can handle it from outside of parser API
Seungha Yang [Tue, 7 Apr 2020 11:26:23 +0000 (20:26 +0900)]
h264parser: Add support for creating picture timing SEI
This new method can make it possible to inject timecode meta into
h264 bitstream
Seungha Yang [Tue, 7 Apr 2020 13:30:55 +0000 (22:30 +0900)]
tests: h264parser: Fix picture timing SEI
The payloadSize don't need to include rbsp_trailing_bits()
Seungha Yang [Tue, 7 Apr 2020 10:32:29 +0000 (19:32 +0900)]
h264parser: Make GstH264PicTiming self-containing all the syntax information
... and store all parsed values.
We are storing pic_struct_present_flag although it's not part of
this SEI message but GstH264PicTiming includes it to clarify
following syntax values.
In addition to that, by adding CpbDpbDelaysPresentFlag, we don't need to
refer to VUI anymore.
Seungha Yang [Tue, 7 Apr 2020 12:17:30 +0000 (21:17 +0900)]
h264parser: Fix some misleading debug messages
Seungha Yang [Tue, 7 Apr 2020 00:17:15 +0000 (09:17 +0900)]
h264parser: Fix mismatched argument of declaration and definition
Michael Olbrich [Mon, 6 Apr 2020 08:25:37 +0000 (10:25 +0200)]
sdpdemux: don't send EOS for unknown SSRC
The rtpbin sends signals for all SSRCs. Don't send an EOS when the SSRC
does not match the stream SSRC.
This avoids problems when an SSRC from another receiver times out.
Thibault Saunier [Wed, 8 Apr 2020 12:47:37 +0000 (08:47 -0400)]
codecs: Add basic documentation stubs
Nicolas Dufresne [Tue, 7 Apr 2020 21:10:08 +0000 (17:10 -0400)]
v4l2decoder: Fix file descriptor leak
A copy paste error was leading to file descriptor leak. This was detected by
Coverity.
CID 1461285
Philippe Normand [Mon, 6 Apr 2020 15:40:38 +0000 (16:40 +0100)]
fakevideosink: Allow allocation meta flags fine-tuning
In some scenarios the fakevideosink shouldn't advertize the overlay-composition
meta for instance, so that overlay elements perform subtitles blending
themselves.
Michael Olbrich [Mon, 6 Apr 2020 08:19:23 +0000 (10:19 +0200)]
mpegtspacketizer: be more tolerant when parsing the adaptation field
According to the specification, the adaptation field length must be 183 if
there is no payload data and < 183 if the packet contains an adaptation
field and payload data.
Unfortunately some payloaders always set the flag for payload data, even if
the adaptation field length is 183.
Don't return with an error in this case. Clear the payload data flag
instead and parse the adaptation field as usual. This avoids visual
artefacts for such streams.
Nicolas Dufresne [Mon, 6 Apr 2020 19:06:01 +0000 (15:06 -0400)]
codecs: h264: Fix DPB size calculation
As per specification in A.3.1 h) and A.3.2 f), the maximum size of the DPB is
16. Fix the maximum in the fine and fix the formula to use MIN instead of MAX
so that we no longer always use the maximum for the profile/level.
Haihao Xiang [Wed, 1 Apr 2020 04:33:38 +0000 (12:33 +0800)]
msdkvp9dec: add support for VP9 12bit
The output formats are P012_LE for 12bit 420 and Y412_LE for 12bit 444.
worldofpeace [Fri, 3 Apr 2020 22:50:16 +0000 (18:50 -0400)]
meson: build with neon 0.31
No API/ABI changes https://github.com/notroj/neon/blob/0.31.0/NEWS#L3
Nirbheek Chauhan [Fri, 3 Apr 2020 11:37:47 +0000 (17:07 +0530)]
meson: Don't use get_option('buildtype')
We should directly check the values of the `debug` and `optimization`
options instead.
`get_option('buildtype')` will return `'custom'` for most combinations
of `-Doptimization` and `-Ddebug`, but those two will always be set
correctly if only `-Dbuildtype` is set. So we should look at those
options directly.
For the two-way mapping between `buildtype` and `optimization`
+ `debug`, see this table:
https://mesonbuild.com/Builtin-options.html#build-type-options
Stéphane Cerveau [Mon, 23 Mar 2020 11:56:46 +0000 (12:56 +0100)]
kms: add fallback on libdrm project if available.
Haihao Xiang [Thu, 12 Mar 2020 05:28:59 +0000 (13:28 +0800)]
msdkh265dec: add support for main-444-12, main-444-12-intra profiles
The video format is Y412_LE
Haihao Xiang [Thu, 12 Mar 2020 05:21:02 +0000 (13:21 +0800)]
msdk: map Y412_LE to VA_FOURCC_Y416
In media driver, VA_FOURCC_Y416 is used for packed 12 bits 4:4:4:4 YUV
format, the corresponding RT format is VA_RT_FORMAT_YUV442_12
Haihao Xiang [Thu, 12 Mar 2020 05:12:33 +0000 (13:12 +0800)]
msdk: map MFX_FOURCC_Y416 to VA_FOURCC_Y416
Y416 is used for packed 12 bits 4:4:4:4 YUV format in media driver, the
RT format is VA_RT_FORMAT_YUV444_12
Haihao Xiang [Thu, 12 Mar 2020 04:58:40 +0000 (12:58 +0800)]
msdk: map Y412_LE to MFX_FOURCC_Y416
MFX_FOURCC_Y416 is used for packed 12 bits 4:4:4:4 YUV format in
MediaSDK
Haihao Xiang [Wed, 11 Mar 2020 06:55:33 +0000 (14:55 +0800)]
msdkh265dec: add support for main-422-12, main-422-12-intra profiles
The video format is Y212_LE
Haihao Xiang [Wed, 11 Mar 2020 06:35:55 +0000 (14:35 +0800)]
msdk: map Y212_LE to VA_FOURCC_Y216
In media driver, VA_FOURCC_Y216 is used for packed 12 bits 4:2:2 YUV
format, the corresponding RT format is VA_RT_FORMAT_YUV422_12
Haihao Xiang [Wed, 11 Mar 2020 06:09:11 +0000 (14:09 +0800)]
msdk: map MFX_FOURCC_Y216 to VA_FOURCC_Y216
In media driver, Y216 is used for packed 12 bits 4:2:2 format YUV
format, so the RT format is VA_RT_FORMAT_YUV422_12.
Haihao Xiang [Wed, 11 Mar 2020 05:54:42 +0000 (13:54 +0800)]
msdk: map Y212_LE to MFX_FOURCC_Y216
MFX_FOURCC_Y216 is used for packed 12 bits 422 YUV format in MediaSDK
Seungha Yang [Thu, 2 Apr 2020 15:42:23 +0000 (00:42 +0900)]
msdkh265enc: Fix for wrong parser free function
Jan Schmidt [Wed, 18 Mar 2020 01:30:51 +0000 (12:30 +1100)]
adaptivedemux: Handle instant rate change requests directly
Downstream demuxers will first send seek events upstream to us.
Do the right thing with instant rate change requests by handling them
immediately.
Jan Schmidt [Tue, 17 Mar 2020 08:31:22 +0000 (19:31 +1100)]
adaptivedemux: Don't ignore gst_segment_do_seek() return result
gst_segment_do_seek() can fail, so don't ignore the return result
Jan Schmidt [Thu, 29 Nov 2018 18:18:42 +0000 (05:18 +1100)]
tsdemux: Send instant-rate-change event if requested in the SEEK event
Convert instant-rate-change seek events into a downstream
instant-rate-change event and skip any further local seek handling.
Seungha Yang [Tue, 31 Mar 2020 11:51:15 +0000 (20:51 +0900)]
msdkh264enc: Configure parser and SEI array only if it's required
Seungha Yang [Tue, 31 Mar 2020 06:25:47 +0000 (15:25 +0900)]
msdkh265enc: Add support for CEA708 closed caption insertion
Functionally identical to that of msdkh264enc
Seungha Yang [Thu, 19 Mar 2020 09:25:18 +0000 (18:25 +0900)]
h265parser: Add a helper method to create SEI nal unit
Add an API to create raw SEI nal unit. This would be useful in case
an user want to create SEI nal data and inject the SEI nal data
into bitstream.
Miguel Paris [Wed, 1 Apr 2020 17:43:51 +0000 (19:43 +0200)]
srtpdec: reduce log level for replay cases
These are normal cases, so DEBUG level is enough.
Miguel París Díaz [Tue, 11 Apr 2017 10:41:11 +0000 (12:41 +0200)]
srtpdec: do not warning old replay errors
Reordered packets producing decrypting errors are very normal,
so we should filter which errors are warning and which not.
Miguel Paris [Tue, 29 May 2018 13:00:43 +0000 (15:00 +0200)]
srtpdec: fix reseting RTP sequence number on ROC changes
Each srtp_stream_t is tied to an specific SSRC, so a
roc_changed flag should be kept per each SSRC in order to
properly reset RTP sequence number on ROC changes.
Seungha Yang [Fri, 13 Mar 2020 07:50:16 +0000 (16:50 +0900)]
d3d11: Update for video-hdr struct change
See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594
Seungha Yang [Fri, 13 Mar 2020 07:45:12 +0000 (16:45 +0900)]
nvh265enc: Update for video-hdr struct change
See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594
Seungha Yang [Fri, 13 Mar 2020 07:34:01 +0000 (16:34 +0900)]
x265enc: Update for video-hdr struct change
See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594
Seungha Yang [Fri, 13 Mar 2020 07:17:07 +0000 (16:17 +0900)]
h264parse,h265parse: Update for video-hdr struct change
See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594
Zeeshan Ali [Sat, 28 Jul 2018 12:54:42 +0000 (14:54 +0200)]
h265parse: Set duration on buffers base on framerate
Zeeshan Ali [Thu, 14 Jun 2018 14:20:54 +0000 (16:20 +0200)]
h265parse: Derive src fps from vui_time_scale & vui_num_units_in_tick
Zeeshan Ali [Wed, 13 Jun 2018 14:33:21 +0000 (16:33 +0200)]
h265parse: Handle interlaced video
For interlaced video:
* set the interlace mode in the src caps
* double the height from SPS in the caps.
* set field latency, instead of frame latency.
Fix #778
Nicolas Dufresne [Fri, 27 Mar 2020 17:05:41 +0000 (13:05 -0400)]
codecs: h264dpb: Don't leak pic_list GArray
The contents was cleared, but the array was never released.
Nicolas Dufresne [Thu, 26 Mar 2020 19:57:17 +0000 (15:57 -0400)]
v4l2codecs: Only build this plugin on Linux
This is not useful on any other OSs, it will also avoid potential build
failure as this code uses Linux specific calls.
Nicolas Dufresne [Thu, 26 Mar 2020 19:38:47 +0000 (15:38 -0400)]
v4l2codecs: Add plugin dependency
This ensure that the registry cache get updated when a meaningful change is
made in /dev for files named media*.
Nicolas Dufresne [Fri, 20 Mar 2020 16:37:41 +0000 (12:37 -0400)]
v4l2codecs: Wait for buffers to come back
This code add required mechanism to try and allocate (not implemented yet)
otherwise wait for more buffers. This also comes with mechanism to terminate
the wait on flush or PAUSED_TO_READY transitions.
Nicolas Dufresne [Fri, 20 Mar 2020 18:14:46 +0000 (14:14 -0400)]
v4l2codecs: Implement flushing sequence
This simply consit of cycling through STREAMOFF/STREAMON with stateless
decoders.
Nicolas Dufresne [Fri, 20 Mar 2020 16:35:03 +0000 (12:35 -0400)]
v4l2codecs: allocator: Add method to wait for more buffers
This add function to wait for buffers to get back into the pool along with a
set_flushing() method to allow unblocking this wait.
Nicolas Dufresne [Wed, 18 Mar 2020 21:03:51 +0000 (17:03 -0400)]
v4l2codecs: pool: Create new buffer when pool is empty
This simply create an empty GstBuffer when the pool is empty. This way it's up
to the allocator to grow or wait if we ran out of memory.
Nicolas Dufresne [Wed, 18 Mar 2020 21:00:37 +0000 (17:00 -0400)]
v4l2slh264dec: Improve end_picture() robustness
Use a goto to ensure that for all cases we cleanup the current picture state.
And move the src buffer allocation higher, so we don't queue a bitstream
buffer if we don't have a picture buffer to decode into.
Nicolas Dufresne [Wed, 18 Mar 2020 20:51:11 +0000 (16:51 -0400)]
codecs: h264: Do not ignore end_picture() return value
If decoding failed because end_picture() failed, set the picture to
nonexisting, this way output_picture() will be skipped. This avoids confusing
special cases in output_picture() implementation.
Nicolas Dufresne [Mon, 17 Feb 2020 23:08:48 +0000 (18:08 -0500)]
v4l2slh264dec: Add output format negotiation
This allow negotiating the output format through caps. Some drivers can
pipeline the decoder buffer through an image processor. This only support
colorspace conversion for now.
Nicolas Dufresne [Fri, 13 Mar 2020 20:51:27 +0000 (16:51 -0400)]
v4l2format: Convert between V4L2 and GST video format
This will be needed in the output format negotiation.
Nicolas Dufresne [Fri, 13 Mar 2020 18:23:39 +0000 (14:23 -0400)]
v4l2codecs: Read driver provided stride
This implements driver stride support but only for single allocation buffers.
This code is imported from the original v4l2 plugin and adapted to the new
helper context.
Nicolas Dufresne [Thu, 12 Mar 2020 20:15:40 +0000 (16:15 -0400)]
v4l2h264dec: Copy frames when GstVideoMeta is not supported
In some case, when downstream does not support GstVideoMeta, we need to
normalize the stride and offset of the buffer so that downstream can render
properly with a GstVideoMeta. This code is not called when GstVideoMeta is
supported downstream.
Nicolas Dufresne [Wed, 11 Mar 2020 21:45:17 +0000 (17:45 -0400)]
v4l2codec: Add initial GstVideoMeta support
In this patch we strictly set the GstVideoMeta width/height to the coded width
and height. Further patches will add stride support and frame copying when
downstream does not support GstVideoMeta.
Nicolas Dufresne [Mon, 9 Mar 2020 20:44:19 +0000 (16:44 -0400)]
v4l2slh264dec: Prevent spurious renegotiation
Don't let downstream cause a renegotiation at random point in time. This would
lead to spurious renegotiation and the decoder state may not be recoverable.
Nicolas Dufresne [Wed, 4 Mar 2020 02:22:52 +0000 (21:22 -0500)]
v4l2slh264dec: Hold on picture buffers
These buffers should not be reused for decoding until they are no longer
referenced.
Nicolas Dufresne [Sun, 16 Feb 2020 22:48:12 +0000 (17:48 -0500)]
v4l2codecs: Fix bytesused value
Pass the actual amount of bytes we have copied into the bitstream buffer. Also
unmap the memory before queuing.
Nicolas Dufresne [Sun, 16 Feb 2020 19:53:08 +0000 (14:53 -0500)]
v4l2codech264dec: Implement finish frame
This enables the request to be processed by the HW (STREAMON) and to be pushed
downstream for further processing.
Nicolas Dufresne [Sun, 16 Feb 2020 19:51:37 +0000 (14:51 -0500)]
v4l2codecdecoder: Add support for dequeuing buffers
This includings polling of the request and streamon/streamoff.
Nicolas Dufresne [Sat, 15 Feb 2020 03:13:05 +0000 (22:13 -0500)]
v4l2codech264dec: Implement queuing
We now pass the controls, associated to a request, queue the bitstream, qeueue
a picture buffer to decode into and finally queue the request. This now runs
until the buffer pool is exhausted. The next step will be to dequeue.
Nicolas Dufresne [Sat, 15 Feb 2020 03:03:17 +0000 (22:03 -0500)]
v4l2decoder: Add helpers to queue buffer and requests
Nicolas Dufresne [Sat, 15 Feb 2020 02:57:34 +0000 (21:57 -0500)]
v4l2codec: Add getter for buffer index in allocator and pool
Nicolas Dufresne [Thu, 13 Feb 2020 22:46:29 +0000 (17:46 -0500)]
v4l2h264codecdec: Copy bitstream parameter and data
In this patch we fill the control structure with the bitstream paramter and
copy the bitstream data into V4L2 memory. Slice paramters are only the subset
of what Hantro needs, without any support for interlaced content.
Nicolas Dufresne [Thu, 13 Feb 2020 04:50:42 +0000 (23:50 -0500)]
v4l2slh264dec: Use the newly introduced allocator / pool
We now allocate and free the memory needed for streaming.
Nicolas Dufresne [Thu, 13 Feb 2020 04:45:14 +0000 (23:45 -0500)]
v4l2codec: Add allocator and pool implementation
This is a pooling allocator and the buffer pool does nothing other then
reusing the GstBuffer structure. Note that the pool is an internal pool, so
the start/stop/set_config virtual functions are not implemented.
Nicolas Dufresne [Thu, 13 Feb 2020 04:39:25 +0000 (23:39 -0500)]
v4l2codec: decoder: Add allocation helper
Nicolas Dufresne [Mon, 10 Feb 2020 23:05:39 +0000 (18:05 -0500)]
v4l2codecs: Implement H264 format negotiation
Nicolas Dufresne [Mon, 10 Feb 2020 23:02:37 +0000 (18:02 -0500)]
v4l2codecs: Add initial formats helpers
Nicolas Dufresne [Sun, 9 Feb 2020 16:31:11 +0000 (11:31 -0500)]
v4l2codecs: Add skeleton of H264 decoder
This introduces the skeleton of the H264 decoder. The plugin will list the
devices and register a subclass of the GstV4L2CodecH264Dec base class. The
subclass will pick the required specific information from the GstV4L2Device
stored in the subclass structure.
Nicolas Dufresne [Thu, 6 Feb 2020 02:42:56 +0000 (21:42 -0500)]
v4l2codec: Add GstV4L2Deocder helper object
This is a GstObject which will be used to hold on media and video device file
descriptor and provide abstracted ioctl calls with these descriptor. At the
moment this helper contains just enough to enumerate the supported format.
This part will be used by the plugin to register the CODEC specific elements..
Nicolas Dufresne [Thu, 6 Feb 2020 02:18:57 +0000 (21:18 -0500)]
v4l2codecs: Copy all needed Linux kernel headers
Most of the features we need are very early or not expose yet in the uAPI.
Using an internal copy ensure that we everything we need is defined avoiding
to add load of checks and conditionnal code.
Nicolas Dufresne [Tue, 4 Feb 2020 20:52:45 +0000 (15:52 -0500)]
v4l2codecs: Add device enumeration
This introduces a GstV4L2CodecDevice structure and helper to retrieve a
list of CODEC device drivers. In order to find the device driver we
enumerate all media devices with UDEV. We then get the media controller
topology and locate a entity with function encoder or decoder and make
sure it is linked to two V4L2 IO entity pointing to the same device
node.
Nicolas Dufresne [Mon, 3 Feb 2020 15:06:46 +0000 (10:06 -0500)]
v4l2codecs: Introdude a V4L2 CODECs Accelerator plugin
This plugin will support new CODECs uAPI in the Linux kernel. These
consist of an accelerator interface similar to DXVA, NVDEC, VDPAU and
VAAPI.
Seungha Yang [Mon, 30 Mar 2020 11:21:37 +0000 (20:21 +0900)]
msdkh264enc: Port to h264parser API for frame packing SEI injection
Create frame packing SEI memory only once per set_format() and
reuse it if possible.
Seungha Yang [Tue, 24 Mar 2020 10:23:46 +0000 (19:23 +0900)]
h264parse: Print all the syntax elements of frame packing for debugging
Other values might be useful for debugging
Haihao Xiang [Wed, 18 Mar 2020 02:11:19 +0000 (10:11 +0800)]
msdkh265enc: support 8-bit 422 encoding
The media driver can support HEVC 8-bit 422 encoding for non-lowpower
mode since ICL[1], so VPP is not needed for this case.
Sample pipeline:
gst-launch-1.0 videotestsrc ! video/x-raw,format=YUY2 ! msdkh265enc ! \
filesink location=output.h265
[1] https://github.com/intel/media-driver#decodingencoding-features
Haihao Xiang [Tue, 17 Mar 2020 07:18:37 +0000 (15:18 +0800)]
msdkh265enc: add support for Y210 in sink pad
Sample pipeline:
gst-launch-1.0 videotestsrc ! video/x-raw,format=Y210 !
msdkh265enc ! filesink location=output.h265
Haihao Xiang [Fri, 20 Mar 2020 01:53:28 +0000 (09:53 +0800)]
msdk: add a helper function to get codename of the platform
The features supported in MSDK vary from platform to platform. We may
support some features based on the codename of the platform in future.
Seungha Yang [Tue, 24 Mar 2020 07:00:30 +0000 (16:00 +0900)]
msdkenc: Try to find corresponding codec frame for encoded output buffer
The input and output buffers should be matched as much as possible
so that various metadata and its ordering to be preserved.
Seungha Yang [Sun, 22 Mar 2020 11:15:42 +0000 (20:15 +0900)]
msdkh264enc: Add support for CEA708 closed caption insertion
Currently supported caption format is CEA708_RAW