[M4IF Technotes] macroblock in B-VOP with co-located block SKIPed
Yoshinori Suzuki
yosinori crl.hitachi.co.jp
Mon Jul 29 20:06:22 EDT 2002
Dear Scott and Christoph,
I would like to suggest to use S(GMC)-VOP, that means vop_coding_type=="S"
and sprite_enable=="GMC", instead of P-VOP, if you select the Advanced
Simple Profile. In this case, "modb" is coded even if the collocated block
is
"not_coded". Please check the following part of the syntax in macroblock
layer:
..........
if((co_located_not_coded!=1 || ... || (sprite_enable=="GMC" &&
backward_reference_vop_coding_type=="S")....){
if(transparent_mb()){
modb
..........
Best regards,
Yoshinori Suzuki
Hitachi, Ltd.
> -----Original Message-----
> From: technotes-admin lists.m4if.org [mailto:technotes-admin lists.m4if.
> org]On Behalf Of Scott Anderson
> Sent: Thursday, July 25, 2023 7:58 AM
> To: Christoph Lampert; technotes lists.m4if.org
> Subject: RE: [M4IF Technotes] macroblock in B-VOP with co-located block
> SKIPed
>
>
> Christoph and all,
>
> Our MPEG-4 project lead at Sorenson, Richard Shields, noticed the same
> shortcoming this week. A SKIPed B-VOP block could be wrong.
>
> > Isn't there a way to _do_ encode a motion
> > vector, or at least cbp and residue?
>
> I don't see a way, with the given MPEG-4 syntax.
>
> One possible quick fix would be to not allow not_coded macroblocks within
> P-VOPs when encoding B-VOPs. This would stop the SKIP in the B-VOP.
>
> Perhaps a better fix would be to compare the block in the
> backward reference
> P-VOP to the block in the B-VOP(s) while encoding the backward reference
> P-VOP. If there is significant difference, don't allow the P-VOP
> to declare
> the macroblock not_coded.
>
> Are there any other suggestions out there?
>
> Thanks,
> Scott Anderson.
>
>
> -----Original Message-----
> From: technotes-admin lists.m4if.org
> [mailto:technotes-admin lists.m4if.org]On Behalf Of Christoph Lampert
> Sent: Wednesday, July 24, 2023 11:49 AM
> To: technotes lists.m4if.org
> Subject: [M4IF Technotes] macroblock in B-VOP with co-located block
> SKIPed
>
>
> Hi,
>
> from what I read and saw in the reference implementation, a macroblock in
> a B-VOP whose co-located block is skipped is _always_ encoded as
> FORWARD mode with motion vector (0,0).
> I also see that no modb, mb_type, cbp or dbquant information are saved
> because the decoder known about the co-located block already.
>
> So in fact the B-VOP block is SKIPed, too, because it's a just a copy of
> the previous macroblock.
>
> My question is: What if that's wrong? What if the block is not supposed to
> be skiped in the B-VOP, e.g. because there is something like a fast
> moving object which enters the block just for this particular moment.
>
> It could be something like background -> object -> background
> with GOP "PBP" where the second background is the same as the first,
> so the co-located block is indeed skiped, but the object somehow has to be
> encoded, too.
>
> To me the method looked like a _must_ Isn't there a way to _do_ encode a
> motion vector, or at least cbp and residue?
>
> Christoph Lampert
>
> P.S. Sorry if this mail was sent more than once. I had trouble with the
> mail program, of course...
>
> --
> Christoph H. Lampert chl math.uni-bonn.de | Diese Signature wurde maschi-
> Beringstr. 6, Raum 14 Tel. (0228) 73-2948 | nell erstellt und bedarf
> Sprechstunden: keine, aber meistens da | keiner Unterschrift. AZ 27B-6
>
> _______________________________________________
> Technotes mailing list
> Technotes lists.m4if.org
> http://lists.m4if.org/mailman/listinfo/technotes
> _______________________________________________
> Technotes mailing list
> Technotes lists.m4if.org
> http://lists.m4if.org/mailman/listinfo/technotes
>
More information about the Mp4-tech
mailing list