@ -42,13 +42,14 @@ typedef struct AVCodecHWConfigInternal {
// These macros are used to simplify AVCodecHWConfigInternal definitions.
# define HW_CONFIG_HWACCEL(format, device, name) \
# define HW_CONFIG_HWACCEL(device, frames, ad_hoc, format, device_type_ , name) \
& ( const AVCodecHWConfigInternal ) { \
. public = { \
. pix_fmt = AV_PIX_FMT_ # # format , \
. methods = AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX | \
AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX , \
. device_type = AV_HWDEVICE_TYPE_ # # device , \
. methods = ( device ? AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX : 0 ) | \
( frames ? AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX : 0 ) | \
( ad_hoc ? AV_CODEC_HW_CONFIG_METHOD_AD_HOC : 0 ) , \
. device_type = AV_HWDEVICE_TYPE_ # # device_type_ , \
} , \
. hwaccel = & name , \
}
@ -63,32 +64,21 @@ typedef struct AVCodecHWConfigInternal {
. hwaccel = NULL , \
}
# define HW_CONFIG_AD_HOC_HWACCEL(format, name) \
& ( const AVCodecHWConfigInternal ) { \
. public = { \
. pix_fmt = AV_PIX_FMT_ # # format , \
. methods = AV_CODEC_HW_CONFIG_METHOD_AD_HOC , \
. device_type = AV_HWDEVICE_TYPE_NONE , \
} , \
. hwaccel = & name , \
}
# define HWACCEL_DXVA2(codec) \
HW_CONFIG_HWACCEL ( DXVA2_VLD , DXVA2 , ff_ # # codec # # _dxva2_hwaccel )
HW_CONFIG_HWACCEL ( 1 , 1 , 1 , DXVA2_VLD , DXVA2 , ff_ # # codec # # _dxva2_hwaccel )
# define HWACCEL_D3D11VA2(codec) \
HW_CONFIG_HWACCEL ( D3D11 , D3D11VA , ff_ # # codec # # _d3d11va2_hwaccel )
HW_CONFIG_HWACCEL ( 1 , 1 , 0 , D3D11 , D3D11VA , ff_ # # codec # # _d3d11va2_hwaccel )
# define HWACCEL_NVDEC(codec) \
HW_CONFIG_HWACCEL ( CUDA , CUDA , ff_ # # codec # # _nvdec_hwaccel )
HW_CONFIG_HWACCEL ( 1 , 1 , 0 , CUDA , CUDA , ff_ # # codec # # _nvdec_hwaccel )
# define HWACCEL_VAAPI(codec) \
HW_CONFIG_HWACCEL ( VAAPI , VAAPI , ff_ # # codec # # _vaapi_hwaccel )
HW_CONFIG_HWACCEL ( 1 , 1 , 1 , VAAPI , VAAPI , ff_ # # codec # # _vaapi_hwaccel )
# define HWACCEL_VDPAU(codec) \
HW_CONFIG_HWACCEL ( VDPAU , VDPAU , ff_ # # codec # # _vdpau_hwaccel )
HW_CONFIG_HWACCEL ( 1 , 1 , 1 , VDPAU , VDPAU , ff_ # # codec # # _vdpau_hwaccel )
# define HWACCEL_VIDEOTOOLBOX(codec) \
HW_CONFIG_HWACCEL ( VIDEOTOOLBOX , VIDEOTOOLBOX , ff_ # # codec # # _videotoolbox_hwaccel )
HW_CONFIG_HWACCEL ( 1 , 1 , 1 , VIDEOTOOLBOX , VIDEOTOOLBOX , ff_ # # codec # # _videotoolbox_hwaccel )
# define HWACCEL_D3D11VA(codec) \
HW_CONFIG_AD_HOC_ HWACCEL ( D3D11VA_VLD , ff_ # # codec # # _d3d11va_hwaccel )
HW_CONFIG_HWACCEL ( 0 , 0 , 1 , D3D11VA_VLD , NONE , ff_ # # codec # # _d3d11va_hwaccel )
# define HWACCEL_XVMC(codec) \
HW_CONFIG_AD_HOC_ HWACCEL ( XVMC , ff_ # # codec # # _xvmc_hwaccel )
HW_CONFIG_HWACCEL ( 0 , 0 , 1 , XVMC , NONE , ff_ # # codec # # _xvmc_hwaccel )
# endif /* AVCODEC_HWACCEL_H */