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.

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.

Otherwise looks good.

Thanks,
Marton


diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c
index bc9163bf98..ed500bf798 100644
--- a/libavcodec/codec_desc.c
+++ b/libavcodec/codec_desc.c
@@ -3634,6 +3634,12 @@ static const AVCodecDescriptor codec_descriptors[] = {
        .long_name = NULL_IF_CONFIG_SMALL("ARIB STD-B24 caption"),
        .profiles  = NULL_IF_CONFIG_SMALL(ff_arib_caption_profiles),
    },
+    {
+        .id        = AV_CODEC_ID_DVB_VBI,
+        .type      = AVMEDIA_TYPE_SUBTITLE,
+        .name      = "dvb_vbi",
+        .long_name = NULL_IF_CONFIG_SMALL("DVB VBI data"),
+    },

    /* other kind of codecs and pseudo-codecs */
    {
diff --git a/libavcodec/codec_id.h b/libavcodec/codec_id.h
index 6bfaa02601..0e9e83fddb 100644
--- a/libavcodec/codec_id.h
+++ b/libavcodec/codec_id.h
@@ -579,6 +579,7 @@ enum AVCodecID {
    AV_CODEC_ID_HDMV_TEXT_SUBTITLE,
    AV_CODEC_ID_TTML,
    AV_CODEC_ID_ARIB_CAPTION,
+    AV_CODEC_ID_DVB_VBI,

    /* other specific kind of codecs (generally used for attachments) */
    AV_CODEC_ID_FIRST_UNKNOWN = 0x18000,           ///< A dummy ID pointing at 
the start of various fake codecs.
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 177e610e53..693c8c849d 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -891,6 +891,8 @@ static const StreamType DESC_types[] = {
    { 0x6a, AVMEDIA_TYPE_AUDIO,    AV_CODEC_ID_AC3          }, /* AC-3 
descriptor */
    { 0x7a, AVMEDIA_TYPE_AUDIO,    AV_CODEC_ID_EAC3         }, /* E-AC-3 
descriptor */
    { 0x7b, AVMEDIA_TYPE_AUDIO,    AV_CODEC_ID_DTS          },
+    { VBI_DATA_DESCRIPTOR,     AVMEDIA_TYPE_SUBTITLE, AV_CODEC_ID_DVB_VBI      
},
+    { VBI_TELETEXT_DESCRIPTOR, AVMEDIA_TYPE_SUBTITLE, AV_CODEC_ID_DVB_VBI      
},
    { 0x56, AVMEDIA_TYPE_SUBTITLE, AV_CODEC_ID_DVB_TELETEXT },
    { 0x59, AVMEDIA_TYPE_SUBTITLE, AV_CODEC_ID_DVB_SUBTITLE }, /* subtitling 
descriptor */
    { 0 },
@@ -1888,6 +1890,7 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, 
AVStream *st, int stream_type
            }
        }
        break;
+    case VBI_TELETEXT_DESCRIPTOR:
    case 0x56: /* DVB teletext descriptor */
        {
            uint8_t *extradata = NULL;
diff --git a/libavformat/mpegts.h b/libavformat/mpegts.h
index d6dcf20947..bd9d402529 100644
--- a/libavformat/mpegts.h
+++ b/libavformat/mpegts.h
@@ -167,6 +167,8 @@

/* DVB descriptor tag values [0x40, 0x7F] from
   ETSI EN 300 468 Table 12: Possible locations of descriptors */
+#define VBI_DATA_DESCRIPTOR          0x45
+#define VBI_TELETEXT_DESCRIPTOR      0x46
#define SERVICE_DESCRIPTOR           0x48
#define STREAM_IDENTIFIER_DESCRIPTOR 0x52
#define TELETEXT_DESCRIPTOR          0x56
--
2.43.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to