Browse Source
Merge pull request #4874 from lioncash/nodiscard2
nvdec: Make use of [[nodiscard]] where applicable
pull/15/merge
bunnei
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with
16 additions and
16 deletions
-
src/video_core/command_classes/codecs/codec.h
-
src/video_core/command_classes/codecs/h264.cpp
-
src/video_core/command_classes/codecs/h264.h
-
src/video_core/command_classes/codecs/vp9.cpp
-
src/video_core/command_classes/codecs/vp9.h
-
src/video_core/command_classes/codecs/vp9_types.h
-
src/video_core/command_classes/nvdec.h
|
|
|
@ -42,11 +42,11 @@ public: |
|
|
|
void Decode(); |
|
|
|
|
|
|
|
/// Returns most recently decoded frame |
|
|
|
AVFrame* GetCurrentFrame(); |
|
|
|
const AVFrame* GetCurrentFrame() const; |
|
|
|
[[nodiscard]] AVFrame* GetCurrentFrame(); |
|
|
|
[[nodiscard]] const AVFrame* GetCurrentFrame() const; |
|
|
|
|
|
|
|
/// Returns the value of current_codec |
|
|
|
NvdecCommon::VideoCodec GetCurrentCodec() const; |
|
|
|
[[nodiscard]] NvdecCommon::VideoCodec GetCurrentCodec() const; |
|
|
|
|
|
|
|
private: |
|
|
|
bool initialized{}; |
|
|
|
|
|
|
|
@ -43,7 +43,8 @@ H264::H264(GPU& gpu_) : gpu(gpu_) {} |
|
|
|
|
|
|
|
H264::~H264() = default; |
|
|
|
|
|
|
|
std::vector<u8>& H264::ComposeFrameHeader(NvdecCommon::NvdecRegisters& state, bool is_first_frame) { |
|
|
|
const std::vector<u8>& H264::ComposeFrameHeader(NvdecCommon::NvdecRegisters& state, |
|
|
|
bool is_first_frame) { |
|
|
|
H264DecoderContext context{}; |
|
|
|
gpu.MemoryManager().ReadBlock(state.picture_info_offset, &context, sizeof(H264DecoderContext)); |
|
|
|
|
|
|
|
|
|
|
|
@ -51,14 +51,14 @@ public: |
|
|
|
void WriteScalingList(const std::vector<u8>& list, s32 start, s32 count); |
|
|
|
|
|
|
|
/// Return the bitstream as a vector. |
|
|
|
std::vector<u8>& GetByteArray(); |
|
|
|
const std::vector<u8>& GetByteArray() const; |
|
|
|
[[nodiscard]] std::vector<u8>& GetByteArray(); |
|
|
|
[[nodiscard]] const std::vector<u8>& GetByteArray() const; |
|
|
|
|
|
|
|
private: |
|
|
|
void WriteBits(s32 value, s32 bit_count); |
|
|
|
void WriteExpGolombCodedInt(s32 value); |
|
|
|
void WriteExpGolombCodedUInt(u32 value); |
|
|
|
s32 GetFreeBufferBits(); |
|
|
|
[[nodiscard]] s32 GetFreeBufferBits(); |
|
|
|
void Flush(); |
|
|
|
|
|
|
|
s32 buffer_size{8}; |
|
|
|
@ -74,8 +74,8 @@ public: |
|
|
|
~H264(); |
|
|
|
|
|
|
|
/// Compose the H264 header of the frame for FFmpeg decoding |
|
|
|
std::vector<u8>& ComposeFrameHeader(NvdecCommon::NvdecRegisters& state, |
|
|
|
bool is_first_frame = false); |
|
|
|
[[nodiscard]] const std::vector<u8>& ComposeFrameHeader(NvdecCommon::NvdecRegisters& state, |
|
|
|
bool is_first_frame = false); |
|
|
|
|
|
|
|
private: |
|
|
|
struct H264ParameterSet { |
|
|
|
|
|
|
|
@ -854,7 +854,7 @@ VpxBitStreamWriter VP9::ComposeUncompressedHeader() { |
|
|
|
return uncomp_writer; |
|
|
|
} |
|
|
|
|
|
|
|
std::vector<u8>& VP9::ComposeFrameHeader(NvdecCommon::NvdecRegisters& state) { |
|
|
|
const std::vector<u8>& VP9::ComposeFrameHeader(NvdecCommon::NvdecRegisters& state) { |
|
|
|
std::vector<u8> bitstream; |
|
|
|
{ |
|
|
|
Vp9FrameContainer curr_frame = GetCurrentFrame(state); |
|
|
|
|
|
|
|
@ -119,7 +119,7 @@ public: |
|
|
|
|
|
|
|
/// Composes the VP9 frame from the GPU state information. Based on the official VP9 spec |
|
|
|
/// documentation |
|
|
|
std::vector<u8>& ComposeFrameHeader(NvdecCommon::NvdecRegisters& state); |
|
|
|
[[nodiscard]] const std::vector<u8>& ComposeFrameHeader(NvdecCommon::NvdecRegisters& state); |
|
|
|
|
|
|
|
/// Returns true if the most recent frame was a hidden frame. |
|
|
|
[[nodiscard]] bool WasFrameHidden() const { |
|
|
|
|
|
|
|
@ -231,9 +231,8 @@ struct PictureInfo { |
|
|
|
u32 surface_params{}; |
|
|
|
INSERT_PADDING_WORDS(3); |
|
|
|
|
|
|
|
Vp9PictureInfo Convert() const { |
|
|
|
|
|
|
|
return Vp9PictureInfo{ |
|
|
|
[[nodiscard]] Vp9PictureInfo Convert() const { |
|
|
|
return { |
|
|
|
.is_key_frame = (vp9_flags & FrameFlags::IsKeyFrame) != 0, |
|
|
|
.intra_only = (vp9_flags & FrameFlags::IntraOnly) != 0, |
|
|
|
.last_frame_was_key = (vp9_flags & FrameFlags::LastFrameIsKeyFrame) != 0, |
|
|
|
|
|
|
|
@ -26,8 +26,8 @@ public: |
|
|
|
void ProcessMethod(Method method, const std::vector<u32>& arguments); |
|
|
|
|
|
|
|
/// Return most recently decoded frame |
|
|
|
AVFrame* GetFrame(); |
|
|
|
const AVFrame* GetFrame() const; |
|
|
|
[[nodiscard]] AVFrame* GetFrame(); |
|
|
|
[[nodiscard]] const AVFrame* GetFrame() const; |
|
|
|
|
|
|
|
private: |
|
|
|
/// Invoke codec to decode a frame |
|
|
|
|