MythTV  master
mythcodecid.h
Go to the documentation of this file.
1 #ifndef _MYTH_CODEC_ID_H_
2 #define _MYTH_CODEC_ID_H_
3 
4 #include <QString>
5 extern "C"
6 {
7 #include "libavcodec/avcodec.h"
8 }
9 
11 {
12 // if you add anything to this list please update
13 // myth2av_codecid and get_encoding_type
15 
17 
20 
32 
34 
36 
48 
50 
52 
64 
66 
68 
80 
82 
84 
96 
98 
100 
112 
114 
116 
128 
130 
132 
144 
146 
148 
160 
162 
164 
176 
178 
180 
192 
194 
196 
208 
210 
212 
224 
226 
228 
240 
242 
244 
256 
258 
260 
272 
274 
276 
288 
290 };
291 
292 // MythCodecID convenience functions
293 #define codec_is_std(id) ((id) < kCodec_NORMAL_END)
294 #define codec_is_std_mpeg(id) ((id) == kCodec_MPEG1 || (id) == kCodec_MPEG2)
295 
296 #define codec_is_drmprime(id) (((id) > kCodec_DRMPRIME_BEGIN) && \
297  ((id) < kCodec_DRMPRIME_END))
298 #define codec_is_vdpau(id) (((id) > kCodec_VDPAU_BEGIN) && \
299  ((id) < kCodec_VDPAU_END))
300 #define codec_is_vdpau_hw(id) ((codec_is_vdpau(id) && \
301  ((id) != kCodec_H263_VDPAU) && \
302  ((id) != kCodec_VP8_VDPAU) && \
303  ((id) != kCodec_VP9_VDPAU)))
304 #define codec_is_vdpau_dec(id)(((id) > kCodec_VDPAU_DEC_BEGIN) && \
305  ((id) < kCodec_VDPAU_DEC_END))
306 #define codec_is_vdpau_dechw(id) ((codec_is_vdpau_dec(id) && \
307  ((id) != kCodec_H263_VDPAU_DEC) && \
308  ((id) != kCodec_VP8_VDPAU_DEC) && \
309  ((id) != kCodec_VP9_VDPAU)))
310 
311 #define codec_is_vaapi(id) (((id) > kCodec_VAAPI_BEGIN) && \
312  ((id) < kCodec_VAAPI_END))
313 #define codec_is_vaapi_dec(id)(((id) > kCodec_VAAPI_DEC_BEGIN) && \
314  ((id) < kCodec_VAAPI_DEC_END))
315 
316 #define codec_is_dxva2(id) (((id) > kCodec_DXVA2_BEGIN) && \
317  ((id) < kCodec_DXVA2_END))
318 #define codec_is_dxva2_hw(id) (codec_is_dxva2(id) && \
319  (((id) == kCodec_H264_DXVA2) || \
320  ((id) == kCodec_MPEG2_DXVA2) || \
321  ((id) == kCodec_VC1_DXVA2)))
322 
323 #define codec_is_mediacodec(id)(((id) > kCodec_MEDIACODEC_BEGIN) && \
324  ((id) < kCodec_MEDIACODEC_END))
325 #define codec_is_mediacodec_dec(id) (((id) > kCodec_MEDIACODEC_DEC_BEGIN) && \
326  ((id) < kCodec_MEDIACODEC_DEC_END))
327 
328 #define codec_is_nvdec(id) (((id) > kCodec_NVDEC_BEGIN) && \
329  ((id) < kCodec_NVDEC_END))
330 #define codec_is_nvdec_dec(id)(((id) > kCodec_NVDEC_DEC_BEGIN) && \
331  ((id) < kCodec_NVDEC_DEC_END))
332 
333 #define codec_is_vtb(id) (((id) > kCodec_VTB_BEGIN) && \
334  ((id) < kCodec_VTB_END))
335 #define codec_is_vtb_dec(id) (((id) > kCodec_VTB_DEC_BEGIN) && \
336  ((id) < kCodec_VTB_DEC_END))
337 
338 #define codec_is_v4l2(id) (((id) > kCodec_V4L2_BEGIN) && ((id) < kCodec_V4L2_END))
339 #define codec_is_v4l2_dec(id) (((id) > kCodec_V4L2_DEC_BEGIN) && ((id) < kCodec_V4L2_DEC_END))
340 
341 #define codec_is_mmal(id) (((id) > kCodec_MMAL_BEGIN) && ((id) < kCodec_MMAL_END))
342 #define codec_is_mmal_dec(id) (((id) > kCodec_MMAL_DEC_BEGIN) && ((id) < kCodec_MMAL_DEC_END))
343 
344 #define codec_is_copyback(id) (codec_is_mediacodec_dec(id) || \
345  codec_is_vaapi_dec(id) || codec_is_nvdec_dec(id) || \
346  codec_is_vtb_dec(id) || codec_is_vdpau_dec(id) || \
347  codec_is_v4l2_dec(id) || codec_is_mmal_dec(id))
348 
349 #define codec_sw_copy(id) (codec_is_std(id) || codec_is_copyback(id))
350 
351 QString get_encoding_type(MythCodecID codecid);
352 QString get_decoder_name(MythCodecID codec_id);
353 QString toString(MythCodecID codecid);
354 AVCodecID myth2av_codecid(MythCodecID codec_id);
355 
356 // AV codec id convenience functions
357 uint mpeg_version(int codec_id);
358 #define CODEC_IS_H264(id) (mpeg_version(id) == 5)
359 #define CODEC_IS_MPEG(id) (mpeg_version(id) && mpeg_version(id) <= 2)
360 #define CODEC_IS_FFMPEG_MPEG(id) (CODEC_IS_MPEG(id))
361 #ifdef USING_VDPAU
362 #define CODEC_IS_VDPAU(codec, enc) ((codec) && ((enc)->pix_fmt == AV_PIX_FMT_VDPAU))
363 #else
364 #define CODEC_IS_VDPAU(codec) (0)
365 #endif
366 
367 #ifdef USING_VAAPI
368 #define CODEC_IS_VAAPI(codec, enc) ((codec) && ((enc)->pix_fmt == AV_PIX_FMT_VAAPI))
369 #else
370 #define CODEC_IS_VAAPI(codec, enc) (0)
371 #endif
372 
373 #ifdef USING_DXVA2
374 #define CODEC_IS_DXVA2(codec, enc) (codec && (enc->pix_fmt == AV_PIX_FMT_DXVA2_VLD))
375 #else
376 #define CODEC_IS_DXVA2(codec, enc) (0)
377 #endif
378 
379 #ifdef USING_MEDIACODEC
380 #define CODEC_IS_MEDIACODEC(codec) (codec && (QString("mediacodec") == codec->wrapper_name))
381 #else
382 #define CODEC_IS_MEDIACODEC(codec) (0)
383 #endif
384 
385 #endif // _MYTH_CODEC_ID_H_
QString get_decoder_name(MythCodecID codec_id)
QString get_encoding_type(MythCodecID codecid)
uint mpeg_version(int codec_id)
MythCodecID
Definition: mythcodecid.h:10
QString toString(MythCodecID codecid)
Definition: mythcodecid.cpp:9
AVCodecID myth2av_codecid(MythCodecID codec_id)
unsigned int uint
Definition: compat.h:140