From 556d28188bc91bc7f7f46ecb2885048129bd3c4c Mon Sep 17 00:00:00 2001 From: Thomas Guillem <thomas@gllm.fr> Date: Tue, 29 Oct 2019 11:00:23 +0100 Subject: [PATCH] mediacodec: also set quirks from MediaCodec_GetName() --- modules/codec/omxil/mediacodec_jni.c | 19 ++++++++++--------- modules/codec/omxil/mediacodec_ndk.c | 13 ++++++------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/codec/omxil/mediacodec_jni.c b/modules/codec/omxil/mediacodec_jni.c index 3a3a71c745c7..671e9ce97539 100644 --- a/modules/codec/omxil/mediacodec_jni.c +++ b/modules/codec/omxil/mediacodec_jni.c @@ -39,7 +39,7 @@ #include "mediacodec.h" char* MediaCodec_GetName(vlc_object_t *p_obj, const char *psz_mime, - int profile, bool *p_adaptive); + int profile, int *p_quirks); #define THREAD_NAME "mediacodec_jni" @@ -318,7 +318,7 @@ struct mc_api_sys * MediaCodec_GetName *****************************************************************************/ char* MediaCodec_GetName(vlc_object_t *p_obj, const char *psz_mime, - int profile, bool *p_adaptive) + int profile, int *p_quirks) { JNIEnv *env; int num_codecs; @@ -453,8 +453,10 @@ char* MediaCodec_GetName(vlc_object_t *p_obj, const char *psz_mime, { memcpy(psz_name, name_ptr, name_len); psz_name[name_len] = '\0'; + + if (b_adaptive) + *p_quirks |= MC_API_VIDEO_QUIRKS_ADAPTIVE; } - *p_adaptive = b_adaptive; } loopclean: if (name) @@ -1009,19 +1011,18 @@ static void Clean(mc_api *api) static int Prepare(mc_api *api, int i_profile) { free(api->psz_name); - bool b_adaptive; + + api->i_quirks = 0; api->psz_name = MediaCodec_GetName(api->p_obj, api->psz_mime, - i_profile, &b_adaptive); + i_profile, &api->i_quirks); if (!api->psz_name) return MC_API_ERROR; - api->i_quirks = OMXCodec_GetQuirks(api->i_cat, api->i_codec, api->psz_name, - strlen(api->psz_name)); + api->i_quirks |= OMXCodec_GetQuirks(api->i_cat, api->i_codec, api->psz_name, + strlen(api->psz_name)); /* Allow interlaced picture after API 21 */ if (jfields.get_input_buffer && jfields.get_output_buffer) api->i_quirks |= MC_API_VIDEO_QUIRKS_SUPPORT_INTERLACED; - if (b_adaptive) - api->i_quirks |= MC_API_VIDEO_QUIRKS_ADAPTIVE; return 0; } diff --git a/modules/codec/omxil/mediacodec_ndk.c b/modules/codec/omxil/mediacodec_ndk.c index a72bf165cb48..d9a16412086b 100644 --- a/modules/codec/omxil/mediacodec_ndk.c +++ b/modules/codec/omxil/mediacodec_ndk.c @@ -39,7 +39,7 @@ #include "mediacodec.h" char* MediaCodec_GetName(vlc_object_t *p_obj, const char *psz_mime, - int hxxx_profile, bool *p_adaptive); + int hxxx_profile, int *p_quirks); #define THREAD_NAME "mediacodec_ndk" @@ -625,17 +625,16 @@ static void Clean(mc_api *api) static int Prepare(mc_api * api, int i_profile) { free(api->psz_name); - bool b_adaptive; + + api->i_quirks = 0; api->psz_name = MediaCodec_GetName(api->p_obj, api->psz_mime, - i_profile, &b_adaptive); + i_profile, &api->i_quirks); if (!api->psz_name) return MC_API_ERROR; - api->i_quirks = OMXCodec_GetQuirks(api->i_cat, api->i_codec, api->psz_name, - strlen(api->psz_name)); + api->i_quirks |= OMXCodec_GetQuirks(api->i_cat, api->i_codec, api->psz_name, + strlen(api->psz_name)); /* Allow interlaced picture after API 21 */ api->i_quirks |= MC_API_VIDEO_QUIRKS_SUPPORT_INTERLACED; - if (b_adaptive) - api->i_quirks |= MC_API_VIDEO_QUIRKS_ADAPTIVE; return 0; } -- GitLab