mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-07 05:50:29 +01:00
frontends/va: include picture_*.c based on selected codec
Only add the appropriate picture_{h264,h264_enc,vc1,...}.c file when the
corresponding codec is enabled via the -Dvideo-codecs flag.
Add stub functions to va_private.h, so that the code in decode.c and
encode.c remains untouched.
Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: David Rosca <david.rosca@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39354>
This commit is contained in:
parent
f4959c16c8
commit
c4f05bdf60
2 changed files with 203 additions and 58 deletions
|
|
@ -1,15 +1,57 @@
|
|||
# Copyright © 2017-2019 Intel Corporation
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
libva_files = files(
|
||||
'buffer.c', 'config.c', 'context.c', 'display.c',
|
||||
'picture.c', 'surface.c', 'decode.c',
|
||||
'image.c', 'postproc.c', 'subpicture.c'
|
||||
)
|
||||
|
||||
if _codecs.contains('jpegdec')
|
||||
libva_files += files('picture_mjpeg.c')
|
||||
endif
|
||||
if _codecs.contains('mpeg12dec')
|
||||
libva_files += files('picture_mpeg12.c')
|
||||
endif
|
||||
if _codecs.contains('mpeg4dec')
|
||||
libva_files += files('picture_mpeg4.c')
|
||||
endif
|
||||
if _codecs.contains('vc1dec')
|
||||
libva_files += files('picture_vc1.c')
|
||||
endif
|
||||
if _codecs.contains('vp9dec')
|
||||
libva_files += files('picture_vp9.c')
|
||||
endif
|
||||
if _codecs.contains('h264dec')
|
||||
libva_files += files('picture_h264.c')
|
||||
endif
|
||||
if _codecs.contains('h265dec')
|
||||
libva_files += files('picture_hevc.c')
|
||||
endif
|
||||
if _codecs.contains('av1dec')
|
||||
libva_files += files('picture_av1.c')
|
||||
endif
|
||||
|
||||
has_encode = false
|
||||
if _codecs.contains('h264enc')
|
||||
libva_files += files('picture_h264_enc.c')
|
||||
has_encode = true
|
||||
endif
|
||||
if _codecs.contains('h265enc')
|
||||
libva_files += files('picture_hevc_enc.c')
|
||||
has_encode = true
|
||||
endif
|
||||
if _codecs.contains('av1enc')
|
||||
libva_files += files('picture_av1_enc.c')
|
||||
has_encode = true
|
||||
endif
|
||||
if has_encode
|
||||
libva_files += files('encode.c')
|
||||
endif
|
||||
|
||||
libva_st = static_library(
|
||||
'va_st',
|
||||
files(
|
||||
'buffer.c', 'config.c', 'context.c', 'display.c', 'image.c', 'picture.c',
|
||||
'picture_mpeg12.c', 'picture_h264.c', 'picture_hevc.c',
|
||||
'picture_vc1.c', 'picture_mjpeg.c', 'picture_vp9.c','picture_av1.c','postproc.c',
|
||||
'subpicture.c', 'surface.c', 'picture_h264_enc.c', 'picture_hevc_enc.c',
|
||||
'picture_av1_enc.c', 'encode.c', 'decode.c',
|
||||
),
|
||||
libva_files,
|
||||
c_args : [
|
||||
'-DVA_DRIVER_INIT_FUNC=__vaDriverInit_@0@_@1@'.format(
|
||||
libva_version[0], libva_version[1]
|
||||
|
|
|
|||
|
|
@ -568,60 +568,163 @@ VAStatus vlVaPostProcCompositor(vlVaDriver *drv, struct pipe_video_buffer *src,
|
|||
enum vl_compositor_deinterlace deinterlace, struct pipe_vpp_desc *param);
|
||||
void vlVaGetReferenceFrame(vlVaDriver *drv, VASurfaceID surface_id, struct pipe_video_buffer **ref_frame);
|
||||
VAStatus vlVaHandleDecBufferType(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandlePictureParameterBufferMPEG12(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleIQMatrixBufferMPEG12(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleSliceParameterBufferMPEG12(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandlePictureParameterBufferH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleIQMatrixBufferH264(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleSliceParameterBufferH264(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandlePictureParameterBufferVC1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleSliceParameterBufferVC1(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaGetJpegSliceHeader(vlVaContext *context);
|
||||
void vlVaHandlePictureParameterBufferHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleIQMatrixBufferHEVC(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleSliceParameterBufferHEVC(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandlePictureParameterBufferMJPEG(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleIQMatrixBufferMJPEG(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleHuffmanTableBufferType(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleSliceParameterBufferMJPEG(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandlePictureParameterBufferVP9(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleSliceParameterBufferVP9(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaDecoderVP9BitstreamHeader(vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaDecoderHEVCBitstreamHeader(vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandlePictureParameterBufferAV1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleSliceParameterBufferAV1(vlVaContext *context, vlVaBuffer *buf);
|
||||
|
||||
#if VIDEO_CODEC_MPEG12DEC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {}
|
||||
#endif
|
||||
PROC void vlVaHandlePictureParameterBufferMPEG12(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleIQMatrixBufferMPEG12(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleSliceParameterBufferMPEG12(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
|
||||
#if VIDEO_CODEC_JPEGDEC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {}
|
||||
#endif
|
||||
PROC void vlVaHandlePictureParameterBufferMJPEG(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleIQMatrixBufferMJPEG(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleHuffmanTableBufferType(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleSliceParameterBufferMJPEG(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaGetJpegSliceHeader(vlVaContext *context) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
|
||||
#if VIDEO_CODEC_VC1DEC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {}
|
||||
#endif
|
||||
PROC void vlVaHandlePictureParameterBufferVC1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleSliceParameterBufferVC1(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
|
||||
#if VIDEO_CODEC_VP9DEC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {}
|
||||
#endif
|
||||
PROC void vlVaHandlePictureParameterBufferVP9(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleSliceParameterBufferVP9(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaDecoderVP9BitstreamHeader(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
|
||||
#if VIDEO_CODEC_H264DEC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {}
|
||||
#endif
|
||||
PROC void vlVaHandlePictureParameterBufferH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleIQMatrixBufferH264(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleSliceParameterBufferH264(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
|
||||
#if VIDEO_CODEC_H265DEC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {}
|
||||
#endif
|
||||
PROC void vlVaHandlePictureParameterBufferHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleIQMatrixBufferHEVC(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaHandleSliceParameterBufferHEVC(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC void vlVaDecoderHEVCBitstreamHeader(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
|
||||
#if VIDEO_CODEC_AV1DEC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#define TAIL_S
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {}
|
||||
#define TAIL_S {return VA_STATUS_ERROR_UNIMPLEMENTED;}
|
||||
#endif
|
||||
PROC VAStatus vlVaHandlePictureParameterBufferAV1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL_S;
|
||||
PROC void vlVaHandleSliceParameterBufferAV1(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
#undef TAIL_S
|
||||
|
||||
VAStatus vlVaHandleEncBufferType(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
void vlVaHandleVAEncMiscParameterTypeQualityLevel(struct pipe_enc_quality_modes *p, vlVaQualityBits *in);
|
||||
VAStatus vlVaHandleVAEncPictureParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncSliceParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncSequenceParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeRateControlH264(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeFrameRateH264(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncPackedHeaderDataBufferTypeH264(vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeTemporalLayerH264(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeQualityLevelH264(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeMaxFrameSizeH264(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeHRDH264(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncPictureParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncSliceParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncSequenceParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeRateControlHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeFrameRateHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncPackedHeaderDataBufferTypeHEVC(vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeQualityLevelHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeMaxFrameSizeHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeHRDHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeTemporalLayerHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
|
||||
#if VIDEO_CODEC_H264ENC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {return VA_STATUS_ERROR_UNIMPLEMENTED;}
|
||||
#endif
|
||||
PROC VAStatus vlVaHandleVAEncPictureParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncSliceParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncSequenceParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeRateControlH264(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeFrameRateH264(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncPackedHeaderDataBufferTypeH264(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeTemporalLayerH264(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeQualityLevelH264(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeMaxFrameSizeH264(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeHRDH264(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
|
||||
#if VIDEO_CODEC_H265ENC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {return VA_STATUS_ERROR_UNIMPLEMENTED;}
|
||||
#endif
|
||||
PROC VAStatus vlVaHandleVAEncPictureParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncSliceParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncSequenceParameterBufferTypeHEVC(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeRateControlHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeFrameRateHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncPackedHeaderDataBufferTypeHEVC(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeQualityLevelHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeMaxFrameSizeHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeHRDHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeTemporalLayerHEVC(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
|
||||
#if VA_CHECK_VERSION(1, 16, 0)
|
||||
VAStatus vlVaHandleVAEncSequenceParameterBufferTypeAV1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncPictureParameterBufferTypeAV1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeRateControlAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncPackedHeaderDataBufferTypeAV1(vlVaContext *context, vlVaBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeFrameRateAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeQualityLevelAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeMaxFrameSizeAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncMiscParameterTypeHRDAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf);
|
||||
VAStatus vlVaHandleVAEncSliceParameterBufferTypeAV1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf);
|
||||
#if VIDEO_CODEC_AV1ENC
|
||||
#define PROC
|
||||
#define TAIL
|
||||
#else
|
||||
#define PROC static inline
|
||||
#define TAIL {return VA_STATUS_ERROR_UNIMPLEMENTED;}
|
||||
#endif
|
||||
PROC VAStatus vlVaHandleVAEncSequenceParameterBufferTypeAV1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncPictureParameterBufferTypeAV1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeRateControlAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncPackedHeaderDataBufferTypeAV1(vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeFrameRateAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeQualityLevelAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeMaxFrameSizeAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncMiscParameterTypeHRDAV1(vlVaContext *context, VAEncMiscParameterBuffer *buf) TAIL;
|
||||
PROC VAStatus vlVaHandleVAEncSliceParameterBufferTypeAV1(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) TAIL;
|
||||
#undef PROC
|
||||
#undef TAIL
|
||||
#endif
|
||||
#endif //VA_PRIVATE_H
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue