Message ID | 1495535328-32223-1-git-send-email-stefasab@gmail.com |
---|---|
State | Superseded |
Headers | show |
2017-05-23 18:28 GMT+08:00 Stefano Sabatini <stefasab@gmail.com>: > Forcing low_delay can be useful, even if not officially supported. > --- > libavcodec/mpegvideo_enc.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c > index db241c8..1123788 100644 > --- a/libavcodec/mpegvideo_enc.c > +++ b/libavcodec/mpegvideo_enc.c > @@ -671,9 +671,10 @@ FF_ENABLE_DEPRECATION_WARNINGS > } > > if (s->avctx->flags & AV_CODEC_FLAG_LOW_DELAY) { > - if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO) { > + if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO && > + s->strict_std_compliance >= FF_COMPLIANCE_NORMAL) { > av_log(avctx, AV_LOG_ERROR, > - "low delay forcing is only available for mpeg2\n"); > + "low delay forcing is only available for mpeg2, > increase strict_std_compliance to force it\n"); > return -1; > } > if (s->max_b_frames != 0) { > -- > 1.9.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel LGTM
On Tue, May 23, 2017 at 12:28:48 +0200, Stefano Sabatini wrote: > - if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO) { > + if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO && > + s->strict_std_compliance >= FF_COMPLIANCE_NORMAL) { > av_log(avctx, AV_LOG_ERROR, > - "low delay forcing is only available for mpeg2\n"); > + "low delay forcing is only available for mpeg2, increase strict_std_compliance to force it\n"); Mathematically speaking, you need to decrease, not increase it (so that it makes s->strict_std_compliance >= FF_COMPLIANCE_NORMAL false). #define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. #define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. #define FF_COMPLIANCE_NORMAL 0 #define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions #define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. The text is also confusing (while correct) in that you'll be "forcing the forcing (of low delay)". Perhaps something like: "[...] set strict_std_compliance to 'unofficial' or lower in order to allow it", or "enable it nevertheless". (I'm too lazy to check for other wordings.) Moritz
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index db241c8..1123788 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -671,9 +671,10 @@ FF_ENABLE_DEPRECATION_WARNINGS } if (s->avctx->flags & AV_CODEC_FLAG_LOW_DELAY) { - if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO) { + if (s->codec_id != AV_CODEC_ID_MPEG2VIDEO && + s->strict_std_compliance >= FF_COMPLIANCE_NORMAL) { av_log(avctx, AV_LOG_ERROR, - "low delay forcing is only available for mpeg2\n"); + "low delay forcing is only available for mpeg2, increase strict_std_compliance to force it\n"); return -1; } if (s->max_b_frames != 0) {