aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/host1x/codecs/h264.cpp
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2023-11-15 13:45:07 -0500
committerLiam <byteslice@airmail.cc>2023-11-16 17:01:38 -0500
commit4055a476aafb7b915c649363ccde7ba9b8d864d3 (patch)
tree7b0d6d2ebcf4a81ba3eab1829130e529e666c243 /src/video_core/host1x/codecs/h264.cpp
parent4c5e3d5f7a5a706007408dcae75e52fef204b293 (diff)
video_core: refactor video frame and packet parsing
Diffstat (limited to 'src/video_core/host1x/codecs/h264.cpp')
-rw-r--r--src/video_core/host1x/codecs/h264.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/video_core/host1x/codecs/h264.cpp b/src/video_core/host1x/codecs/h264.cpp
index ece79b1e2..309a7f1d5 100644
--- a/src/video_core/host1x/codecs/h264.cpp
+++ b/src/video_core/host1x/codecs/h264.cpp
@@ -30,7 +30,7 @@ H264::H264(Host1x::Host1x& host1x_) : host1x{host1x_} {}
H264::~H264() = default;
std::span<const u8> H264::ComposeFrame(const Host1x::NvdecCommon::NvdecRegisters& state,
- bool is_first_frame) {
+ size_t* out_configuration_size, bool is_first_frame) {
H264DecoderContext context;
host1x.MemoryManager().ReadBlock(state.picture_info_offset, &context,
sizeof(H264DecoderContext));
@@ -39,6 +39,7 @@ std::span<const u8> H264::ComposeFrame(const Host1x::NvdecCommon::NvdecRegisters
if (!is_first_frame && frame_number != 0) {
frame.resize_destructive(context.stream_len);
host1x.MemoryManager().ReadBlock(state.frame_bitstream_offset, frame.data(), frame.size());
+ *out_configuration_size = 0;
return frame;
}
@@ -157,6 +158,7 @@ std::span<const u8> H264::ComposeFrame(const Host1x::NvdecCommon::NvdecRegisters
frame.resize(encoded_header.size() + context.stream_len);
std::memcpy(frame.data(), encoded_header.data(), encoded_header.size());
+ *out_configuration_size = encoded_header.size();
host1x.MemoryManager().ReadBlock(state.frame_bitstream_offset,
frame.data() + encoded_header.size(), context.stream_len);