Module: Mesa Branch: main Commit: 65ab022499841d70b0b71419f02185f154e68c9e URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=65ab022499841d70b0b71419f02185f154e68c9e
Author: Sil Vilerino <[email protected]> Date: Thu Dec 7 09:28:20 2023 -0500 d3d12: Fix usage of H264/HEVC specific classes when VIDEO_CODEC_H26XENC not set Fixes: 8af080cec49 ("d3d12: Implement d3d12_video_encoder_get_encode_headers for out of band VPS, SPS, PPS") Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26566> --- src/gallium/drivers/d3d12/d3d12_video_enc.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/d3d12/d3d12_video_enc.cpp b/src/gallium/drivers/d3d12/d3d12_video_enc.cpp index 2ced65a2636..4b8dcb35c7b 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_enc.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_enc.cpp @@ -2655,11 +2655,12 @@ d3d12_video_encoder_get_feedback_fence(struct pipe_video_codec *codec, void *fee return (pipe_fence_handle*) feedback; } -int d3d12_video_encoder_get_encode_headers(struct pipe_video_codec *codec, - struct pipe_picture_desc *picture, - void* bitstream_buf, - unsigned *bitstream_buf_size) +int d3d12_video_encoder_get_encode_headers([[maybe_unused]] struct pipe_video_codec *codec, + [[maybe_unused]] struct pipe_picture_desc *picture, + [[maybe_unused]] void* bitstream_buf, + [[maybe_unused]] unsigned *bitstream_buf_size) { +#if (VIDEO_CODEC_H264ENC || VIDEO_CODEC_H265ENC) struct d3d12_video_encoder *pD3D12Enc = (struct d3d12_video_encoder *) codec; D3D12_VIDEO_SAMPLE srcTextureDesc = {}; srcTextureDesc.Width = pD3D12Enc->base.width; @@ -2669,10 +2670,14 @@ int d3d12_video_encoder_get_encode_headers(struct pipe_video_codec *codec, return EINVAL; if (!pD3D12Enc->m_upBitstreamBuilder) { +#if VIDEO_CODEC_H264ENC if (u_reduce_video_profile(pD3D12Enc->base.profile) == PIPE_VIDEO_FORMAT_MPEG4_AVC) pD3D12Enc->m_upBitstreamBuilder = std::make_unique<d3d12_video_bitstream_builder_h264>(); - else if (u_reduce_video_profile(pD3D12Enc->base.profile) == PIPE_VIDEO_FORMAT_HEVC) +#endif +#if VIDEO_CODEC_H265ENC + if (u_reduce_video_profile(pD3D12Enc->base.profile) == PIPE_VIDEO_FORMAT_HEVC) pD3D12Enc->m_upBitstreamBuilder = std::make_unique<d3d12_video_bitstream_builder_hevc>(); +#endif } bool postEncodeHeadersNeeded = false; uint64_t preEncodeGeneratedHeadersByteSize = 0; @@ -2690,4 +2695,7 @@ int d3d12_video_encoder_get_encode_headers(struct pipe_video_codec *codec, pD3D12Enc->m_BitstreamHeadersBuffer.data(), *bitstream_buf_size); return 0; +#else + return ENOTSUP; +#endif }
