Change prediction of HEVC reference software

  c++, hevc, image-compression, mpeg, video-encoding

I would be VERY grateful if you could enlighten me on how can I change the HEVC reference encoder (in my case HM 16.9) so that, for each CTU, I could replace the prediction values generated by the system by calling a custom function responsible for loading an array of values generated "offline" i.e. outside the HEVC system.

I was thinking to introduce my changes in xEncodeCtu() function, called by encodeCtu(). Specifically, the cascade involves the following calls compressGOP() -> encodeSlice() -> encodeCtu() -> xEncodeCU().

However, it was not clear to me if getting the predicted values generated by the system during the optimization stage is even possible at this point.
The system seems to encode the prediction mode and this flag I am able to inspect but, for instance, I can’t see nothing but a "zeroed" array at pcPic->m_pcPicYuvPred->m_apiPicBuf.

Also, I am aware that intra prediction modes are performed atTComPrediction::xPredIntraAng().

I am not asking for absolute code, but some guide on which components of the encoder should I focus and, in concept, what would be the best approach to achieve this (if possible) i) changing xEncodeCu() to have access to the predicted values ii) changing xPredIntraAng() iii) other?

P.S: All my executions have been launched using a lossless configuration and Intra prediction only

Thank you so much

Source: Windows Questions C++

LEAVE A COMMENT