[Ffmpeg-devel] Mpeg-4 playback: issues with CBR padding

Måns Rullgård mru
Wed Nov 8 14:41:43 CET 2006


Michael Niedermayer said:
> Hi
>
> On Wed, Nov 08, 2006 at 12:04:12PM +0100, Mathieu Monnier wrote:
>> Hi,
>>
>> It's a late answer, but after rechecking the ISO/IEC standard, I may
>> disagree with that :
>> >i dont think that stuffing macroblocks are allowed _after_ all macroblocks,
>> >the mpeg4 syntax places the stuffing mb in the mb type decoding loop and
>> >it seems like this loop must terminate with decoding a non stuffing mb
>> >which cannot happen after all mbs, that is my interpretation of the spec
>> >...
>> >
>> There are two cases :
>>  - the decoding loop of the macroblocks is a gob loop, in which case
>> the statement is true ( since the pseudo code is : "for ( i=0; i <
>> nMacroblock; i++ ) macroblock();" )
>>  - the decoding loop of the macroblocks is in a
>> combined_motion_shape_texture(), in which case the pseudo code is : "do
>> { macroblock(); } while ( !resync_marker && !start_code );". In that
>> case, padding after the last macroblock seems allowed, unless I
>> misinterpreted something else ?
>
> combined_motion_shape_texture() {
>    do{
>        macroblock()
>    } while (nextbits_bytealigned() != resync_marker && nextbits_bytealigned()
>             != "000 0000 0000 0000 0000 0000")
> }
>
> and in macroblock() i think you end up at
>
> do{
>     if (vop_coding_type != "I" && !(sprite_enable == "s
>           && sprite_transmit_mode == "piece"))
>           not_coded
>     if (!not_coded || vop_coding_type == "I"
>           || (vop_coding_type == "S"
>           && low_latency_sprite_enable
>           && sprite_transmit_mode == "piece"))
>           mcbpc
> } while(!(not_coded || derived_mb_type != "stuffing"))
>
> and the only way i see to get out of this loop is with a non stuffing
> macroblock so there has to be a non stuffing mb at the end, or i
> missed something

That loop is inside an if(video_object_layer_shape != "rectangular").  The else
case is the same but without the loop.

-- 
M?ns Rullg?rd
mru at inprovide.com




More information about the ffmpeg-devel mailing list