diff options
| author | 2021-08-08 13:49:00 -0400 | |
|---|---|---|
| committer | 2021-08-08 13:49:00 -0400 | |
| commit | fa226957050816280bfd7aad3458fe8408118ece (patch) | |
| tree | 41c91efafdfc273ecb7c25802d57d549ed3695ba /src | |
| parent | Merge pull request #6827 from Morph1984/uuid-hash (diff) | |
| download | yuzu-fa226957050816280bfd7aad3458fe8408118ece.tar.gz yuzu-fa226957050816280bfd7aad3458fe8408118ece.tar.xz yuzu-fa226957050816280bfd7aad3458fe8408118ece.zip | |
vp9: Ensure the first frame is complete
Silences a runtime error due to the first frame missing the frame data, and being set to hidden despite being a key-frame.
Diffstat (limited to '')
| -rw-r--r-- | src/video_core/command_classes/codecs/vp9.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/command_classes/codecs/vp9_types.h | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/video_core/command_classes/codecs/vp9.cpp b/src/video_core/command_classes/codecs/vp9.cpp index 7eecb3991..70030066a 100644 --- a/src/video_core/command_classes/codecs/vp9.cpp +++ b/src/video_core/command_classes/codecs/vp9.cpp | |||
| @@ -397,14 +397,14 @@ Vp9FrameContainer VP9::GetCurrentFrame(const NvdecCommon::NvdecRegisters& state) | |||
| 397 | next_frame = std::move(temp); | 397 | next_frame = std::move(temp); |
| 398 | } else { | 398 | } else { |
| 399 | next_frame.info = current_frame.info; | 399 | next_frame.info = current_frame.info; |
| 400 | next_frame.bit_stream = std::move(current_frame.bit_stream); | 400 | next_frame.bit_stream = current_frame.bit_stream; |
| 401 | } | 401 | } |
| 402 | return current_frame; | 402 | return current_frame; |
| 403 | } | 403 | } |
| 404 | 404 | ||
| 405 | std::vector<u8> VP9::ComposeCompressedHeader() { | 405 | std::vector<u8> VP9::ComposeCompressedHeader() { |
| 406 | VpxRangeEncoder writer{}; | 406 | VpxRangeEncoder writer{}; |
| 407 | const bool update_probs = current_frame_info.show_frame && !current_frame_info.is_key_frame; | 407 | const bool update_probs = !current_frame_info.is_key_frame && current_frame_info.show_frame; |
| 408 | if (!current_frame_info.lossless) { | 408 | if (!current_frame_info.lossless) { |
| 409 | if (static_cast<u32>(current_frame_info.transform_mode) >= 3) { | 409 | if (static_cast<u32>(current_frame_info.transform_mode) >= 3) { |
| 410 | writer.Write(3, 2); | 410 | writer.Write(3, 2); |
diff --git a/src/video_core/command_classes/codecs/vp9_types.h b/src/video_core/command_classes/codecs/vp9_types.h index 6820afa26..87eafdb03 100644 --- a/src/video_core/command_classes/codecs/vp9_types.h +++ b/src/video_core/command_classes/codecs/vp9_types.h | |||
| @@ -176,7 +176,7 @@ struct PictureInfo { | |||
| 176 | .frame_size_changed = (vp9_flags & FrameFlags::FrameSizeChanged) != 0, | 176 | .frame_size_changed = (vp9_flags & FrameFlags::FrameSizeChanged) != 0, |
| 177 | .error_resilient_mode = (vp9_flags & FrameFlags::ErrorResilientMode) != 0, | 177 | .error_resilient_mode = (vp9_flags & FrameFlags::ErrorResilientMode) != 0, |
| 178 | .last_frame_shown = (vp9_flags & FrameFlags::LastShowFrame) != 0, | 178 | .last_frame_shown = (vp9_flags & FrameFlags::LastShowFrame) != 0, |
| 179 | .show_frame = false, | 179 | .show_frame = true, |
| 180 | .ref_frame_sign_bias = ref_frame_sign_bias, | 180 | .ref_frame_sign_bias = ref_frame_sign_bias, |
| 181 | .base_q_index = base_q_index, | 181 | .base_q_index = base_q_index, |
| 182 | .y_dc_delta_q = y_dc_delta_q, | 182 | .y_dc_delta_q = y_dc_delta_q, |