1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 16:07:45 +00:00

LibVideo/VP9: Start parsing residuals (6.4.21-6.4.23)

Additionally, this uncovered a couple bugs with existing code,
so those have been fixed. Currently, parsing a whole video does
fail because we are now using a new calculation for frame width,
but it hasn't been fully implemented yet.
This commit is contained in:
FalseHonesty 2021-06-26 16:30:44 -04:00 committed by Andreas Kling
parent cbff7c386a
commit 66628053d4
4 changed files with 131 additions and 8 deletions

View file

@ -107,12 +107,23 @@ private:
bool read_ref_frames();
bool assign_mv(bool is_compound);
bool read_mv(u8 ref);
bool residual();
TXSize get_uv_tx_size();
BlockSubsize get_plane_block_size(u32 subsize, u8 plane);
bool tokens(size_t plane, u32 x, u32 y, TXSize size, u32 index);
/* (6.5) Motion Vector Prediction */
bool find_mv_refs(ReferenceFrame, int block);
bool find_best_ref_mvs(int ref_list);
bool append_sub8x8_mvs(u8 block, u8 ref_list);
/* (8.5) Prediction Processes */
bool predict_intra(size_t plane, u32 x, u32 y, bool have_left, bool have_above, bool not_on_right, TXSize tx_size, u32 block_index);
bool predict_inter(size_t plane, u32 x, u32 y, u32 w, u32 h, u32 block_index);
/* (8.6) Reconstruction and Dequantization */
bool reconstruct(size_t plane, u32 x, u32 y, TXSize size);
u8 m_profile { 0 };
u8 m_frame_to_show_map_index { 0 };
u16 m_header_size_in_bytes { 0 };
@ -209,6 +220,7 @@ private:
Vector<Vector<Vector<IntraMode>>> m_sub_modes; // FIXME: Can we make these fixed sized allocations?
u32 m_ref_frame_width[NUM_REF_FRAMES];
u32 m_ref_frame_height[NUM_REF_FRAMES];
u32 m_eob_total { 0 };
bool m_use_hp { false };