Update to new AV1 profile definitions and support HDR info
Test: cts-tradefed run commandAndExit cts-dev -m CtsMediaTestCases \
-t android.media.cts.DecoderTest#testAV1HdrStaticMetadata
Bug: 123756486
Change-Id: I673f91e7b6bd3c0f31fd67f035b5ece7f6a71844
diff --git a/media/codec2/sfplugin/utils/Codec2Mapper.cpp b/media/codec2/sfplugin/utils/Codec2Mapper.cpp
index d62944a..40160c7 100644
--- a/media/codec2/sfplugin/utils/Codec2Mapper.cpp
+++ b/media/codec2/sfplugin/utils/Codec2Mapper.cpp
@@ -379,11 +379,19 @@
ALookup<C2Config::profile_t, int32_t> sAv1Profiles = {
- { C2Config::PROFILE_AV1_0, AV1Profile0 },
- { C2Config::PROFILE_AV1_1, AV1Profile1 },
- { C2Config::PROFILE_AV1_2, AV1Profile2 },
+ // TODO: will need to disambiguate between Main8 and Main10
+ { C2Config::PROFILE_AV1_0, AV1ProfileMain8 },
+ { C2Config::PROFILE_AV1_0, AV1ProfileMain10 },
};
+ALookup<C2Config::profile_t, int32_t> sAv1HdrProfiles = {
+ { C2Config::PROFILE_AV1_0, AV1ProfileMain10 },
+ { C2Config::PROFILE_AV1_0, AV1ProfileMain10HDR10 },
+};
+
+ALookup<C2Config::profile_t, int32_t> sAv1Hdr10PlusProfiles = {
+ { C2Config::PROFILE_AV1_0, AV1ProfileMain10HDR10Plus },
+};
/**
* A helper that passes through vendor extension profile and level values.
@@ -590,6 +598,10 @@
};
struct Av1ProfileLevelMapper : ProfileLevelMapperHelper {
+ Av1ProfileLevelMapper(bool isHdr = false, bool isHdr10Plus = false) :
+ ProfileLevelMapperHelper(),
+ mIsHdr(isHdr), mIsHdr10Plus(isHdr10Plus) {}
+
virtual bool simpleMap(C2Config::level_t from, int32_t *to) {
return sAv1Levels.map(from, to);
}
@@ -597,11 +609,19 @@
return sAv1Levels.map(from, to);
}
virtual bool simpleMap(C2Config::profile_t from, int32_t *to) {
- return sAv1Profiles.map(from, to);
+ return mIsHdr10Plus ? sAv1Hdr10PlusProfiles.map(from, to) :
+ mIsHdr ? sAv1HdrProfiles.map(from, to) :
+ sAv1Profiles.map(from, to);
}
virtual bool simpleMap(int32_t from, C2Config::profile_t *to) {
- return sAv1Profiles.map(from, to);
+ return mIsHdr10Plus ? sAv1Hdr10PlusProfiles.map(from, to) :
+ mIsHdr ? sAv1HdrProfiles.map(from, to) :
+ sAv1Profiles.map(from, to);
}
+
+private:
+ bool mIsHdr;
+ bool mIsHdr10Plus;
};
} // namespace