blob: 8952626fac04b9355c751ddfb683b1e66872efda [file] [log] [blame]
/*
* 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