[FFmpeg-devel] [FFMPEG DEVEL] [PATCH v2] fftools/ffprobe: Add S12M Timecode output as side data (such as SEI TC)
Marton Balint
cus at passwd.hu
Sun May 19 00:07:50 EEST 2019
On Sat, 18 May 2019, Antonin Gouzer wrote:
> Thank you for your response,
> I don't have any example of such a file.
> I was thinking that GOP timecode was reserved to MPEG2 files and S12M
> to H265/H264 files ?
>
> In every writer the type of timecode is already an attribute: side_data_type.
> With the actual xsd the result should be, with the XML writer:
>
> <side_data_list>
> <side_data side_data_type="SMPTE 12-1 timecode"
> timecode="00:03:25:03"/>
> <side_data side_data_type="GOP timecode"
> timecode="00:03:25:03"/>
> </side_data_list>
>
> That should be ok don't you think ?
Ah, OK then.
I see another issue though: what if S12M side data has more than one
timecode in it? Having the same attirbute multiple times in an XML tag is
not valid.
>> On Fri, 17 May 2019, Antonin Gouzer wrote:
>>
>> > Thanks in advance.
>> > ---
>> > fftools/ffprobe.c | 8 ++++++++
>> > 1 file changed, 8 insertions(+)
>> >
>> > diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c
>> > index dea489d02e..4763ce6d98 100644
>> > --- a/fftools/ffprobe.c
>> > +++ b/fftools/ffprobe.c
>> > @@ -2199,6 +2199,14 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
>> > char tcbuf[AV_TIMECODE_STR_SIZE];
>> > av_timecode_make_mpeg_tc_string(tcbuf, *(int64_t *)(sd->data));
>> > print_str("timecode", tcbuf);
>> > + } else if (sd->type == AV_FRAME_DATA_S12M_TIMECODE && sd->size >= 8) {
>> > + uint32_t *tc = (uint32_t*)sd->data;
An assert makes sense here to check if tc[0] <= 3.
>> > + for (int j = 1; j <= tc[0]; j++) {
>> > + char tcbuf[AV_TIMECODE_STR_SIZE];
>> > + av_timecode_make_smpte_tc_string(tcbuf, tc[j], 0);
>> > + print_str("timecode", tcbuf);
>> > + }
>> > + break;
Why the break?
Regards,
Marton
More information about the ffmpeg-devel
mailing list