From: Zhao Zhili <zhiliz...@tencent.com> It's an invalid combination of Java MediaCodec with ANativeWindow. --- libavcodec/mediacodecenc.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/libavcodec/mediacodecenc.c b/libavcodec/mediacodecenc.c index 7cdde59945..a4390a9df6 100644 --- a/libavcodec/mediacodecenc.c +++ b/libavcodec/mediacodecenc.c @@ -167,6 +167,16 @@ static av_cold int mediacodec_init(AVCodecContext *avctx) av_log(avctx, AV_LOG_ERROR, "Missing hw_device_ctx or hwaccel_context for AV_PIX_FMT_MEDIACODEC\n"); goto bailout; } + /* Although there is a method ANativeWindow_toSurface() introduced in + * API level 26, it's easier and safe to always require a Surface for + * Java MediaCodec. + */ + if (!s->use_ndk_codec && !s->window->surface) { + ret = AVERROR(EINVAL); + av_log(avctx, AV_LOG_ERROR, "Missing jobject Surface for AV_PIX_FMT_MEDIACODEC. " + "Please note that Java MediaCodec doesn't work with ANativeWindow.\n"); + goto bailout; + } } for (int i = 0; i < FF_ARRAY_ELEMS(color_formats); i++) { -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".