From c49c89a66675820b4ca23c7399194a310c7c16e9 Mon Sep 17 00:00:00 2001 From: philippegorley <philippe.gorley@savoirfairelinux.com> Date: Mon, 13 Aug 2018 16:21:06 -0400 Subject: [PATCH] decoder: add more fallbacks if fps is 0 Change-Id: I59f25e4537c393674f1b62b0e12deb143d9fc108 Reviewed-by: Hugo Lefeuvre <hugo.lefeuvre@savoirfairelinux.com> --- src/media/media_decoder.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp index a3061bb4be..21d8945cb2 100644 --- a/src/media/media_decoder.cpp +++ b/src/media/media_decoder.cpp @@ -193,9 +193,14 @@ MediaDecoder::setupStream(AVMediaType mediaType) } avcodec_parameters_to_context(decoderCtx_, avStream_->codecpar); decoderCtx_->framerate = avStream_->avg_frame_rate; - // in case FFmpeg could not find a framerate, fall back to the ones found in openInput - if (mediaType == AVMEDIA_TYPE_VIDEO && (decoderCtx_->framerate.num == 0 || decoderCtx_->framerate.den == 0)) - decoderCtx_->framerate = inputParams_.framerate; + if (mediaType == AVMEDIA_TYPE_VIDEO) { + if (decoderCtx_->framerate.num == 0 || decoderCtx_->framerate.den == 0) + decoderCtx_->framerate = inputParams_.framerate; + if (decoderCtx_->framerate.num == 0 || decoderCtx_->framerate.den == 0) + decoderCtx_->framerate = av_inv_q(decoderCtx_->time_base); + if (decoderCtx_->framerate.num == 0 || decoderCtx_->framerate.den == 0) + decoderCtx_->framerate = {30, 1}; + } decoderCtx_->thread_count = std::max(1u, std::min(8u, std::thread::hardware_concurrency()/2)); -- GitLab