summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Arun Johnson <arunjohnson@google.com> 2022-09-23 21:25:47 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-09-23 21:25:47 +0000
commit1c2047a6155b96e406ef3a3ced7665a40f82f7d2 (patch)
tree8e89792aea7b3e718ab6d44b0872962ff8777286
parent00a4f69a91b09fb3705dc9d17650463c95b85f52 (diff)
parent1d74fbdd811beb1588350bf3b2561885de792438 (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.cpp31
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) {