fraunhoferhhi/vvdec

Some of sequence decode failed/mismatch to VTM-11.0

Closed this issue · 6 comments

PPS_A_Bytedance_1.bit
PPS_B_Bytedance_1.bit
PPS_C_Bytedance_1.bit
RAP_C_HHI_1.bit
RAP_D_HHI_1.bit
SPS_A_Bytedance_1.bit
SPS_B_Bytedance_1.bit
SPS_C_Bytedance_1.bit

Yes, all of MD5 output show (OK), however, the output YUV file is mismatch, I guess there have some issues.
For example, when I decode PPS_A_Bytedance_1.bit, I found there have some warning message:

POC   21 LId:  0 TId: 4 ( b-SLICE, QP 41 ) [DT  0.090] [L0 20 16 ] [L1 22 24 ]
         [MD5:9483073a823e35b66f384d04eb432d4b,86fe136f12847dd7d70ce9727311f072,81710675df597c4fa3d23a1e41a32e0f,(OK)]

WARNING: In function "DecLib::decode" in R:\vvdec\source\Lib\DecoderLib\DecLib.cpp:207: missing output picture
vvdecapp [error]: missing output picture!
POC   23 LId:  0 TId: 4 ( b-SLICE, QP 41 ) [DT  0.111] [L0 22 20 ] [L1 24 32 ]
         [MD5:a05751049f037378b238e7ec1df071a4,f75821b412ab678f2004d02c3f639bd7,e31ed27fdeea0de94d8409508849f2e3,(OK)]

Sorry for delay, I only have time on weekends.
I think I found the root cause.
The bug in DecLibParser::checkNoOutputPriorPics , I explain details in here.
These sequence have small IDR period, so the decoder will meet a IDR before queue clear (especially my laptop have 8 threads, the decoder put 9 of delay frames in queue).
Moreover, the decoder is design to async parsing and decompress, so early call to DecLibParser::checkNoOutputPriorPics will be clear all of Decoded but No-output picture before IDR, this is reason that we lost some picture.
Are you want to me upload temporary fix?

If you have a temporary fix we would appreciate it. There is a plan to look more closely into the DPB management which would hopefully include those fixes, but can't yet say when will get to do that. So if you have a solution in the meantime, that would be great.

I will submit pull request for my workaround, it pending in my self verify processing, my laptop a little slow.

btw:
In engineering, I likely to fix bugs use as simple as possible but stable method, to allow us avoid make new bug. In most China companies, this patch is not good because it only modify half-line, it means 'no productive code output' or equal to no KPI / salary over there. I hope open source fields does not so so.

Can this be closed after #21 integration?

Yes, we can close this topic, thank you.

Yes, we can close this topic, thank you.

Thank you