Hi, for hwdec on Android the wrapper attempts to blacklist known software decoders also provided through the mediacodec API. The list isn't complete however and ffmpeg might e.g. prefer slower "external" HEVC software decoding over its own software decoder.
This patch completes the list of known software decoders, which are: OMX.ffmpeg.* see https://github.com/AOSB/android_device_lge_hammerhead/blob/master/media_codecs.xml#L89 OMX.SEC.* see https://chromium.googlesource.com/chromium/src/+/refs/heads/lkgr/media/base/android/media_codec_util.cc#288 OMX.qcom.video.decoder.hevcswvdec see https://github.com/moonlight-stream/moonlight-android/blob/master/app/src/main/java/com/limelight/binding/video/MediaCodecHelper.java#L83
From fbc876a8763db254d4e26d00c8b4fcf9ea7e7183 Mon Sep 17 00:00:00 2001 From: sfan5 <sf...@live.de> Date: Tue, 6 Mar 2018 18:47:35 +0100 Subject: [PATCH] avcodec/mediacodec_wrapper: blacklist more software decoders Additionally blacklist ffmpeg, Samsung and Qualcomm software implementations offered through MediaCodec. --- libavcodec/mediacodec_wrapper.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libavcodec/mediacodec_wrapper.c b/libavcodec/mediacodec_wrapper.c index dbc37bf463..b12528500d 100644 --- a/libavcodec/mediacodec_wrapper.c +++ b/libavcodec/mediacodec_wrapper.c @@ -465,7 +465,12 @@ char *ff_AMediaCodecList_getCodecNameByType(const char *mime, int profile, int e goto done; } - if (strstr(name, "OMX.google")) { + /* Skip software decoders */ + if ( + strstr(name, "OMX.google") || + strstr(name, "OMX.ffmpeg") || + strstr(name, "OMX.SEC") || + !strcmp(name, "OMX.qcom.video.decoder.hevcswvdec")) { av_freep(&name); goto done_with_type; } -- 2.16.2
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel