[FFmpeg-devel] [PATCH] lavd/lavfi.c: Set time_base for 608 cc to container time_base.

Thilo Borgmann thilo.borgmann at mail.de
Mon Aug 2 15:17:44 EEST 2021


Am 25.07.21 um 09:47 schrieb Thilo Borgmann:
> Am 16.07.21 um 09:45 schrieb Thilo Borgmann:
>> Hi,
>>
>>>>> when transcoding 608 cc, the cc stream frame pts is set to the same value as its container frame's pts. However, the time_base is always set to 1/90000 (default) in the initialization stage. Which causes timing issues when the container time_base is actually not 1/90000.
>>>>
>>>> identical v2 attached that also includes updates to the FATE references affected by the patch (and failed with patchwork of course).
>>>>
>>>> -Thilo
>>>>
>>>> From 41b619e5d5083ca59a41cca9cb515190939d6573 Mon Sep 17 00:00:00 2001
>>>> From: Yun Zhang <yunz at devvm259.frc1.facebook.com>
>>>> Date: Mon, 28 Jun 2021 15:09:42 +0200
>>>> Subject: [PATCH] lavd/lavfi.c: Set time_base for 608 cc to container
>>>>  time_base.
>>>>
>>>> Suggested-By: ffmpeg at fb.com
>>>> ---
>>>>  libavdevice/lavfi.c            |  3 +++
>>>>  tests/ref/fate/sub-cc          |  4 ++--
>>>>  tests/ref/fate/sub-cc-realtime | 38 +++++++---------------------------
>>>>  3 files changed, 13 insertions(+), 32 deletions(-)
>>>>
>>>> diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c
>>>> index 57d977e7ce..e07f20c872 100644
>>>> --- a/libavdevice/lavfi.c
>>>> +++ b/libavdevice/lavfi.c
>>>> @@ -100,6 +100,7 @@ static int create_subcc_streams(AVFormatContext *avctx)
>>>>      LavfiContext *lavfi = avctx->priv_data;
>>>>      AVStream *st;
>>>>      int stream_idx, sink_idx;
>>>> +    AVRational *time_base;
>>>>  
>>>>      for (stream_idx = 0; stream_idx < lavfi->nb_sinks; stream_idx++) {
>>>>          sink_idx = lavfi->stream_sink_map[stream_idx];
>>>> @@ -109,6 +110,8 @@ static int create_subcc_streams(AVFormatContext *avctx)
>>>>                  return AVERROR(ENOMEM);
>>>>              st->codecpar->codec_id = AV_CODEC_ID_EIA_608;
>>>>              st->codecpar->codec_type = AVMEDIA_TYPE_SUBTITLE;
>>>> +            time_base = &avctx->streams[stream_idx]->time_base;
>>>> +            avpriv_set_pts_info(st, 64, time_base->num, time_base->den);
>>>
>>> This look like an unnecessariily complicated way to write
>>> st->time_base.{num,den}
>>
>> Changed patch attached.
> 
> Will push soon (tm) if there are no further comments.

Pushed, thanks!

-Thilo


More information about the ffmpeg-devel mailing list