summaryrefslogtreecommitdiff
path: root/media/eco/ECOC2Utils.cpp
blob: 8952626fac04b9355c751ddfb683b1e66872efda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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