summaryrefslogtreecommitdiff
path: root/media
diff options
context:
space:
mode:
authorwenchangliu <wenchangliu@google.com>2020-12-08 17:59:48 +0800
committerwenchangliu <wenchangliu@google.com>2020-12-08 20:07:14 +0800
commitc9e406868dd3bcc8dc0e794cfd108e5b899c843b (patch)
treec56d64bd627ff229b8f8486fb1a930094de45031 /media
parent7fd4376324d166ad7de4a2ee2f0e27d8c140cbcd (diff)
downloadav-c9e406868dd3bcc8dc0e794cfd108e5b899c843b.tar.gz
ECOService: Support C2Config parameters convert to ECOServiceConstants
Bug: 158313935 Test: atest VideoEncoderTest#testH264Surf720p30fps4Mbps Change-Id: Ief093071587e1a9062ae0002e317d3c07ecb38cd
Diffstat (limited to 'media')
-rw-r--r--media/eco/Android.bp1
-rw-r--r--media/eco/ECOC2Utils.cpp154
-rw-r--r--media/eco/include/eco/ECOC2Utils.h49
3 files changed, 204 insertions, 0 deletions
diff --git a/media/eco/Android.bp b/media/eco/Android.bp
index 60727c5..4430208 100644
--- a/media/eco/Android.bp
+++ b/media/eco/Android.bp
@@ -21,6 +21,7 @@ cc_library_shared {
"ECOSession.cpp",
"ECOUtils.cpp",
"ECOServiceStatsProvider.cpp",
+ "ECOC2Utils.cpp",
],
aidl: {
diff --git a/media/eco/ECOC2Utils.cpp b/media/eco/ECOC2Utils.cpp
new file mode 100644
index 0000000..8952626
--- /dev/null
+++ b/media/eco/ECOC2Utils.cpp
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "ECOC2Utils"
+#include "eco/ECOC2Utils.h"
+
+namespace android {
+namespace media {
+namespace eco {
+
+int C2MediaType2ECOCodecType(std::shared_ptr<C2PortMediaTypeSetting::output> mediatype) {
+ std::string_view mime = mediatype->m.value;
+ if (!mime.compare("video/avc")) {
+ return CodecTypeAVC;
+ } else if (!mime.compare("video/hevc")) {
+ return CodecTypeHEVC;
+ }
+ return CodecTypeUnknown;
+}
+
+int C2Profile2ECOProfile(C2Config::profile_t profile) {
+ switch (profile) {
+ case PROFILE_AVC_BASELINE:
+ return AVCProfileBaseline;
+ case PROFILE_AVC_CONSTRAINED_BASELINE:
+ return AVCProfileConstrainedBaseline;
+ case PROFILE_AVC_MAIN:
+ return AVCProfileMain;
+ case PROFILE_AVC_HIGH:
+ return AVCProfileHigh;
+ case PROFILE_HEVC_MAIN:
+ return HEVCProfileMain;
+ default:
+ return 0;
+ }
+}
+
+int C2Level2ECOLevel(C2Config::level_t level) {
+ switch (level) {
+ case LEVEL_AVC_1:
+ return AVCLevel1;
+ case LEVEL_AVC_1B:
+ return AVCLevel1b;
+ case LEVEL_AVC_1_1:
+ return AVCLevel11;
+ case LEVEL_AVC_1_2:
+ return AVCLevel12;
+ case LEVEL_AVC_1_3:
+ return AVCLevel13;
+ case LEVEL_AVC_2:
+ return AVCLevel2;
+ case LEVEL_AVC_2_1:
+ return AVCLevel21;
+ case LEVEL_AVC_2_2:
+ return AVCLevel22;
+ case LEVEL_AVC_3:
+ return AVCLevel3;
+ case LEVEL_AVC_3_1:
+ return AVCLevel31;
+ case LEVEL_AVC_3_2:
+ return AVCLevel32;
+ case LEVEL_AVC_4 :
+ return AVCLevel4;
+ case LEVEL_AVC_4_1:
+ return AVCLevel41;
+ case LEVEL_AVC_5:
+ return AVCLevel5;
+ case LEVEL_AVC_5_1:
+ return AVCLevel51;
+ case LEVEL_AVC_5_2:
+ return AVCLevel52;
+ case LEVEL_AVC_6:
+ return AVCLevel6;
+ case LEVEL_AVC_6_1:
+ return AVCLevel61;
+ case LEVEL_AVC_6_2:
+ return AVCLevel62;
+ case LEVEL_HEVC_MAIN_1:
+ return HEVCMainTierLevel1;
+ case LEVEL_HEVC_MAIN_2:
+ return HEVCMainTierLevel2;
+ case LEVEL_HEVC_MAIN_2_1:
+ return HEVCMainTierLevel21;
+ case LEVEL_HEVC_MAIN_3:
+ return HEVCMainTierLevel3;
+ case LEVEL_HEVC_MAIN_3_1:
+ return HEVCMainTierLevel31;
+ case LEVEL_HEVC_MAIN_4:
+ return HEVCMainTierLevel4;
+ case LEVEL_HEVC_MAIN_4_1:
+ return HEVCMainTierLevel41;
+ case LEVEL_HEVC_MAIN_5:
+ return HEVCMainTierLevel5;
+ case LEVEL_HEVC_MAIN_5_1:
+ return HEVCMainTierLevel51;
+ case LEVEL_HEVC_MAIN_5_2:
+ return HEVCMainTierLevel52;
+ case LEVEL_HEVC_MAIN_6:
+ return HEVCMainTierLevel6;
+ case LEVEL_HEVC_MAIN_6_1:
+ return HEVCMainTierLevel61;
+ case LEVEL_HEVC_MAIN_6_2:
+ return HEVCMainTierLevel62;
+ case LEVEL_HEVC_HIGH_4:
+ return HEVCHighTierLevel4;
+ case LEVEL_HEVC_HIGH_4_1:
+ return HEVCHighTierLevel41;
+ case LEVEL_HEVC_HIGH_5 :
+ return HEVCHighTierLevel5;
+ case LEVEL_HEVC_HIGH_5_1:
+ return HEVCHighTierLevel51;
+ case LEVEL_HEVC_HIGH_5_2:
+ return HEVCHighTierLevel52;
+ case LEVEL_HEVC_HIGH_6:
+ return HEVCHighTierLevel6;
+ case LEVEL_HEVC_HIGH_6_1:
+ return HEVCHighTierLevel61;
+ case LEVEL_HEVC_HIGH_6_2:
+ return HEVCHighTierLevel62;
+ default:
+ return 0;
+ }
+}
+
+int C2PictureType2ECOFrameType(C2Config::picture_type_t frametype) {
+ switch (frametype) {
+ case I_FRAME:
+ return FrameTypeI;
+ case P_FRAME:
+ return FrameTypeP;
+ case B_FRAME:
+ return FrameTypeB;
+ default:
+ return FrameTypeUnknown;
+ }
+}
+
+} // namespace eco
+} // namespace media
+} // namespace android
diff --git a/media/eco/include/eco/ECOC2Utils.h b/media/eco/include/eco/ECOC2Utils.h
new file mode 100644
index 0000000..1cdf506
--- /dev/null
+++ b/media/eco/include/eco/ECOC2Utils.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Helper classes and functions to be used by provider and listener.
+#ifndef ANDROID_MEDIA_ECO_C2UTILS_H_
+#define ANDROID_MEDIA_ECO_C2UTILS_H_
+
+#include <cutils/atomic.h>
+#include <utils/Errors.h>
+
+#include <C2Config.h>
+#include "ECOData.h"
+#include "ECODataKey.h"
+#include "ECOServiceConstants.h"
+
+namespace android {
+namespace media {
+namespace eco {
+
+// Convert C2MediaType to ECOCodecType
+extern int C2MediaType2ECOCodecType(std::shared_ptr<C2PortMediaTypeSetting::output> mediatype);
+
+// Convert C2Profile to ECOProfile
+extern int C2Profile2ECOProfile(C2Config::profile_t profile);
+
+// Convert C2Level to ECOLevel
+extern int C2Level2ECOLevel(C2Config::level_t level);
+
+// Convert C2PictureType to ECOFrameType
+extern int C2PictureType2ECOFrameType(C2Config::picture_type_t frametype);
+
+} // namespace eco
+} // namespace media
+} // namespace android
+
+#endif // ANDROID_MEDIA_ECO_C2UTILS_H_