am7xxx-play: get the framerate from the video stream
authorAntonio Ospite <ospite@studenti.unina.it>
Tue, 22 May 2012 13:42:26 +0000 (15:42 +0200)
committerAntonio Ospite <ospite@studenti.unina.it>
Tue, 22 May 2012 13:42:26 +0000 (15:42 +0200)
When setting the output codec get the time_base (which indicates the
framerate) from the video stream, not from the input codec context, this
is the correct way to do it.

On some systems (Windows) the time_base from the input codec context is
set different from the one of the video stream, and timebase.num ends up
being 0 which results in the output codec initialization failing with
the message "framerate not set".

examples/am7xxx-play.c

index 2fc8763..8a52ae0 100644 (file)
@@ -199,8 +199,10 @@ static int video_output_init(struct video_output_ctx *output_ctx,
        output_codec_ctx->bit_rate   = (input_ctx->codec_ctx)->bit_rate;
        output_codec_ctx->width      = new_output_width;
        output_codec_ctx->height     = new_output_height;
-       output_codec_ctx->time_base.num  = (input_ctx->codec_ctx)->time_base.num;
-       output_codec_ctx->time_base.den  = (input_ctx->codec_ctx)->time_base.den;
+       output_codec_ctx->time_base.num  =
+               (input_ctx->format_ctx)->streams[input_ctx->video_stream_index]->time_base.num;
+       output_codec_ctx->time_base.den  =
+               (input_ctx->format_ctx)->streams[input_ctx->video_stream_index]->time_base.den;
 
        /* When the raw format is requested we don't actually need to setup
         * and open a decoder