00001 #include "mythcodecid.h" 00002 #include "mythlogging.h" 00003 00004 extern "C" 00005 { 00006 #include "libavcodec/avcodec.h" 00007 } 00008 00009 QString toString(MythCodecID codecid) 00010 { 00011 switch (codecid) 00012 { 00013 case kCodec_NONE: 00014 return "None"; 00015 00016 case kCodec_NUV_RTjpeg: 00017 return "NUV RTjpeg"; 00018 case kCodec_NUV_MPEG4: 00019 return "NUV MPEG4"; 00020 00021 case kCodec_MPEG1: 00022 return "MPEG1"; 00023 case kCodec_MPEG2: 00024 return "MPEG2"; 00025 case kCodec_H263: 00026 return "H.263"; 00027 case kCodec_MPEG4: 00028 return "MPEG4"; 00029 case kCodec_H264: 00030 return "H.264"; 00031 case kCodec_VC1: 00032 return "VC-1"; 00033 case kCodec_WMV3: 00034 return "WMV3"; 00035 case kCodec_VP8: 00036 return "VP8"; 00037 00038 case kCodec_MPEG1_VDPAU: 00039 return "MPEG1 VDPAU"; 00040 case kCodec_MPEG2_VDPAU: 00041 return "MPEG2 VDPAU"; 00042 case kCodec_H263_VDPAU: 00043 return "H.263 VDPAU"; 00044 case kCodec_MPEG4_VDPAU: 00045 return "MPEG4 VDPAU"; 00046 case kCodec_H264_VDPAU: 00047 return "H.264 VDPAU"; 00048 case kCodec_VC1_VDPAU: 00049 return "VC1 VDPAU"; 00050 case kCodec_WMV3_VDPAU: 00051 return "WMV3 VDPAU"; 00052 case kCodec_VP8_VDPAU: 00053 return "VP8 VDPAU"; 00054 00055 case kCodec_MPEG1_VAAPI: 00056 return "MPEG1 VAAPI"; 00057 case kCodec_MPEG2_VAAPI: 00058 return "MPEG2 VAAPI"; 00059 case kCodec_H263_VAAPI: 00060 return "H.263 VAAPI"; 00061 case kCodec_MPEG4_VAAPI: 00062 return "MPEG4 VAAPI"; 00063 case kCodec_H264_VAAPI: 00064 return "H.264 VAAPI"; 00065 case kCodec_VC1_VAAPI: 00066 return "VC1 VAAPI"; 00067 case kCodec_WMV3_VAAPI: 00068 return "WMV3 VAAPI"; 00069 case kCodec_VP8_VAAPI: 00070 return "VP8 VAAPI"; 00071 00072 case kCodec_MPEG1_DXVA2: 00073 return "MPEG1 DXVA2"; 00074 case kCodec_MPEG2_DXVA2: 00075 return "MPEG2 DXVA2"; 00076 case kCodec_H263_DXVA2: 00077 return "H.263 DXVA2"; 00078 case kCodec_MPEG4_DXVA2: 00079 return "MPEG4 DXVA2"; 00080 case kCodec_H264_DXVA2: 00081 return "H.264 DXVA2"; 00082 case kCodec_VC1_DXVA2: 00083 return "VC1 DXVA2"; 00084 case kCodec_WMV3_DXVA2: 00085 return "WMV3 DXVA2"; 00086 case kCodec_VP8_DXVA2: 00087 return "VP8 DXVA2"; 00088 00089 default: 00090 break; 00091 } 00092 00093 return QString("Unknown(%1)").arg(codecid); 00094 } 00095 00096 int myth2av_codecid(MythCodecID codec_id, bool &vdpau) 00097 { 00098 vdpau = false; 00099 CodecID ret = CODEC_ID_NONE; 00100 switch (codec_id) 00101 { 00102 case kCodec_NONE: 00103 case kCodec_NUV_MPEG4: 00104 case kCodec_NUV_RTjpeg: 00105 ret = CODEC_ID_NONE; 00106 break; 00107 00108 case kCodec_MPEG1: 00109 ret = CODEC_ID_MPEG1VIDEO; 00110 break; 00111 case kCodec_MPEG2: 00112 ret = CODEC_ID_MPEG2VIDEO; 00113 break; 00114 case kCodec_H263: 00115 ret = CODEC_ID_H263; 00116 break; 00117 case kCodec_MPEG4: 00118 ret = CODEC_ID_MPEG4; 00119 break; 00120 case kCodec_H264: 00121 ret = CODEC_ID_H264; 00122 break; 00123 case kCodec_VP8: 00124 ret = CODEC_ID_VP8; 00125 break; 00126 00127 case kCodec_VC1: 00128 ret = CODEC_ID_VC1; 00129 break; 00130 case kCodec_WMV3: 00131 ret = CODEC_ID_WMV3; 00132 break; 00133 00134 case kCodec_MPEG1_VDPAU: 00135 ret = CODEC_ID_MPEG1VIDEO; 00136 vdpau = true; 00137 break; 00138 case kCodec_MPEG2_VDPAU: 00139 ret = CODEC_ID_MPEG2VIDEO; 00140 vdpau = true; 00141 break; 00142 case kCodec_H263_VDPAU: 00143 LOG(VB_GENERAL, LOG_ERR, 00144 "Error: VDPAU H.263 not supported by ffmpeg"); 00145 break; 00146 case kCodec_MPEG4_VDPAU: 00147 ret = CODEC_ID_MPEG4; 00148 break; 00149 00150 case kCodec_H264_VDPAU: 00151 ret = CODEC_ID_H264; 00152 vdpau = true; 00153 break; 00154 case kCodec_VC1_VDPAU: 00155 ret = CODEC_ID_VC1; 00156 vdpau = true; 00157 break; 00158 case kCodec_WMV3_VDPAU: 00159 ret = CODEC_ID_WMV3; 00160 vdpau = true; 00161 break; 00162 case kCodec_VP8_VDPAU: 00163 ret = CODEC_ID_VP8; 00164 break; 00165 00166 case kCodec_MPEG1_VAAPI: 00167 ret = CODEC_ID_MPEG1VIDEO; 00168 break; 00169 case kCodec_MPEG2_VAAPI: 00170 ret = CODEC_ID_MPEG2VIDEO; 00171 break; 00172 case kCodec_H263_VAAPI: 00173 ret = CODEC_ID_H263; 00174 break; 00175 case kCodec_MPEG4_VAAPI: 00176 ret = CODEC_ID_MPEG4; 00177 break; 00178 case kCodec_H264_VAAPI: 00179 ret = CODEC_ID_H264; 00180 break; 00181 case kCodec_VC1_VAAPI: 00182 ret = CODEC_ID_VC1; 00183 break; 00184 case kCodec_WMV3_VAAPI: 00185 ret = CODEC_ID_WMV3; 00186 break; 00187 case kCodec_VP8_VAAPI: 00188 ret = CODEC_ID_VP8; 00189 break; 00190 00191 case kCodec_MPEG1_DXVA2: 00192 ret = CODEC_ID_MPEG1VIDEO; 00193 break; 00194 case kCodec_MPEG2_DXVA2: 00195 ret = CODEC_ID_MPEG2VIDEO; 00196 break; 00197 case kCodec_H263_DXVA2: 00198 ret = CODEC_ID_H263; 00199 break; 00200 case kCodec_MPEG4_DXVA2: 00201 ret = CODEC_ID_MPEG4; 00202 break; 00203 case kCodec_H264_DXVA2: 00204 ret = CODEC_ID_H264; 00205 break; 00206 case kCodec_VC1_DXVA2: 00207 ret = CODEC_ID_VC1; 00208 break; 00209 case kCodec_WMV3_DXVA2: 00210 ret = CODEC_ID_WMV3; 00211 break; 00212 case kCodec_VP8_DXVA2: 00213 ret = CODEC_ID_VP8; 00214 break; 00215 00216 default: 00217 LOG(VB_GENERAL, LOG_ERR, 00218 QString("Error: MythCodecID %1 has not been " 00219 "added to myth2av_codecid").arg(codec_id)); 00220 break; 00221 } // switch(codec_id) 00222 return ret; 00223 } 00224 00225 int mpeg_version(int codec_id) 00226 { 00227 switch (codec_id) 00228 { 00229 case CODEC_ID_MPEG1VIDEO: 00230 return 1; 00231 case CODEC_ID_MPEG2VIDEO: 00232 return 2; 00233 case CODEC_ID_H263: 00234 return 3; 00235 case CODEC_ID_MPEG4: 00236 return 4; 00237 case CODEC_ID_H264: 00238 return 5; 00239 case CODEC_ID_VC1: 00240 return 6; 00241 case CODEC_ID_WMV3: 00242 return 7; 00243 case CODEC_ID_VP8: 00244 return 8; 00245 default: 00246 break; 00247 } 00248 return 0; 00249 } 00250 00251 QString get_encoding_type(MythCodecID codecid) 00252 { 00253 switch (codecid) 00254 { 00255 case kCodec_NUV_RTjpeg: 00256 return "RTjpeg"; 00257 00258 case kCodec_MPEG1: 00259 case kCodec_MPEG1_VDPAU: 00260 case kCodec_MPEG1_VAAPI: 00261 case kCodec_MPEG1_DXVA2: 00262 case kCodec_MPEG2: 00263 case kCodec_MPEG2_VDPAU: 00264 case kCodec_MPEG2_VAAPI: 00265 case kCodec_MPEG2_DXVA2: 00266 return "MPEG-2"; 00267 00268 case kCodec_H263: 00269 case kCodec_H263_VDPAU: 00270 case kCodec_H263_VAAPI: 00271 case kCodec_H263_DXVA2: 00272 return "H.263"; 00273 00274 case kCodec_NUV_MPEG4: 00275 case kCodec_MPEG4: 00276 case kCodec_MPEG4_VDPAU: 00277 case kCodec_MPEG4_VAAPI: 00278 case kCodec_MPEG4_DXVA2: 00279 return "MPEG-4"; 00280 00281 case kCodec_H264: 00282 case kCodec_H264_VDPAU: 00283 case kCodec_H264_VAAPI: 00284 case kCodec_H264_DXVA2: 00285 return "H.264"; 00286 00287 case kCodec_VC1: 00288 case kCodec_VC1_VDPAU: 00289 case kCodec_VC1_VAAPI: 00290 case kCodec_VC1_DXVA2: 00291 return "VC-1"; 00292 00293 case kCodec_WMV3: 00294 case kCodec_WMV3_VDPAU: 00295 case kCodec_WMV3_VAAPI: 00296 case kCodec_WMV3_DXVA2: 00297 return "WMV3"; 00298 00299 case kCodec_VP8: 00300 case kCodec_VP8_VDPAU: 00301 case kCodec_VP8_VAAPI: 00302 case kCodec_VP8_DXVA2: 00303 return "VP8"; 00304 00305 case kCodec_NONE: 00306 case kCodec_NORMAL_END: 00307 case kCodec_VDPAU_END: 00308 case kCodec_VAAPI_END: 00309 case kCodec_DXVA2_END: 00310 return QString::null; 00311 } 00312 00313 return QString::null; 00314 } 00315 00316 QString get_decoder_name(MythCodecID codec_id) 00317 { 00318 if (codec_is_vdpau(codec_id)) 00319 return "vdpau"; 00320 00321 if (codec_is_vaapi(codec_id)) 00322 return "vaapi"; 00323 00324 if (codec_is_dxva2(codec_id)) 00325 return "dxva2"; 00326 00327 return "ffmpeg"; 00328 }
1.6.3