summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibVideo/VP9
AgeCommit message (Collapse)Author
2022-01-01LibVideo/VP9: Do not `null` guard calls to `free`Michel Hermier
2021-08-08Userland: Use kmalloc_array() where appropriateAndreas Kling
2021-07-10LibVideo/VP9: Implement MV reading & rectify MV storage issuesFalseHonesty
With this patch we are finally done with section 6.4.X of the spec :^) The only parsing left to be done is 6.5.X, motion vector prediction. Additionally, this patch fixes how MVs were being stored in the parser. Originally, due to the spec naming two very different values very similarly, these properties had totally wrong data types, but this has now been rectified.
2021-07-10LibVideo/VP9: Finish implementing block decoding (6.4.4)FalseHonesty
Though technically block decoding calls into some other incomplete methods, so it isn't functionally complete yet. However, we are very close to being done with the 6.4.X sections :)
2021-07-10LibVideo/VP9: Implement parsing Token and MoreCoefs treesFalseHonesty
These elements were being used in the new tokens implementation, so support for them in the TreeParser has been added. Additionally, this uncovered a bug where the nonzero contexts were being cleared with the wrong size.
2021-07-10LibVideo/VP9: Implement token parsing (6.4.24-6.4.26)FalseHonesty
Note that this now requires a couple new syntax types to be parsed in the TreeParser, so a follow-up commit will implement that behavior.
2021-07-10LibVideo/VP9: Implement sections 6.1.2 and 8.4.1-8.4.4FalseHonesty
These section implement the behavior to refresh the probability tables after parsing a frame.
2021-07-10LibVideo/VP9: Begin reference frame update process (8.10)FalseHonesty
This was required for correctly parsing more than one frame's height/width data properly. Additionally, start handling failure a little more gracefully. Since we don't fully parse a tile before starting to parse the next tile, we will now no longer make it past the first tile mark, meaning we should not handle that scenario well.
2021-07-10LibVideo/VP9: Rename Decoder -> Parser & create an actual Decoder classFalseHonesty
The class that was previously named Decoder handled section 6.X.X of the spec, which actually deals with parsing out the syntax of the data, not the actual decoding logic which is specified in section 8.X.X. The new Decoder class will be in charge of owning and running the Parser, as well as implementing all of the decoding behavior.
2021-07-10LibVideo/VP9: Start parsing residuals (6.4.21-6.4.23)FalseHonesty
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.
2021-07-10LibVideo/VP9: Refactor how above & left contexts are stored & clearedFalseHonesty
These make more sense as Vectors, and it makes it much easier to manage their sizing.
2021-07-10LibVideo/VP9: Specify which spec section defines certain behaviorsFalseHonesty
2021-07-10LibVideo/VP9: Clean up formatting & use range-based for loopsFalseHonesty
2021-07-10LibVideo/VP9: Implement simple FIXMEs that use now supported dataFalseHonesty
2021-07-10LibVideo/VP9: Implement more TreeParser probability calculationsFalseHonesty
Now TreeParser has mostly complete probability calculation implementations for all currently used syntax elements. Some of these calculation methods aren't actually finished because they use data we have yet to parse in the Decoder, but they're close to finished.
2021-07-10LibVideo/VP9: Implement syntax element counting for supported elementsFalseHonesty
With the progress made in the Decoder thus far, we have the ability to support most of the syntax element counters in the tree parser. Additionally, it will now crash when trying to count unsupported elements.
2021-06-30LibVideo: Migrate to east-const style & apply other minor fixesFalseHonesty
This patch brings all of LibVideo up to the east-const style in the project. Additionally, it applies a few fixes from the reviews in #8170 that referred to older LibVideo code.
2021-06-30LibVideo/VP9: Implement most of block_mode_info methods (6.4.15-6.4.18)FalseHonesty
2021-06-30LibVideo/VP9: Implement most of inter_frame_mode_info (6.4.11-6.4.14)FalseHonesty
2021-06-30LibVideo/VP9: Implement intra_frame_mode_info procedure (6.4.6)FalseHonesty
2021-06-30LibVideo/VP9: Add SAFE_CALL macro to help propagate failure stateFalseHonesty
2021-06-30LibVideo/VP9: Refactor how TreeParser accesses decoder dataFalseHonesty
The TreeParser requires information about a lot of the decoder's current state in order to parse syntax tree elements correctly, so there has to be some communication between the Decoder and the TreeParser. Previously, the Decoder would copy its state to the TreeParser when it changed, however, this was a poor choice. Now, the TreeParser simply has a reference to its owning Decoder, and accesses its state directly.
2021-06-30LibVideo/VP9: Begin decoding VP9 blocksFalseHonesty
2021-06-30LibVideo/VP9: Successfully parse partition syntax elementFalseHonesty
2021-06-30LibVideo/VP9: Begin creating a tree parser to parse syntax elementsFalseHonesty
2021-06-30LibVideo/VP9: Begin decoding tilesFalseHonesty
2021-06-30LibVideo/VP9: Parse compressed header dataFalseHonesty
This patch adds compressed header parsing to the VP9 decoder (section 6.4 of the spec). This is the final decoder step before we can start to decode tiles.
2021-06-12LibVideo/VP9: Add Decoder and begin parsing uncompressed header dataFalseHonesty
This patch brings all of the previous work together and starts to actually parse and decode frame information. Currently it only parses the uncompressed header data (section 6.2 of the spec).
2021-06-12LibVideo/VP9: Implement a bit stream to decode VP9 dataFalseHonesty
The VP9 specification requires a special decoding process to parse a lot of the data read from a frame, so this BitStream wrapper implements that behavior. These processes are defined in section 9 of the VP9 spec.
2021-06-12LibVideo/VP9: Implement syntax element counterFalseHonesty
2021-06-12LibVideo/VP9: Add probability table constantsFalseHonesty
This patch adds VP9's probability tables and the functions needed to load/clear them.
2021-06-12LibVideo/VP9: Define all VP9 symbols and enum constantsFalseHonesty