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

LibVideo: Parameterize all tree parsing for motion vectors in VP9

This commit is contained in:
Zaggy1024 2022-11-07 04:09:59 -06:00 committed by Andrew Kaster
parent 84f1aed40a
commit e906bcc696
3 changed files with 97 additions and 102 deletions

View file

@ -81,6 +81,16 @@ public:
static ErrorOr<bool> parse_single_ref_part_1(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, Optional<bool> above_single, Optional<bool> left_single, Optional<bool> above_intra, Optional<bool> left_intra, Optional<ReferenceFramePair> above_ref_frame, Optional<ReferenceFramePair> left_ref_frame);
static ErrorOr<bool> parse_single_ref_part_2(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, Optional<bool> above_single, Optional<bool> left_single, Optional<bool> above_intra, Optional<bool> left_intra, Optional<ReferenceFramePair> above_ref_frame, Optional<ReferenceFramePair> left_ref_frame);
static ErrorOr<MvJoint> parse_motion_vector_joint(BitStream&, ProbabilityTables const&, SyntaxElementCounter&);
static ErrorOr<bool> parse_motion_vector_sign(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, u8 component);
static ErrorOr<MvClass> parse_motion_vector_class(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, u8 component);
static ErrorOr<bool> parse_motion_vector_class0_bit(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, u8 component);
static ErrorOr<u8> parse_motion_vector_class0_fr(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, u8 component, bool class_0_bit);
static ErrorOr<bool> parse_motion_vector_class0_hp(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, u8 component, bool use_hp);
static ErrorOr<bool> parse_motion_vector_bit(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, u8 component, u8 bit_index);
static ErrorOr<u8> parse_motion_vector_fr(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, u8 component);
static ErrorOr<bool> parse_motion_vector_hp(BitStream&, ProbabilityTables const&, SyntaxElementCounter&, u8 component, bool use_hp);
void set_default_intra_mode_variables(u8 idx, u8 idy)
{
m_idx = idx;
@ -95,23 +105,6 @@ public:
m_start_y = start_y;
}
void set_mv_component(u8 component)
{
m_mv_component = component;
}
ErrorOr<bool> parse_mv_bit(u8 bit)
{
m_mv_bit = bit;
return parse_tree<bool>(SyntaxElementType::MVBit);
}
ErrorOr<u8> parse_mv_class0_fr(bool mv_class0_bit)
{
m_mv_class0_bit = mv_class0_bit;
return parse_tree<u8>(SyntaxElementType::MVClass0FR);
}
private:
u8 calculate_token_probability(u8 node);
u8 calculate_more_coefs_probability();