From 2e4b7baf44d035b058f13577fef72c68c924b703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 1 Jun 2026 19:16:53 +0800 Subject: [PATCH] Codec (Android): adds showType support --- src/detection/codec/codec_android.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/detection/codec/codec_android.c b/src/detection/codec/codec_android.c index ab4b9f552..238dab7e8 100644 --- a/src/detection/codec/codec_android.c +++ b/src/detection/codec/codec_android.c @@ -54,7 +54,7 @@ static bool ffCodecIsHardwareAccelerated( return isHardware; } -const char* ffDetectCodecNative(FF_A_UNUSED FFCodecOptions* options, FFlist* result /*list of FFCodecResult*/) { +const char* ffDetectCodecNative(FFCodecOptions* options, FFlist* result /*list of FFCodecResult*/) { FF_LIBRARY_LOAD_MESSAGE(mediandk, "libmediandk.so", 0) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(mediandk, AMediaCodec_createDecoderByType) FF_LIBRARY_LOAD_SYMBOL_MESSAGE(mediandk, AMediaCodec_createEncoderByType) @@ -69,20 +69,24 @@ const char* ffDetectCodecNative(FF_A_UNUSED FFCodecOptions* options, FFlist* res const char* mime = FF_CODEC_MIME_TO_TYPE[i].mime; FFCodecType type = FF_CODEC_MIME_TO_TYPE[i].type; - AMediaCodec* decoder = ffAMediaCodec_createDecoderByType(mime); - if (decoder) { - if (ffCodecIsHardwareAccelerated(decoder, ffAMediaCodec_getName, ffAMediaCodec_releaseName)) { - decoders |= type; + if ((options->showType & FF_CODEC_SHOW_TYPE_DECODER) && !(decoders & type)) { + AMediaCodec* decoder = ffAMediaCodec_createDecoderByType(mime); + if (decoder) { + if (ffCodecIsHardwareAccelerated(decoder, ffAMediaCodec_getName, ffAMediaCodec_releaseName)) { + decoders |= type; + } + ffAMediaCodec_delete(decoder); } - ffAMediaCodec_delete(decoder); } - AMediaCodec* encoder = ffAMediaCodec_createEncoderByType(mime); - if (encoder) { - if (ffCodecIsHardwareAccelerated(encoder, ffAMediaCodec_getName, ffAMediaCodec_releaseName)) { - encoders |= type; + if ((options->showType & FF_CODEC_SHOW_TYPE_ENCODER) && !(encoders & type)) { + AMediaCodec* encoder = ffAMediaCodec_createEncoderByType(mime); + if (encoder) { + if (ffCodecIsHardwareAccelerated(encoder, ffAMediaCodec_getName, ffAMediaCodec_releaseName)) { + encoders |= type; + } + ffAMediaCodec_delete(encoder); } - ffAMediaCodec_delete(encoder); } }