00001 #ifndef _MYTH_CODEC_ID_H_
00002 #define _MYTH_CODEC_ID_H_
00003
00004 #include <QString>
00005 extern "C"
00006 {
00007 #include "libavcodec/avcodec.h"
00008 }
00009
00010 typedef enum
00011 {
00012
00013
00014 kCodec_NONE = 0,
00015
00016 kCodec_NORMAL_BEGIN = kCodec_NONE,
00017
00018 kCodec_NUV_RTjpeg,
00019 kCodec_NUV_MPEG4,
00020
00021 kCodec_MPEG1,
00022 kCodec_MPEG2,
00023 kCodec_H263,
00024 kCodec_MPEG4,
00025 kCodec_H264,
00026 kCodec_VC1,
00027 kCodec_WMV3,
00028 kCodec_VP8,
00029
00030 kCodec_NORMAL_END,
00031
00032 kCodec_VDPAU_BEGIN = kCodec_NORMAL_END,
00033
00034 kCodec_MPEG1_VDPAU,
00035 kCodec_MPEG2_VDPAU,
00036 kCodec_H263_VDPAU,
00037 kCodec_MPEG4_VDPAU,
00038 kCodec_H264_VDPAU,
00039 kCodec_VC1_VDPAU,
00040 kCodec_WMV3_VDPAU,
00041 kCodec_VP8_VDPAU,
00042
00043 kCodec_VDPAU_END,
00044
00045 kCodec_VAAPI_BEGIN = kCodec_VDPAU_END,
00046
00047 kCodec_MPEG1_VAAPI,
00048 kCodec_MPEG2_VAAPI,
00049 kCodec_H263_VAAPI,
00050 kCodec_MPEG4_VAAPI,
00051 kCodec_H264_VAAPI,
00052 kCodec_VC1_VAAPI,
00053 kCodec_WMV3_VAAPI,
00054 kCodec_VP8_VAAPI,
00055
00056 kCodec_VAAPI_END,
00057
00058 kCodec_DXVA2_BEGIN = kCodec_VAAPI_END,
00059
00060 kCodec_MPEG1_DXVA2,
00061 kCodec_MPEG2_DXVA2,
00062 kCodec_H263_DXVA2,
00063 kCodec_MPEG4_DXVA2,
00064 kCodec_H264_DXVA2,
00065 kCodec_VC1_DXVA2,
00066 kCodec_WMV3_DXVA2,
00067 kCodec_VP8_DXVA2,
00068
00069 kCodec_DXVA2_END,
00070 } MythCodecID;
00071
00072
00073 #define codec_is_std(id) (id < kCodec_NORMAL_END)
00074 #define codec_is_std_mpeg(id) (id == kCodec_MPEG1 || id == kCodec_MPEG2)
00075 #define codec_is_vdpau(id) (id > kCodec_VDPAU_BEGIN) &&\
00076 (id < kCodec_VDPAU_END)
00077 #define codec_is_vdpau_hw(id) (codec_is_vdpau(id) &&\
00078 (id != kCodec_H263_VDPAU) &&\
00079 (id != kCodec_VP8_VDPAU))
00080 #define codec_is_vaapi(id) (id > kCodec_VAAPI_BEGIN) &&\
00081 (id < kCodec_VAAPI_END)
00082 #define codec_is_vaapi_hw(id) (codec_is_vaapi(id) &&\
00083 (id != kCodec_VP8_VAAPI))
00084 #define codec_is_dxva2(id) (id > kCodec_DXVA2_BEGIN) &&\
00085 (id < kCodec_DXVA2_END)
00086 #define codec_is_dxva2_hw(id) (codec_is_dxva2(id) &&\
00087 ((id == kCodec_H264_DXVA2) ||\
00088 (id == kCodec_MPEG2_DXVA2) ||\
00089 (id == kCodec_VC1_DXVA2)))
00090
00091 QString get_encoding_type(MythCodecID codecid);
00092 QString get_decoder_name(MythCodecID codec_id);
00093 QString toString(MythCodecID codecid);
00094 int myth2av_codecid(MythCodecID codec_id, bool &vdpau);
00095 inline int myth2av_codecid(MythCodecID codec_id)
00096 {
00097 bool vdpau;
00098 return myth2av_codecid(codec_id, vdpau);
00099 }
00100
00101
00102 int mpeg_version(int codec_id);
00103 #define CODEC_IS_H264(id) (mpeg_version(id) == 5)
00104 #define CODEC_IS_MPEG(id) (mpeg_version(id) && mpeg_version(id) <= 2)
00105 #define CODEC_IS_FFMPEG_MPEG(id) (CODEC_IS_MPEG(id))
00106 #define CODEC_IS_VDPAU(codec) (codec &&\
00107 codec->capabilities & CODEC_CAP_HWACCEL_VDPAU)
00108 #define CODEC_IS_VAAPI(codec, enc) (codec && IS_VAAPI_PIX_FMT(enc->pix_fmt))
00109 #define CODEC_IS_DXVA2(codec, enc) (codec && (enc->pix_fmt == PIX_FMT_DXVA2_VLD))
00110 #define CODEC_IS_HWACCEL(codec, enc) (CODEC_IS_VDPAU(codec) ||\
00111 CODEC_IS_VAAPI(codec, enc) ||\
00112 CODEC_IS_DXVA2(codec, enc))
00113
00114 #endif // _MYTH_CODEC_ID_H_