avtp: Introduce AVTP CVF payloader element
authorEderson de Souza <ederson.desouza@intel.com>
Thu, 28 Feb 2019 23:49:02 +0000 (15:49 -0800)
committerEderson de Souza <ederson.desouza@intel.com>
Wed, 3 Jul 2019 16:59:35 +0000 (09:59 -0700)
commit3b4f3a0b3f2985681f86572607f38173407f8a1f
treede4afd724a27b91756bff5e53f6c1e8157f12992
parent5abe516c6c75fa5c9c9ab95a638f8b169c5e5927
avtp: Introduce AVTP CVF payloader element

This patch introduces the AVTP Compressed Video Format (CVF) payloader
specified in IEEE 1722-2016 section 8. Currently, this payload only
supports H.264 encapsulation described in section 8.5.

Is also worth noting that only single NAL units are encapsulated: no
aggregation or fragmentation is performed by the payloader.

An interesting characteristic of CVF H.264 spec is that it defines an
H264_TIMESTAMP, in addition to the AVTP timestamp. The later is
translated to the GST_BUFFER_DTS while the former is translated to the
GST_BUFFER_PTS. From AVTP CVF H.264 spec, it is clear that the AVTP
timestamp is related to the decoding order, while the H264_TIMESTAMP is
an ancillary information to the H.264 decoder.

Upon receiving a buffer containing a group of NAL units, the avtpcvfpay
element will extract each NAL unit and payload them into individual AVTP
packets. The last AVTP packet generated for a group of NAL units will
have the M bit set, so the depayloader is able to properly regroup them.

The exact format of the buffer of NAL units is described on the
'codec_data' capability, which is parsed by the avtpcvfpay, in the same
way done in rtph264pay.

This patch reuses the infra provided by gstavtpbasepayload.c.
ext/avtp/Makefile.am
ext/avtp/gstavtp.c
ext/avtp/gstavtpcvfpay.c [new file with mode: 0644]
ext/avtp/gstavtpcvfpay.h [new file with mode: 0644]
ext/avtp/meson.build