[FFmpeg-devel] [PATCH v2] libavformat/mpegts: demux DVB VBI data
Scott Theisen
scott.the.elm at gmail.com
Sun Dec 8 22:23:19 EET 2024
On 12/3/24 17:23, Marton Balint wrote:
>
>
> On Tue, 3 Dec 2024, Marton Balint wrote:
>
>>
>>
>> On Sat, 30 Nov 2024, Scott Theisen wrote:
>>
>>> DVB VBI data is defined in ETSI EN 301 775 and can include EBU
>>> teletext
>>> data
>>> as defined in ETSI EN 300 472.
>>>
>>> ETSI EN 300 468 defines teletext_descriptor, VBI_data_descriptor, and
>>> VBI_teletext_descriptor, which has the same definition as, but
>>> different
>>> use
>>> from, teletext_descriptor.
>>> ---
>>> libavcodec/codec_desc.c | 6 ++++++
>>> libavcodec/codec_id.h | 1 +
>>> libavformat/mpegts.c | 3 +++
>>> libavformat/mpegts.h | 2 ++
>>> 4 files changed, 12 insertions(+)
>>
>> You should split this to two patches.
OK, I'll do that.
>>
>> Patch 1 should add the codec ID the codec_description and please also
>> update the assertion check in libavcodec/version.c.
>>
>> Patch 2 should add the support for demuxing in mpegts. I'd rather put
>> the VBI descriptors after the teletext descriptor in the list, so in
>> case multiple descriptors are present the detected codec should be
>> teletext.
>
> On second thought the order does not help, because the codec will be
> determined by the first descriptor...
>
> Maybe when parsing the teletext descriptor it should override VBI
> codec to teletext, e.g.:
>
> case TELETEXT_DESCRIPTOR:
> if (codec_id == DVB_VBI)
> codec_id = DVB_TELETEXT
> // fall-through
> case VBI_TELETEXT_DESCRIPTOR:
> ....
I'm not sure it makes sense to change it from DVB_VBI to DVB_TELETEXT,
since the VBI format is backwards compatible with the teletext format.
Although, the TELETEXT_DESCRIPTOR is for EBU teletext data only streams,
but then there shouldn't be either VBI descriptor to set the codec_id to
DVB_VBI.
I'm not strongly opposed, I'm just not sure it is really necessary.
If you do want it, I'm not sure the if is necessary, just set codec_id
unconditionally. However, it might be better to just call
mpegts_find_stream_type() instead so FFStream::need_context_update is set.
Regardless, I'm wondering if instead VBI_TELETEXT_DESCRIPTOR should not
be added to DESC_types since ETSI EN 300 468 says this about
VBI_teletext_descriptor:
"
The only exception is that the VBI_teletext_descriptor is not to be used
to associate stream_type 0x06 with the VBI standard nor the EBU teletext
standard. Decoders can only use the languages in this descriptor to
select magazines and subtitles.
"
Regards,
Scott Theisen
More information about the ffmpeg-devel
mailing list