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

Thilo Borgmann thilo.borgmann at mail.de
Sun Jun 20 22:08:44 EEST 2021


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.

-Thilo
-------------- next part --------------
From 98e48c5c34edaefd5a9310dab3803259efdfd502 Mon Sep 17 00:00:00 2001
From: Yun Zhang <yunz at devvm259.frc1.facebook.com>
Date: Sun, 20 Jun 2021 21:08:00 +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 +++
 1 file changed, 3 insertions(+)

diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c
index 57d977e..e07f20c 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);
         } else {
             lavfi->sink_stream_subcc_map[sink_idx] = -1;
         }
-- 
1.8.3.2



More information about the ffmpeg-devel mailing list