codec2: list c2.* components in MediaCodecList
- Set proper media type for component interface and read them in
CCodec instead of current hack.
- Define debug.stagefright.omx_default_rank to override default OMX.*
rank value (currently set to be preferred over c2.*)
- Move MediaCodec::CreateByType logic from ACodec to MediaCodec.
Test: am instrument -e size small -w 'android.media.cts/android.support.test.runner.AndroidJUnitRunner'
Test: setprop debug.stagefright.ccodec yes
Test: killall mediaserver
Test: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.MediaCodecListTest
Change-Id: I55bd10d2d8c65867eae654e5bd64ef545689e699
diff --git a/media/libmedia/MediaCodecInfo.cpp b/media/libmedia/MediaCodecInfo.cpp
index a570ffe..5308e1c 100644
--- a/media/libmedia/MediaCodecInfo.cpp
+++ b/media/libmedia/MediaCodecInfo.cpp
@@ -141,6 +141,10 @@
return mIsEncoder;
}
+uint32_t MediaCodecInfo::rank() const {
+ return mRank;
+}
+
void MediaCodecInfo::getSupportedMimes(Vector<AString> *mimes) const {
mimes->clear();
for (size_t ix = 0; ix < mCaps.size(); ix++) {
@@ -170,10 +174,12 @@
AString name = AString::FromParcel(parcel);
AString owner = AString::FromParcel(parcel);
bool isEncoder = static_cast<bool>(parcel.readInt32());
+ uint32_t rank = parcel.readUint32();
sp<MediaCodecInfo> info = new MediaCodecInfo;
info->mName = name;
info->mOwner = owner;
info->mIsEncoder = isEncoder;
+ info->mRank = rank;
size_t size = static_cast<size_t>(parcel.readInt32());
for (size_t i = 0; i < size; i++) {
AString mime = AString::FromParcel(parcel);
@@ -191,6 +197,7 @@
mName.writeToParcel(parcel);
mOwner.writeToParcel(parcel);
parcel->writeInt32(mIsEncoder);
+ parcel->writeUint32(mRank);
parcel->writeInt32(mCaps.size());
for (size_t i = 0; i < mCaps.size(); i++) {
mCaps.keyAt(i).writeToParcel(parcel);
@@ -210,7 +217,7 @@
return -1;
}
-MediaCodecInfo::MediaCodecInfo() {
+MediaCodecInfo::MediaCodecInfo() : mRank(0x100) {
}
void MediaCodecInfoWriter::setName(const char* name) {
@@ -225,6 +232,10 @@
mInfo->mIsEncoder = isEncoder;
}
+void MediaCodecInfoWriter::setRank(uint32_t rank) {
+ mInfo->mRank = rank;
+}
+
std::unique_ptr<MediaCodecInfo::CapabilitiesWriter>
MediaCodecInfoWriter::addMime(const char *mime) {
ssize_t ix = mInfo->getCapabilityIndex(mime);