Skip to content

Commit

Permalink
avcodec/mediacodecenc: check missing Surface
Browse files Browse the repository at this point in the history
It's an invalid combination of Java MediaCodec with ANativeWindow.

Signed-off-by: Zhao Zhili <[email protected]>
  • Loading branch information
quink-black committed Dec 8, 2022
1 parent a63834b commit 5676338
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions libavcodec/mediacodecenc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++) {
Expand Down

0 comments on commit 5676338

Please sign in to comment.