[FFmpeg-devel] [PATCH v2 1/2] libavformat/mpegts: Extract arib_caption descriptor data into codecpar->extradata

Jan Ekström jeebjp at gmail.com
Sun Apr 11 16:58:50 EEST 2021


On Sun, Apr 11, 2021 at 4:25 PM magic xqq <xqq at xqq.im> wrote:
>
> I have already tried to use st->stream_identifier directly in mpegtsenc.c
> while handling arib_caption stream in mpegts_write_pmt() function.
>
> But in mpegtsenc.c, st->stream_identifier always provides
> an incorrect value of 0, which should be 0x30 for arib_caption A profile.
>
> st->stream_identifier seems hasn't been copied correctly while remuxing into
> another mpegts stream. So I manually copied it.
>

Yes, AVStream::stream_identifier is not currently handled by ffmpeg.c.
Not sure its addition was ever really thought thoroughly, and mostly
added so that MPEG-TS reading clients could gain this value when
reading data. Not even ffprobe.c is currently poking a stick at it.

But quickly looking at things, you can map component_tag and
component_id according to the ARIB caption profile, since your
possibilities are:

FF_PROFILE_ARIB_PROFILE_A => component tag 0x30-0x37, data_component_id = 0x0008
FF_PROFILE_ARIB_PROFILE_C => component_tag 0x87, data_component_id = 0x0012

The only issue is if you want to keep the exact same component tag,
but that can be improved in ffmpeg.c by just passing it during stream
copy into the output AVStream if it's nonzero (that is why it's
identifier plus 1). Also probably we need an option to force it to
something else if needed. In any case, I consider this somewhat
separate from the remux case since I don't think you need to have the
exact same id for the remux to be workable? Please note if I am
mistaken.

Then there's the extra info, I'll have to check the specs later today
whether that contains anything dynamic.

Best regards,
Jan


More information about the ffmpeg-devel mailing list