stagefright: use OMXCodec's QueryCodec for capabilities
Bug: 27142863
Change-Id: Ica00f5395477a416e1ca4db2697310eef3d635a0
diff --git a/media/libmedia/MediaCodecInfo.cpp b/media/libmedia/MediaCodecInfo.cpp
index 8351af6..7a16c4e 100644
--- a/media/libmedia/MediaCodecInfo.cpp
+++ b/media/libmedia/MediaCodecInfo.cpp
@@ -26,6 +26,8 @@
#include <media/stagefright/foundation/AMessage.h>
#include <binder/Parcel.h>
+#include <media/stagefright/OMXCodec.h>
+
namespace android {
void MediaCodecInfo::Capabilities::getSupportedProfileLevels(
@@ -238,12 +240,26 @@
}
}
-status_t MediaCodecInfo::setCapabilitiesFromCodec(const sp<Capabilities> &caps) {
- if (mCurrentCaps != NULL) {
- // keep current capabilities map
- caps->mDetails = mCurrentCaps->mDetails;
+status_t MediaCodecInfo::initializeCapabilities(const CodecCapabilities &caps) {
+ mCurrentCaps->mProfileLevels.clear();
+ mCurrentCaps->mColorFormats.clear();
+
+ for (size_t i = 0; i < caps.mProfileLevels.size(); ++i) {
+ const CodecProfileLevel &src = caps.mProfileLevels.itemAt(i);
+
+ ProfileLevel profileLevel;
+ profileLevel.mProfile = src.mProfile;
+ profileLevel.mLevel = src.mLevel;
+ mCurrentCaps->mProfileLevels.push_back(profileLevel);
}
- mCurrentCaps = caps;
+
+ for (size_t i = 0; i < caps.mColorFormats.size(); ++i) {
+ mCurrentCaps->mColorFormats.push_back(caps.mColorFormats.itemAt(i));
+ }
+
+ mCurrentCaps->mFlags = caps.mFlags;
+ mCurrentCaps->mDetails = new AMessage;
+
return OK;
}