@@ -143,6 +143,7 @@ static int dec_enc(AVPacket *pkt, const AVCodec *enc_codec)
{
AVFrame *frame;
int ret = 0;
+ AVStream *video = NULL;
ret = avcodec_send_packet(decoder_ctx, pkt);
if (ret < 0) {
@@ -176,6 +177,11 @@ static int dec_enc(AVPacket *pkt, const AVCodec *enc_codec)
* xxx: now the sample can't handle resolution change case.
*/
encoder_ctx->time_base = av_inv_q(decoder_ctx->framerate);
+ if (decoder_ctx->framerate.num == 0) {
+ video = ifmt_ctx->streams[video_stream];
+ if (video->r_frame_rate.num > 0 && video->r_frame_rate.den > 0)
+ encoder_ctx->time_base = av_inv_q(video->r_frame_rate);
+ }
encoder_ctx->pix_fmt = AV_PIX_FMT_VAAPI;
encoder_ctx->width = decoder_ctx->width;
encoder_ctx->height = decoder_ctx->height;
When framerate in codec layer is null, guess from stream. Signed-off-by: jianfeng.zheng <jianfeng.zheng@mthreads.com> --- doc/examples/vaapi_transcode.c | 6 ++++++ 1 file changed, 6 insertions(+)