fraunhoferhhi / vvenc

VVenC, the Fraunhofer Versatile Video Encoder
https://www.hhi.fraunhofer.de/en/departments/vca/technologies-and-solutions/h266-vvc.html
BSD 3-Clause Clear License
965 stars 173 forks source link

vvencAccessUnit payload size is too small to store data #98

Closed BobAlban closed 3 years ago

BobAlban commented 3 years ago

Hello

First of thanks for this great repo !

I have an issue with vvencapp encoder.

I found that with some specific images (not all of them), I get an error while using very low QPs saying that vvencAccessUnit payload size is too small to store data.

Step to reproduce this error:

Complete log for the above command:

disable MCTF for QP < 17 vvencapp: Fraunhofer VVC Encoder ver. 1.1.0 [Linux][GCC 9.3.0][64 bit][SIMD=AVX2] CODING TOOL CFG: CTU64 QT44BTT00 IBD:1 CIP:0 SAO:1 ALF:0 CCALF:0 WPP:0 WPP-Substreams:1 TMVP:1 DQ:0 SDH:1 CST:1 BDOF:0 DMVR:1 MTSImplicit:1 SBT:0 JCbCr:0 CabacInitPresent:0 AMVR:0 SMVD:0 LMCS:0 CIIP:0 MIP:0 AFFINE:0 MMVD:0 SbTMVP:0 GPM:0 LFNST:0 MTS:0 ISP:0 TS:2 TSLog2MaxSize:3 useChromaTS:0 BDPCM:2 IBC:2 BCW:0 ENC. ALG. CFG: QPA:1 HAD:1 RDQ:2 RDQTS:1 ASR:1 MinSearchWindow:96 RestrictMESampling:0 EDO:0 MCTF:0 FAST TOOL CFG: ECU:1 FEN:1 FDM:1 FastSearch:4 (SCC:2) LCTUFast:1 FastMrg:2 PBIntraFast:1 AMaxBT:0 FastQtBtEnc:1 ContentBasedFastQtbt:1 FastIntraTools:0 IntraEstDecBit:3 FastLocalDualTree:1 IntegerET:1 FastSubPel:1 QtbttExtraFast:3 IBCFastMethod:6 FIM:4 (29) QuantThr: 3 RATE CONTROL CFG: RateControl:0 PARALLEL PROCESSING CFG: NumThreads:4 MaxParallelFrames:4 WppBitEqual:1 WF:0

started @ Thu Sep 2 11:14:01 2021

POC 0 TId: 0 ( IDR_N_LP, I-SLICE, QP 4 ) 405016 bits [Y 59.7913 dB U 59.5361 dB V 59.5985 dB] [ET 0 ] [L0 ] [L1 ] vvencapp [error]: encoding failed, error -5 - vvencAccessUnit payload size is too small to store data. (payload size: 50176, needed 50627)

For this specific image, QP>7 do not cause this error. If it can help, I can find more images where the same problem appear. Do not hesitate to ask for more details also.

Am I missing something with this error ? Is there an easy way to increase this payload size to a high amount, just so the code do not crash anymore ?

jbrdbg commented 3 years ago

We assumed that the max output access unit size can be roughly limited by the input picture size: 224 * 224 = 50176. Typically, we try to compress the input pictures. Seems in your case, small picture size + low QP, this estimate will not hold. This is a hard coded limit (look for vvenc_accessUnit_alloc_payload() in the application), which cannot be changed by a command line parameter.

We will have a look into this and provide a fix soon.

BobAlban commented 3 years ago

I see. Thanks for your answer, appreciated.