150 likes | 158 Views
This paper proposes a solution for the invocation of the inverse MCTF process in the SVC video coding standard, with a focus on reducing complexity, time delay, and memory requirement. The proposed solution distributes the inverse update/prediction steps across all pictures of a partition and determines when these steps can be performed using a set of variables. No additional syntax elements are added, and there is no effect on coding efficiency.
E N D
JVT-O026Invocation of theInverse MCTF Process Panasonic Singapore Laboratories MenHuang Lee
Introduction • MCTF structure not fixed • Switch dynamically between Haar filter and 5/3 transform filter • Multiple reference frames possible • Inter-partition prediction/update steps removed for low delay mode operation • In SVC WD 1.0, not clear when inverse MCTF is invoked • In JSVM S/W, inverse MCTF invoked at start of next GOP
Problems • Significant time delay to complete inverse MCTF of whole GOP • Periodic complexity peaks to perform inverse MCTF of whole GOP • Large memory requirement to buffer all pictures in a GOP until inverse MCTF process is invoked • Low delay mode operation not possible
Proposed Solution • Define inverse MCTF process such that inverse update/prediction steps are distributed across all pictures of a partition, as soon as the step can be performed • When to invoke inverse MCTF? • How to determine when an inverse update/prediction steps can be performed? • What to do during inverse MCTF?
When to invoke inverse MCTF? • After all slices of the current picture, pic, is decoded from the bitstream • Bitstream-decoded picture decoded from video stream but before it undergoes the inverse MCTF process
coding order 1 0 2 4 6 5 7 3 temporal level 0 1 2 3 4 5 6 7 8 display order 3 prediction H H H H 2 update L L L L 2 prediction H H 1 curTemporalLevel = 3 update L L 1 prediction H curTemporalLevel = 2 0 update L 0 curTemporalLevel = 1 GOP border GOP border curTemporalLevel = 0 How to determine when a step can be performed? • Define, initialize, use & update a set of variables for each picture, pic:
temporal level 2 L L L L L L 1 H H pic L L L L 1 (maxL0, maxL1) = (1, 1) (curL0, curL1) = (0, 0) How to determine when a step can be performed? (curL0, curL1) = (1, 0) (curL0, curL1) = (1, 1)
L L L L L H H L L L L L L L L H H L L L (0, 1) (1, 1) (1, 0) (maxL0, maxL1) (curL0, curL1) (0, 0) (0, 0) (0, 0) How to determine when a step can be performed? (0, 1) (1, 0) (1, 0) (1, 1)
L L L L L H H L L L L L L L L (1, 2) (2, 1) (maxActivePrdL0, maxActivePrdL1) H H (curActivePrdL0, curActivePrdL1) (0, 0) (0, 0) L L L (0, 2) (1, 1) (2, 0) (maxActiveUpdL0, maxActiveUpdL1) (curActiveUpdL0, curActiveUpdL1) (0, 0) (0, 0) (0, 0) What to do during inverse MCTF? (1, 1) (1, 2) (1, 0) (1, 0) (2, 0) (2, 1) (1, 0) (0, 2) (0, 1) (1, 1) (1, 0) (2, 0)
Start Start L picture, updPic H picture, prdPic 1 2 Determine if updPic is ready for inverse update Check for inverse update for all pictures updPic in reference picture lists of prdPic 1 Ready? Determine if prdPic is ready for inverse prediction Yes Perform inverse update for updPic No Ready? Check for inverse prediction for all pictures prdPic in update picture lists of updPic Yes 2 No Perform inverse prediction for prdPic Done Done What to do during inverse MCTF?
1 2 3 4 5 6 7 8 coding order 1 0 2 4 6 5 7 3 temporal level H H H H 0 1 2 3 4 5 6 7 8 display order 3 prediction L L L L H H H H 2 update H H L L L L 2 prediction L L H H 1 update H L L 1 prediction H 0 update L 0 GOP border GOP border Illustration coding order 1 0 2 4 6 5 7 3 temporal level 0 display order 3 prediction 2 update 2 prediction 1 update 1 prediction 0 update L 0 GOP border GOP border
Proposed Modification to SVC WD • “S.8 Decoding process” - added description of when to invoke inverse MCTF process • “S.8.8 Inverse motion-compensated filtering process” - replaced • “S.8.8.3 Check for inverse prediction process” - added • “S.8.8.4 Check for inverse update process” - added
Conclusion • Inverse update/prediction steps distributed across all pictures of a partition, as soon as the step can be performed • Propose when to invoke inverse MCTF • Propose how to determine when an inverse update/prediction steps can be performed, via a set of variables • Propose what to do during inverse MCTF • Reduce complexity, spreading periodic complexity peaks over time • Reduce time delay, support low delay mode operation • Reduce memory requirement • No addition of syntax element • No effect on coding efficiency