[FFmpeg-cvslog] avcodec/mediacodecenc: enable B frames only with -strict experimental

Zhao Zhili git at videolan.org
Mon Jan 9 05:29:14 EET 2023


ffmpeg | branch: master | Zhao Zhili <zhilizhao at tencent.com> | Sat Jan  7 00:07:05 2023 +0800| [a598be44dff810b41c07547cc897b60b8fed9f9e] | committer: Zhao Zhili

avcodec/mediacodecenc: enable B frames only with -strict experimental

Signed-off-by: Zhao Zhili <zhilizhao at tencent.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a598be44dff810b41c07547cc897b60b8fed9f9e
---

 libavcodec/mediacodecenc.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c
index 4c1809093c..a92a8dc5a9 100644
--- a/libavcodec/mediacodecenc.c
+++ b/libavcodec/mediacodecenc.c
@@ -276,8 +276,16 @@ static av_cold int mediacodec_init(AVCodecContext *avctx)
         av_log(avctx, AV_LOG_DEBUG, "set level to 0x%x\n", s->level);
         ff_AMediaFormat_setInt32(format, "level", s->level);
     }
-    if (avctx->max_b_frames > 0)
+    if (avctx->max_b_frames > 0) {
+        if (avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
+            av_log(avctx, AV_LOG_ERROR,
+                    "Enabling B frames will produce packets with no DTS. "
+                    "Use -strict experimental to use it anyway.\n");
+            ret = AVERROR(EINVAL);
+            goto bailout;
+        }
         ff_AMediaFormat_setInt32(format, "max-bframes", avctx->max_b_frames);
+    }
     if (s->pts_as_dts == -1)
         s->pts_as_dts = avctx->max_b_frames <= 0;
 



More information about the ffmpeg-cvslog mailing list