Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
hyuan 4ac2abc1a8 | 6 months ago | |
---|---|---|
.. | ||
Encoder-VTM | 9 months ago | |
README.md | 6 months ago |
OpenFastVC for VVC is developed based on the reference software of VVC, named VTM. The deployment of the project follows the README.md of VTM.
In the deployed projected, OpenFastVC provides six macro switches to control the intermediate coding information output, coding decision process, and the reference fast algorithm, respectively. The current version of OpenFastVC primarily offers support for coding unit (CU) partition and intra prediction. The six macro switches are as follows.
#define OFVC_OUTPUT_CU_INFO 0
#define OFVC_OUTPUT_IP_INFO 0
#define OFVC_CU_DECISION_CTRL 0
#define OFVC_IP_DECISION_CTRL 1
#if OFVC_CU_DECISION_CTRL
#define OFVC_CU_DECISION_REF_ALG1 0
#endif
#if OFVC_CU_DECISION_CTRL
#define OFVC_ISP_DECISION_REF_ALG1 1
#endif
Setting OFVC_OUTPUT_CU_INFO to 1 can enable the output of CU partitioning information,where an example is illustrated below for reference.
LUMA : [x:0-y:0-w:32-h:16]&&[depth:3-qt_depth:2-bt_depth:1-mt_depth:1] => ParentCU[x:0-y:0-w:32-h:32] => ParentCU[x:0-y:0-w:64-h:64] => ParentCU[x:0-y:0-w:128-h:128]
CHROMA : [x:0-y:0-w:16-h:16]&&[depth:2-qt_depth:2-bt_depth:0-mt_depth:0] => ParentCU[x:0-y:0-w:32-h:32] => ParentCU[x:0-y:0-w:64-h:64]
Note that the reference software of VVC only records the final optimal partitioning result. Hence, a Python script (PartitioningInfoExtract.py) is additionally provided in OpenFastVC to obtain intermediate information during CU decision. The processed result is as follows. x and y are the position of current CU. w and h denote the CU width and height, respectively. qt_depth reflects how many times the current CU has undergone QT partition thus far. bt_depth indicates the BT partitioning times of the current CU. mt_depth is the partitioning times by BT and TT. split_mode is the optimal split mode of current CU. As the independent coding of the luma and chroma components in VVC, LUMA and CHROMA indicate whether the current CU type.
LUMA : x:0-y:0-w:16-h:32-qt_depth:2-bt_depth:1-mt_depth:1-split_mode:0
CHROMA : x:0-y:0-w:16-h:16-qt_depth:2-bt_depth:0-mt_depth:0-split_mode:0
Setting OFVC_OUTPUT_IP_INFO to 1 can enable the output of intra prediction information. All the intra prediction modes in the candidate list are output, where MID is the ID of each mode, and ISPF is the ISP flag (-1: disabling ISP; 0: horizontal ISP; 1: vertical ISP). BestMode indicates the optimal intra prediction mode of current CU.
[x:0-y:0-w:8-h:8]<===>[MID:0, ISPF:-1]<===>[MID:1, ISPF:-1]<===>[MID:50, ISPF:-1]<===>[MID:0, ISPF:0]<===>[MID:0, ISPF:1]<===>[MID:50, ISPF:0]<===>[MID:50, ISPF:1]<===>BestMode:[MID:0, ISPF:-1]
Setting OFVC_CU_DECISION_CTRL to 1 can achieve the control over CU partition process. Moreover, the utilization of each partitioning mode is controlled by fast_split_results[6]. The six digits within $fast_split_results[6]$ correspond to Non-Split, Ver-BT, Hor-BT, Ver-TT, Hor-TT, and QT, respectively. The designed fast algorithm can regulate the CU partition by assigning the corresponding value to fast_split_results[6]. The value 0 represents removing the corresponding partitioning mode from candidate list, and 1 denotes retaining this mode.
int fast_split_results[6];
Setting OFVC_IP_DECISION_CTRL to 1 can achieve the control over intra prediction process. The availability of the ISP mode is controlled by the variable fast_ISP_flag (true or false). If the ID of an intra prediction mode is added to the disabling_mode_array, it will be removed from the candidate list. Note that the removing mode count should be assigned to disabling_mode_cnt.
bool fast_ISP_flag;
int* disabling_mode_array;
int disabling_mode_cnt;
To facilitate the performance evaluation of the designed algorithm, OpenFastVC also provides reference fast algorithms. In the current version, the fast CU partitioning algorithm proposed in [1] has been implemented, where it can be enabled by setting OFVC_CU_DECISION_REF_ALG1 to 1. Moreover, a fast ISP decision algorithm, optimized from [2], is also implemented in OpenFastVC. It can be enabled by setting OFVC_ISP_DECISION_REF_ALG1 to 1.
[1] H. Yang, L. Shen, X. Dong, Q. Ding, P. An and G. Jiang, "Low-Complexity CTU Partition Structure Decision and Fast Intra Mode Decision for Versatile Video Coding," in IEEE Transactions on Circuits and Systems for Video Technology, vol. 30, no. 6, pp. 1668-1682, June 2020, doi: 10.1109/TCSVT.2019.2904198.
[2] X. Dong, L. Shen, M. Yu and H. Yang, "Fast Intra Mode Decision Algorithm for Versatile Video Coding," in IEEE Transactions on Multimedia, vol. 24, pp. 400-414, 2022, doi: 10.1109/TMM.2021.3052348.
No Description
C++ C HTML INI Python other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》