xref: /rockchip-linux_mpp/mpp/base/mpp_2str.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  *
3*437bfbebSnyanmisaka  * Copyright 2015 Rockchip Electronics Co. LTD
4*437bfbebSnyanmisaka  *
5*437bfbebSnyanmisaka  * Licensed under the Apache License, Version 2.0 (the "License");
6*437bfbebSnyanmisaka  * you may not use this file except in compliance with the License.
7*437bfbebSnyanmisaka  * You may obtain a copy of the License at
8*437bfbebSnyanmisaka  *
9*437bfbebSnyanmisaka  *      http://www.apache.org/licenses/LICENSE-2.0
10*437bfbebSnyanmisaka  *
11*437bfbebSnyanmisaka  * Unless required by applicable law or agreed to in writing, software
12*437bfbebSnyanmisaka  * distributed under the License is distributed on an "AS IS" BASIS,
13*437bfbebSnyanmisaka  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*437bfbebSnyanmisaka  * See the License for the specific language governing permissions and
15*437bfbebSnyanmisaka  * limitations under the License.
16*437bfbebSnyanmisaka  */
17*437bfbebSnyanmisaka 
18*437bfbebSnyanmisaka #include "mpp_2str.h"
19*437bfbebSnyanmisaka #include "h264_syntax.h"
20*437bfbebSnyanmisaka #include "h265_syntax.h"
21*437bfbebSnyanmisaka 
strof_ctx_type(MppCtxType type)22*437bfbebSnyanmisaka const char *strof_ctx_type(MppCtxType type)
23*437bfbebSnyanmisaka {
24*437bfbebSnyanmisaka     static const char *ctx_type_str[MPP_CTX_BUTT] = {
25*437bfbebSnyanmisaka         "dec",
26*437bfbebSnyanmisaka         "enc",
27*437bfbebSnyanmisaka         "isp",
28*437bfbebSnyanmisaka     };
29*437bfbebSnyanmisaka 
30*437bfbebSnyanmisaka     return ctx_type_str[type];
31*437bfbebSnyanmisaka }
32*437bfbebSnyanmisaka 
strof_coding_type(MppCodingType coding)33*437bfbebSnyanmisaka const char *strof_coding_type(MppCodingType coding)
34*437bfbebSnyanmisaka {
35*437bfbebSnyanmisaka     static const char *coding_type_str0[] = {
36*437bfbebSnyanmisaka         "unused",
37*437bfbebSnyanmisaka         "autodetect",
38*437bfbebSnyanmisaka         "mpeg2",
39*437bfbebSnyanmisaka         "h263",
40*437bfbebSnyanmisaka         "mpeg4",
41*437bfbebSnyanmisaka         "wmv",
42*437bfbebSnyanmisaka         "rv",
43*437bfbebSnyanmisaka         "h264",
44*437bfbebSnyanmisaka         "mjpeg",
45*437bfbebSnyanmisaka         "vp8",
46*437bfbebSnyanmisaka         "vp9",
47*437bfbebSnyanmisaka     };
48*437bfbebSnyanmisaka     static const char *coding_type_str1[] = {
49*437bfbebSnyanmisaka         "vc1",
50*437bfbebSnyanmisaka         "flv1",
51*437bfbebSnyanmisaka         "divx3",
52*437bfbebSnyanmisaka         "vp6",
53*437bfbebSnyanmisaka         "h265",
54*437bfbebSnyanmisaka         "avs+",
55*437bfbebSnyanmisaka         "avs",
56*437bfbebSnyanmisaka         "avs2",
57*437bfbebSnyanmisaka         "av1",
58*437bfbebSnyanmisaka     };
59*437bfbebSnyanmisaka 
60*437bfbebSnyanmisaka     if (coding >= MPP_VIDEO_CodingUnused && coding <= MPP_VIDEO_CodingVP9)
61*437bfbebSnyanmisaka         return coding_type_str0[coding];
62*437bfbebSnyanmisaka     else if (coding >= MPP_VIDEO_CodingVC1 && coding <= MPP_VIDEO_CodingAV1)
63*437bfbebSnyanmisaka         return coding_type_str1[coding - MPP_VIDEO_CodingVC1];
64*437bfbebSnyanmisaka 
65*437bfbebSnyanmisaka     return NULL;
66*437bfbebSnyanmisaka }
67*437bfbebSnyanmisaka 
strof_rc_mode(MppEncRcMode rc_mode)68*437bfbebSnyanmisaka const char *strof_rc_mode(MppEncRcMode rc_mode)
69*437bfbebSnyanmisaka {
70*437bfbebSnyanmisaka     static const char *rc_mode_str[] = {
71*437bfbebSnyanmisaka         "vbr",
72*437bfbebSnyanmisaka         "cbr",
73*437bfbebSnyanmisaka         "fixqp",
74*437bfbebSnyanmisaka         "avbr",
75*437bfbebSnyanmisaka         "smtrc"
76*437bfbebSnyanmisaka     };
77*437bfbebSnyanmisaka 
78*437bfbebSnyanmisaka     if (rc_mode >= MPP_ENC_RC_MODE_VBR && rc_mode < MPP_ENC_RC_MODE_BUTT)
79*437bfbebSnyanmisaka         return rc_mode_str[rc_mode];
80*437bfbebSnyanmisaka 
81*437bfbebSnyanmisaka     return NULL;
82*437bfbebSnyanmisaka }
strof_gop_mode(MppEncRcGopMode gop_mode)83*437bfbebSnyanmisaka const char *strof_gop_mode(MppEncRcGopMode gop_mode)
84*437bfbebSnyanmisaka {
85*437bfbebSnyanmisaka     static const char *gop_mode_str[] = {
86*437bfbebSnyanmisaka         "normalp",
87*437bfbebSnyanmisaka         "smartp",
88*437bfbebSnyanmisaka     };
89*437bfbebSnyanmisaka 
90*437bfbebSnyanmisaka     if (gop_mode >= MPP_ENC_RC_NORMAL_P && gop_mode < MPP_ENC_RC_GOP_MODE_BUTT)
91*437bfbebSnyanmisaka         return gop_mode_str[gop_mode];
92*437bfbebSnyanmisaka 
93*437bfbebSnyanmisaka     return NULL;
94*437bfbebSnyanmisaka }
95*437bfbebSnyanmisaka 
strof_profle(MppCodingType coding,RK_U32 profile)96*437bfbebSnyanmisaka const char *strof_profle(MppCodingType coding, RK_U32 profile)
97*437bfbebSnyanmisaka {
98*437bfbebSnyanmisaka     static const char *h264_profile_str[] = {
99*437bfbebSnyanmisaka         "baseline",
100*437bfbebSnyanmisaka         "main",
101*437bfbebSnyanmisaka         "high",
102*437bfbebSnyanmisaka         "high10",
103*437bfbebSnyanmisaka     };
104*437bfbebSnyanmisaka     static const char *h265_profile_str[] = {
105*437bfbebSnyanmisaka         "main",
106*437bfbebSnyanmisaka         "main10",
107*437bfbebSnyanmisaka     };
108*437bfbebSnyanmisaka     static const char *jpeg_profile_str[] = {
109*437bfbebSnyanmisaka         "base",
110*437bfbebSnyanmisaka     };
111*437bfbebSnyanmisaka     static const char *vp8_profile_str[] = {
112*437bfbebSnyanmisaka         "base",
113*437bfbebSnyanmisaka     };
114*437bfbebSnyanmisaka     static const char *unknown_str[] = {
115*437bfbebSnyanmisaka         "unknown",
116*437bfbebSnyanmisaka     };
117*437bfbebSnyanmisaka 
118*437bfbebSnyanmisaka     switch (coding) {
119*437bfbebSnyanmisaka     case MPP_VIDEO_CodingAVC : {
120*437bfbebSnyanmisaka         if (profile == H264_PROFILE_BASELINE)
121*437bfbebSnyanmisaka             return h264_profile_str[0];
122*437bfbebSnyanmisaka         else if (profile == H264_PROFILE_MAIN)
123*437bfbebSnyanmisaka             return h264_profile_str[1];
124*437bfbebSnyanmisaka         else if (profile == H264_PROFILE_HIGH)
125*437bfbebSnyanmisaka             return h264_profile_str[2];
126*437bfbebSnyanmisaka         else if (profile == H264_PROFILE_HIGH10)
127*437bfbebSnyanmisaka             return h264_profile_str[3];
128*437bfbebSnyanmisaka         else
129*437bfbebSnyanmisaka             return unknown_str[0];
130*437bfbebSnyanmisaka     } break;
131*437bfbebSnyanmisaka     case MPP_VIDEO_CodingHEVC : {
132*437bfbebSnyanmisaka         if (profile < 2)
133*437bfbebSnyanmisaka             return h265_profile_str[0];
134*437bfbebSnyanmisaka         else
135*437bfbebSnyanmisaka             return unknown_str[0];
136*437bfbebSnyanmisaka     } break;
137*437bfbebSnyanmisaka     case MPP_VIDEO_CodingMJPEG : {
138*437bfbebSnyanmisaka         return jpeg_profile_str[0];
139*437bfbebSnyanmisaka     } break;
140*437bfbebSnyanmisaka     case MPP_VIDEO_CodingVP8 : {
141*437bfbebSnyanmisaka         return vp8_profile_str[0];
142*437bfbebSnyanmisaka     } break;
143*437bfbebSnyanmisaka     default : {
144*437bfbebSnyanmisaka     } break;
145*437bfbebSnyanmisaka     }
146*437bfbebSnyanmisaka 
147*437bfbebSnyanmisaka     return NULL;
148*437bfbebSnyanmisaka }
149