MediaProfiles: expose CamcorderProfile objects for clients
Previously fields were retrieved via a central get(id1, id2, name) getter
that did not scale well to multiple encoder profiles for a single
object.
Expose the sub-objects directly with proper getters.
Bug: 171673898
Test: atest CamcorderProfileTest
Change-Id: Ia8e2451f3d4fe2c013da69aa6b26e60d66598a32
diff --git a/media/libmedia/MediaProfiles.cpp b/media/libmedia/MediaProfiles.cpp
index e6fe408..9c24cba 100644
--- a/media/libmedia/MediaProfiles.cpp
+++ b/media/libmedia/MediaProfiles.cpp
@@ -1121,6 +1121,36 @@
return index;
}
+const MediaProfiles::CamcorderProfile *MediaProfiles::getCamcorderProfile(
+ int cameraId, camcorder_quality quality) const {
+ int index = getCamcorderProfileIndex(cameraId, quality);
+ if (index == -1) {
+ ALOGE("The given camcorder profile camera %d quality %d is not found",
+ cameraId, quality);
+ return nullptr;
+ }
+
+ return mCamcorderProfiles[index];
+}
+
+std::vector<const MediaProfiles::AudioCodec *>
+MediaProfiles::CamcorderProfile::getAudioCodecs() const {
+ std::vector<const MediaProfiles::AudioCodec *> res;
+ for (const MediaProfiles::AudioCodec &ac : mAudioCodecs) {
+ res.push_back(&ac);
+ }
+ return res;
+}
+
+std::vector<const MediaProfiles::VideoCodec *>
+MediaProfiles::CamcorderProfile::getVideoCodecs() const {
+ std::vector<const MediaProfiles::VideoCodec *> res;
+ for (const MediaProfiles::VideoCodec &vc : mVideoCodecs) {
+ res.push_back(&vc);
+ }
+ return res;
+}
+
int MediaProfiles::getCamcorderProfileParamByName(const char *name,
int cameraId,
camcorder_quality quality) const