On date Tuesday 2017-05-23 15:07:31 +0200, Moritz Barsnick encoded:
> 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.)
This sounds fine. Patch amended.
Thanks.
--
FFmpeg = Fabulous & Fascinating Maxi Power Elitist Gangster
>From 536d88be287613a3a49dd60c1023c2418e9b8810 Mon Sep 17 00:00:00 2001
From: Stefano Sabatini <[email protected]>
Date: Tue, 23 May 2017 12:22:41 +0200
Subject: [PATCH] lavc/mpegvideo_enc: allow low_delay for non MPEG2 codecs
depending on strict_std_compliance
Forcing low_delay can be useful, even if not officially supported.
---
libavcodec/mpegvideo_enc.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index db241c8..bef9a28 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -671,9 +671,11 @@ 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, "
+ "set strict_std_compliance to 'unofficial' or lower in order to allow it\n");
return -1;
}
if (s->max_b_frames != 0) {
--
1.9.1
_______________________________________________
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel