00001 #include "mythcodecid.h"
00002 #include "mythcontext.h"
00003
00004 extern "C"
00005 {
00006 #include "libs/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
00032 case kCodec_MPEG1_XVMC:
00033 return "MPEG1 XvMC";
00034 case kCodec_MPEG2_XVMC:
00035 return "MPEG2 XvMC";
00036 case kCodec_H263_XVMC:
00037 return "H.263 XvMC";
00038 case kCodec_MPEG4_XVMC:
00039 return "MPEG4 XvMC";
00040 case kCodec_H264_XVMC:
00041 return "H.264 XvMC";
00042
00043 case kCodec_MPEG1_IDCT:
00044 return "MPEG1 IDCT";
00045 case kCodec_MPEG2_IDCT:
00046 return "MPEG2 IDCT";
00047 case kCodec_H263_IDCT:
00048 return "H.263 IDCT";
00049 case kCodec_MPEG4_IDCT:
00050 return "MPEG4 IDCT";
00051 case kCodec_H264_IDCT:
00052 return "H.264 IDCT";
00053
00054 case kCodec_MPEG1_VLD:
00055 return "MPEG1 VLD";
00056 case kCodec_MPEG2_VLD:
00057 return "MPEG2 VLD";
00058 case kCodec_H263_VLD:
00059 return "H.263 VLD";
00060 case kCodec_MPEG4_VLD:
00061 return "MPEG4 VLD";
00062 case kCodec_H264_VLD:
00063 return "H.264 VLD";
00064
00065 case kCodec_MPEG1_DVDV:
00066 return "MPEG1 DVDV";
00067 case kCodec_MPEG2_DVDV:
00068 return "MPEG2 DVDV";
00069 case kCodec_H263_DVDV:
00070 return "H.263 DVDV";
00071 case kCodec_MPEG4_DVDV:
00072 return "MPEG4 DVDV";
00073 case kCodec_H264_DVDV:
00074 return "H.264 DVDV";
00075
00076 default:
00077 break;
00078 }
00079
00080 return QString("Unknown(%1)").arg(codecid);
00081 }
00082
00083 int myth2av_codecid(MythCodecID codec_id,
00084 bool &vld, bool &idct, bool &mc)
00085 {
00086 vld = idct = mc = false;
00087 CodecID ret = CODEC_ID_NONE;
00088 switch (codec_id)
00089 {
00090 case kCodec_NONE:
00091 case kCodec_NUV_MPEG4:
00092 case kCodec_NUV_RTjpeg:
00093 ret = CODEC_ID_NONE;
00094 break;
00095
00096 case kCodec_MPEG1:
00097 ret = CODEC_ID_MPEG1VIDEO;
00098 break;
00099 case kCodec_MPEG2:
00100 ret = CODEC_ID_MPEG2VIDEO;
00101 break;
00102 case kCodec_H263:
00103 ret = CODEC_ID_H263;
00104 break;
00105 case kCodec_MPEG4:
00106 ret = CODEC_ID_MPEG4;
00107 break;
00108 case kCodec_H264:
00109 ret = CODEC_ID_H264;
00110 break;
00111
00112 case kCodec_MPEG1_XVMC:
00113 case kCodec_MPEG2_XVMC:
00114 mc = true;
00115 ret = CODEC_ID_MPEG2VIDEO_XVMC;
00116 break;
00117 case kCodec_H263_XVMC:
00118 VERBOSE(VB_IMPORTANT, "Error: XvMC H.263 not supported by ffmpeg");
00119 break;
00120 case kCodec_MPEG4_XVMC:
00121 VERBOSE(VB_IMPORTANT, "Error: XvMC MPEG4 not supported by ffmpeg");
00122 break;
00123 case kCodec_H264_XVMC:
00124 VERBOSE(VB_IMPORTANT, "Error: XvMC H.264 not supported by ffmpeg");
00125 break;
00126
00127 case kCodec_MPEG1_IDCT:
00128 case kCodec_MPEG2_IDCT:
00129 idct = mc = true;
00130 ret = CODEC_ID_MPEG2VIDEO_XVMC;
00131 break;
00132 case kCodec_H263_IDCT:
00133 VERBOSE(VB_IMPORTANT,
00134 "Error: XvMC-IDCT H.263 not supported by ffmpeg");
00135 break;
00136 case kCodec_MPEG4_IDCT:
00137 VERBOSE(VB_IMPORTANT,
00138 "Error: XvMC-IDCT MPEG4 not supported by ffmpeg");
00139 break;
00140 case kCodec_H264_IDCT:
00141 VERBOSE(VB_IMPORTANT,
00142 "Error: XvMC-IDCT H.264 not supported by ffmpeg");
00143 break;
00144
00145 case kCodec_MPEG1_VLD:
00146 case kCodec_MPEG2_VLD:
00147 vld = true;
00148 ret = CODEC_ID_MPEG2VIDEO_XVMC_VLD;
00149 break;
00150 case kCodec_H263_VLD:
00151 VERBOSE(VB_IMPORTANT,
00152 "Error: XvMC-VLD H.263 not supported by ffmpeg");
00153 break;
00154 case kCodec_MPEG4_VLD:
00155 VERBOSE(VB_IMPORTANT,
00156 "Error: XvMC-VLD MPEG4 not supported by ffmpeg");
00157 break;
00158 case kCodec_H264_VLD:
00159 VERBOSE(VB_IMPORTANT,
00160 "Error: XvMC-VLD H.264 not supported by ffmpeg");
00161 break;
00162
00163 case kCodec_MPEG1_DVDV:
00164 case kCodec_MPEG2_DVDV:
00165 ret = CODEC_ID_MPEG2VIDEO_DVDV;
00166 break;
00167 case kCodec_H263_DVDV:
00168 VERBOSE(VB_IMPORTANT, "Error: DVDV H.263 not supported by ffmpeg");
00169 break;
00170 case kCodec_MPEG4_DVDV:
00171 VERBOSE(VB_IMPORTANT, "Error: DVDV MPEG not supported by ffmpeg");
00172 break;
00173 case kCodec_H264_DVDV:
00174 VERBOSE(VB_IMPORTANT, "Error: DVDV H.265 not supported by ffmpeg");
00175 break;
00176
00177 default:
00178 VERBOSE(VB_IMPORTANT,
00179 QString("Error: MythCodecID %1 has not been "
00180 "added to myth2av_codecid").arg(codec_id));
00181 break;
00182 }
00183 return ret;
00184 }