diff options
| author | 2022-09-23 21:25:47 +0000 | |
|---|---|---|
| committer | 2022-09-23 21:25:47 +0000 | |
| commit | 1c2047a6155b96e406ef3a3ced7665a40f82f7d2 (patch) | |
| tree | 8e89792aea7b3e718ab6d44b0872962ff8777286 | |
| parent | 00a4f69a91b09fb3705dc9d17650463c95b85f52 (diff) | |
| parent | 1d74fbdd811beb1588350bf3b2561885de792438 (diff) | |
Merge "Returning camcoder profiles for advanced codecs" into tm-qpr-dev am: 84422bf1e7 am: 1d74fbdd81
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19996297
Change-Id: Icebc19642f1d08840fa510c7cb0c449a0fb889ec
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | media/jni/android_media_MediaProfiles.cpp | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/media/jni/android_media_MediaProfiles.cpp b/media/jni/android_media_MediaProfiles.cpp index ecb1d510f807..9868a148d998 100644 --- a/media/jni/android_media_MediaProfiles.cpp +++ b/media/jni/android_media_MediaProfiles.cpp @@ -255,21 +255,21 @@ android_media_MediaProfiles_native_get_camcorder_profiles(JNIEnv *env, jobject / jmethodID audioProfileConstructorMethodID = env->GetMethodID(audioProfileClazz, "<init>", "(IIIII)V"); - jobjectArray videoCodecs = (jobjectArray)env->NewObjectArray( - cp->getVideoCodecs().size(), videoProfileClazz, nullptr); + jobjectArray videoCodecs = nullptr; { - int i = 0; + auto isAdvancedCodec = [](const MediaProfiles::VideoCodec *vc) -> bool { + return ((vc->getBitDepth() != 8 + || vc->getChromaSubsampling() != CHROMA_SUBSAMPLING_YUV_420 + || vc->getHdrFormat() != HDR_FORMAT_NONE)); + }; + std::vector<jobject> codecVector; for (const MediaProfiles::VideoCodec *vc : cp->getVideoCodecs()) { + if (isAdvancedCodec(vc) && !static_cast<bool>(advanced)) { + continue; + } chroma_subsampling cs = vc->getChromaSubsampling(); int bitDepth = vc->getBitDepth(); hdr_format hdr = vc->getHdrFormat(); - - bool isAdvanced = - (bitDepth != 8 || cs != CHROMA_SUBSAMPLING_YUV_420 || hdr != HDR_FORMAT_NONE); - if (static_cast<bool>(advanced) && !isAdvanced) { - continue; - } - jobject videoCodec = env->NewObject(videoProfileClazz, videoProfileConstructorMethodID, vc->getCodec(), @@ -281,10 +281,17 @@ android_media_MediaProfiles_native_get_camcorder_profiles(JNIEnv *env, jobject / static_cast<int>(cs), bitDepth, static_cast<int>(hdr)); - env->SetObjectArrayElement(videoCodecs, i++, videoCodec); + + codecVector.push_back(videoCodec); } - } + videoCodecs = (jobjectArray)env->NewObjectArray(codecVector.size(), + videoProfileClazz, nullptr); + int i = 0; + for (jobject codecObj : codecVector) { + env->SetObjectArrayElement(videoCodecs, i++, codecObj); + } + } jobjectArray audioCodecs; if (quality >= CAMCORDER_QUALITY_TIME_LAPSE_LIST_START && quality <= CAMCORDER_QUALITY_TIME_LAPSE_LIST_END) { |