Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add AVX2 implementation of deblocking filter / port deblocking asm from HEVC #223

Open
stone-d-chen opened this issue May 2, 2024 · 1 comment

Comments

@stone-d-chen
Copy link
Collaborator

References

@stone-d-chen
Copy link
Collaborator Author

stone-d-chen commented Jun 3, 2024

Chroma Deblocking Notes

VVC has three types of Chroma deblocking filter operations:

  • long-tap filter FUNC(loop_filter_chroma_strong)
  • short-tap filter ``FUNC(loop_filter_chroma_weak)` (equivalent to the HEVC chroma deblocking)
  • long-tap filter with reduced support FUNC(loop_filter_chroma_strong_one_side)

The filter choice depends on the CU/TU block side length (ortho to boundary being deblocked):

  • Upper side of horizontal can be restricted to ($S_p = 1$), otherwise
  • if block side $\geq 8$ samples, then $Sp, Sq = 3$, otherwise
  • $Sp, Sq = 1$

When $Sp = Sq = 1$ the short-tap (chroma_weak) is applied. This filter is identical to the (only) HEVC deblocking filter:

$$ \Delta_c = \left((q_0 - p_0 << 2) + p_1 - q_1 + 4\right) >> 3 $$

One general difficult with incremental implementation is that ff_vvc_deblock_horizontal calls a single function vvcdsp.lf.filter_chroma which implements the filter decision calculation -> filtering. If I can at least temporarily do some checks in ff_vvc_deblock_horizontal then I can call hevc's asm implementation directly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant