1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 18:07:35 +00:00

LibVideo/VP9: Implement intra_frame_mode_info procedure (6.4.6)

This commit is contained in:
FalseHonesty 2021-05-05 22:30:32 -04:00 committed by Andreas Kling
parent cc1a9e3d1c
commit e687f05b42
4 changed files with 61 additions and 3 deletions

View file

@ -824,7 +824,33 @@ bool Decoder::intra_frame_mode_info()
SAFE_CALL(intra_segment_id());
SAFE_CALL(read_skip());
SAFE_CALL(read_tx_size(true));
// FIXME: Finish implementing
m_ref_frame[0] = IntraFrame;
m_ref_frame[1] = None;
m_is_inter = false;
if (m_mi_size >= Block_8x8) {
m_default_intra_mode = static_cast<IntraMode>(m_tree_parser->parse_tree(SyntaxElementType::DefaultIntraMode));
m_y_mode = m_default_intra_mode;
for (auto b = 0; b < 4; b++)
m_sub_modes[b] = m_y_mode;
} else {
m_num_4x4_w = num_4x4_blocks_wide_lookup[m_mi_size];
m_num_4x4_h = num_4x4_blocks_high_lookup[m_mi_size];
for (auto idy = 0; idy < 2; idy += m_num_4x4_h) {
for (auto idx = 0; idx < 2; idx += m_num_4x4_w) {
m_default_intra_mode = static_cast<IntraMode>(m_tree_parser->parse_tree(SyntaxElementType::DefaultIntraMode));
for (auto y = 0; y < m_num_4x4_h; y++) {
for (auto x = 0; x < m_num_4x4_w; x++) {
auto index = (idy + y) * 2 + idx + x;
if (index > 3)
dbgln("Trying to access index {} on m_sub_modes", index);
m_sub_modes[index] = m_default_intra_mode;
}
}
}
}
m_y_mode = m_default_intra_mode;
}
m_uv_mode = m_tree_parser->parse_tree(SyntaxElementType::DefaultUVMode);
return true;
}
@ -855,13 +881,18 @@ bool Decoder::seg_feature_active(u8 feature)
bool Decoder::read_tx_size(bool allow_select)
{
// FIXME: Implement
(void)allow_select;
m_max_tx_size = max_txsize_lookup[m_mi_size];
if (allow_select && m_tx_mode == TXModeSelect && m_mi_size >= Block_8x8) {
m_tx_size = static_cast<TXSize>(m_tree_parser->parse_tree(SyntaxElementType::TXSize));
} else {
m_tx_size = min(m_max_tx_size, tx_mode_to_biggest_tx_size[m_tx_mode]);
}
return true;
}
bool Decoder::inter_frame_mode_info()
{
// FIXME: Implement
return true;
}