From a71f79fb457b3b428f4d3ccf3dc4758bab6e2598 Mon Sep 17 00:00:00 2001 From: Sil Vilerino Date: Mon, 17 Apr 2023 13:17:32 -0400 Subject: [PATCH] d3d12: Clean unused code for parsing slices Reviewed-by: Giancarlo Devich Part-of: --- src/gallium/drivers/d3d12/d3d12_video_dec.cpp | 31 ----------- src/gallium/drivers/d3d12/d3d12_video_dec.h | 6 --- src/gallium/drivers/d3d12/d3d12_video_dec_h264.cpp | 62 ---------------------- src/gallium/drivers/d3d12/d3d12_video_dec_h264.h | 5 -- 4 files changed, 104 deletions(-) diff --git a/src/gallium/drivers/d3d12/d3d12_video_dec.cpp b/src/gallium/drivers/d3d12/d3d12_video_dec.cpp index 460c334..9918579 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_dec.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_dec.cpp @@ -39,7 +39,6 @@ #include "util/u_inlines.h" #include "util/u_memory.h" #include "util/u_video.h" -#include "util/vl_vlc.h" struct pipe_video_codec * d3d12_video_create_decoder(struct pipe_context *context, const struct pipe_video_codec *codec) @@ -1237,36 +1236,6 @@ d3d12_video_decoder_get_frame_info( } } -/// -/// Returns the number of bytes starting from [buf.data() + buffsetOffset] where the _targetCode_ is found -/// Returns -1 if start code not found -/// -int -d3d12_video_decoder_get_next_startcode_offset(std::vector &buf, - unsigned int bufferOffset, - unsigned int targetCode, - unsigned int targetCodeBitSize, - unsigned int numBitsToSearchIntoBuffer) -{ - struct vl_vlc vlc = { 0 }; - - // Shorten the buffer to be [buffetOffset, endOfBuf) - unsigned int bufSize = buf.size() - bufferOffset; - uint8_t *bufPtr = buf.data(); - bufPtr += bufferOffset; - - /* search the first numBitsToSearchIntoBuffer bytes for a startcode */ - vl_vlc_init(&vlc, 1, (const void *const *) &bufPtr, &bufSize); - for (uint i = 0; i < numBitsToSearchIntoBuffer && vl_vlc_bits_left(&vlc) >= targetCodeBitSize; ++i) { - if (vl_vlc_peekbits(&vlc, targetCodeBitSize) == targetCode) - return i; - vl_vlc_eatbits(&vlc, 8); // Stride is 8 bits = 1 byte - vl_vlc_fillbits(&vlc); - } - - return -1; -} - void d3d12_video_decoder_store_converted_dxva_picparams_from_pipe_input( struct d3d12_video_decoder *codec, // input argument, current decoder diff --git a/src/gallium/drivers/d3d12/d3d12_video_dec.h b/src/gallium/drivers/d3d12/d3d12_video_dec.h index 3197cc7..f80c0ed 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_dec.h +++ b/src/gallium/drivers/d3d12/d3d12_video_dec.h @@ -243,12 +243,6 @@ d3d12_video_decoder_store_dxva_qmatrix_in_qmatrix_buffer(struct d3d12_video_deco uint64_t DXVAStructSize); void d3d12_video_decoder_prepare_dxva_slices_control(struct d3d12_video_decoder *pD3D12Dec, struct pipe_picture_desc *picture); -int -d3d12_video_decoder_get_next_startcode_offset(std::vector &buf, - unsigned int bufferOffset, - unsigned int targetCode, - unsigned int targetCodeBitSize, - unsigned int numBitsToSearchIntoBuffer); /// /// d3d12_video_decoder functions ends diff --git a/src/gallium/drivers/d3d12/d3d12_video_dec_h264.cpp b/src/gallium/drivers/d3d12/d3d12_video_dec_h264.cpp index 63adb50..b2ba785 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_dec_h264.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_dec_h264.cpp @@ -200,68 +200,6 @@ d3d12_video_decoder_prepare_dxva_slices_control_h264(struct d3d12_video_decoder assert(vecOutSliceControlBuffers.size() == TotalSlicesDXVAArrayByteSize); } -bool -d3d12_video_decoder_get_next_slice_size_and_offset_h264(std::vector &buf, - unsigned int bufferOffset, - uint32_t &outSliceSize, - uint32_t &outSliceOffset) -{ - // Search the rest of the full frame buffer after the offset - uint numBitsToSearchIntoBuffer = buf.size() - bufferOffset; - int currentSlicePosition = d3d12_video_decoder_get_next_startcode_offset(buf, - bufferOffset, - DXVA_H264_START_CODE, - DXVA_H264_START_CODE_LEN_BITS, - numBitsToSearchIntoBuffer); - - // Return false now if we didn't find a next slice based on the bufferOffset parameter - if (currentSlicePosition < 0) { - return false; - } else { - // Save the absolute buffer offset until the next slice in the output param - outSliceOffset = currentSlicePosition + bufferOffset; - - // Found a next NALU, make sure it's a slice: - d3d12_video_decoder_nal_unit_type_h264 naluType = - (d3d12_video_decoder_nal_unit_type_h264)(buf[outSliceOffset + (DXVA_H264_START_CODE_LEN_BITS / 8)] & 0x1F); - - bool isNaluSliceType = (naluType == type_slice) || (naluType == type_slice_part_A) || - (naluType == type_slice_part_B) || (naluType == type_slice_part_C) || - (naluType == type_slice_IDR) || (naluType == type_slice_aux) || - (naluType == type_slice_layer_ext); - - if (!isNaluSliceType) { - // We found a NALU, but it's not a slice - return false; - } else { - // We did find a next slice based on the bufferOffset parameter - - // Skip current start code, to get the slice after this, to calculate its size - bufferOffset += (DXVA_H264_START_CODE_LEN_BITS / 8 /*convert bits to bytes*/); - numBitsToSearchIntoBuffer = buf.size() - bufferOffset; - - int c_signedStartCodeLen = (DXVA_H264_START_CODE_LEN_BITS / 8 /*convert bits to bytes*/); - int nextSlicePosition = c_signedStartCodeLen // Takes into account the skipped start code - + d3d12_video_decoder_get_next_startcode_offset(buf, - bufferOffset, - DXVA_H264_START_CODE, - DXVA_H264_START_CODE_LEN_BITS, - numBitsToSearchIntoBuffer); - - if (nextSlicePosition < - c_signedStartCodeLen) // if no slice found, d3d12_video_decoder_get_next_startcode_offset returns - 1 - { - // This means currentSlicePosition points to the last slice in the buffer - outSliceSize = buf.size() - outSliceOffset; - } else { - // This means there are more slices after the one pointed by currentSlicePosition - outSliceSize = nextSlicePosition - currentSlicePosition; - } - return true; - } - } -} - static void d3d12_video_decoder_log_pic_entry_h264(DXVA_PicEntry_H264 &picEntry) { diff --git a/src/gallium/drivers/d3d12/d3d12_video_dec_h264.h b/src/gallium/drivers/d3d12/d3d12_video_dec_h264.h index d91d23b..3b39b99 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_dec_h264.h +++ b/src/gallium/drivers/d3d12/d3d12_video_dec_h264.h @@ -213,11 +213,6 @@ d3d12_video_decoder_dxva_qmatrix_from_pipe_picparams_h264(pipe_h264_picture_desc DXVA_Qmatrix_H264 & outMatrixBuffer); void d3d12_video_decoder_refresh_dpb_active_references_h264(struct d3d12_video_decoder *pD3D12Dec); -bool -d3d12_video_decoder_get_next_slice_size_and_offset_h264(std::vector &buf, - unsigned int bufferOffset, - uint32_t & outSliceSize, - uint32_t & outSliceOffset); uint d3d12_video_decoder_get_slice_count_h264(std::vector &buf); -- 2.7.4