On Wed, Feb 17, 2021 at 04:51:09PM +0100, sfan5 wrote: > > From 22ebde779f61fb030633a881ef320264ea446b6b Mon Sep 17 00:00:00 2001 > From: sfan5 <sf...@live.de> > Date: Thu, 11 Feb 2021 20:48:54 +0100 > Subject: [PATCH 2/2] avcodec/mediacodec_wrapper: use > MediaCodecInfo.isSoftwareOnly() when available > > Added in Android 10 it provides a reliable way of filtering out > software decoders, unlike existing string-based checks. > --- > libavcodec/mediacodec_wrapper.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/libavcodec/mediacodec_wrapper.c b/libavcodec/mediacodec_wrapper.c > index f1945bcfc0..c829941d6b 100644 > --- a/libavcodec/mediacodec_wrapper.c > +++ b/libavcodec/mediacodec_wrapper.c > @@ -45,6 +45,7 @@ struct JNIAMediaCodecListFields { > jmethodID get_codec_capabilities_id; > jmethodID get_supported_types_id; > jmethodID is_encoder_id; > + jmethodID is_software_only_id; > > jclass codec_capabilities_class; > jfieldID color_formats_id; > @@ -81,6 +82,7 @@ static const struct FFJniField > jni_amediacodeclist_mapping[] = { > { "android/media/MediaCodecInfo", "getCapabilitiesForType", > "(Ljava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities;", > FF_JNI_METHOD, offsetof(struct JNIAMediaCodecListFields, > get_codec_capabilities_id), 1 }, > { "android/media/MediaCodecInfo", "getSupportedTypes", > "()[Ljava/lang/String;", FF_JNI_METHOD, offsetof(struct > JNIAMediaCodecListFields, get_supported_types_id), 1 }, > { "android/media/MediaCodecInfo", "isEncoder", "()Z", FF_JNI_METHOD, > offsetof(struct JNIAMediaCodecListFields, is_encoder_id), 1 }, > + { "android/media/MediaCodecInfo", "isSoftwareOnly", "()Z", > FF_JNI_METHOD, offsetof(struct JNIAMediaCodecListFields, > is_software_only_id), 0 }, > > { "android/media/MediaCodecInfo$CodecCapabilities", NULL, NULL, > FF_JNI_CLASS, offsetof(struct JNIAMediaCodecListFields, > codec_capabilities_class), 1 }, > { "android/media/MediaCodecInfo$CodecCapabilities", "colorFormats", > "[I", FF_JNI_FIELD, offsetof(struct JNIAMediaCodecListFields, > color_formats_id), 1 }, > @@ -441,6 +443,17 @@ char *ff_AMediaCodecList_getCodecNameByType(const char > *mime, int profile, int e > goto done_with_info; > } > > + if (jfields.is_software_only_id) { > + int is_software_only = (*env)->CallBooleanMethod(env, info, > jfields.is_software_only_id); > + if (ff_jni_exception_check(env, 1, log_ctx) < 0) { > + goto done; > + } > + > + if (is_software_only) { > + goto done_with_info; > + } > + } > + > codec_name = (*env)->CallObjectMethod(env, info, > jfields.get_name_id); > if (ff_jni_exception_check(env, 1, log_ctx) < 0) { > goto done; > -- > 2.30.1 >
LGTM, I'll push the patch in two days if there is no objection. Thanks, -- Matthieu B. _______________________________________________ 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".