[FFmpeg-devel] [PATCH 2/3] doc/examples/transcode: stop using decoder's AVCodecContext.time_base

Anton Khirnov anton at khirnov.net
Wed May 31 18:32:04 EEST 2023


The contents of this field are not defined for decoding. Use
pkt_timebase, which is the timebase of demuxed packets.

Drop a tautological av_packet_rescale_ts() call, as the stream and
decoder timebases are the same.
---
 doc/examples/transcode.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/doc/examples/transcode.c b/doc/examples/transcode.c
index 7110816fe6..2e1491f432 100644
--- a/doc/examples/transcode.c
+++ b/doc/examples/transcode.c
@@ -269,7 +269,7 @@ static int init_filter(FilteringContext* fctx, AVCodecContext *dec_ctx,
         snprintf(args, sizeof(args),
                 "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
                 dec_ctx->width, dec_ctx->height, dec_ctx->pix_fmt,
-                dec_ctx->time_base.num, dec_ctx->time_base.den,
+                dec_ctx->pkt_timebase.num, dec_ctx->pkt_timebase.den,
                 dec_ctx->sample_aspect_ratio.num,
                 dec_ctx->sample_aspect_ratio.den);
 
@@ -309,7 +309,7 @@ static int init_filter(FilteringContext* fctx, AVCodecContext *dec_ctx,
         av_channel_layout_describe(&dec_ctx->ch_layout, buf, sizeof(buf));
         snprintf(args, sizeof(args),
                 "time_base=%d/%d:sample_rate=%d:sample_fmt=%s:channel_layout=%s",
-                dec_ctx->time_base.num, dec_ctx->time_base.den, dec_ctx->sample_rate,
+                dec_ctx->pkt_timebase.num, dec_ctx->pkt_timebase.den, dec_ctx->sample_rate,
                 av_get_sample_fmt_name(dec_ctx->sample_fmt),
                 buf);
         ret = avfilter_graph_create_filter(&buffersrc_ctx, buffersrc, "in",
@@ -547,9 +547,6 @@ int main(int argc, char **argv)
 
             av_log(NULL, AV_LOG_DEBUG, "Going to reencode&filter the frame\n");
 
-            av_packet_rescale_ts(packet,
-                                 ifmt_ctx->streams[stream_index]->time_base,
-                                 stream->dec_ctx->time_base);
             ret = avcodec_send_packet(stream->dec_ctx, packet);
             if (ret < 0) {
                 av_log(NULL, AV_LOG_ERROR, "Decoding failed\n");
-- 
2.40.1



More information about the ffmpeg-devel mailing list