This stream uses what mpeg2 calls a general slice structure - some macroblocks are not included in any slice, and are thus not coded. In mpeg2, the rule is that the action a decoder takes between the coded slices is undefined (see 6.1.2.1). Also all defined mpeg2 profiles use the restricted slice structure - so in practice the general slice structure is never used. In mpeg1, the slices as defined in 2.4.1 are supposed to not overlap or have gaps in-between, so the general slice structure is basically illegal. This stream still uses it so the decoder's behaviour is (just as in mpeg2) undefined. UCB's mpeg_play program seems to fill these non-coded blocks in black, but I think this is only by chance not by design. libmpeg2, like the mpeg2 reference decoder, has a different behaviour, it will not touch the pixels betweent he coded slices, so they will keep whatever value they had when vo_get_frame passed the picture. For this stream this results in some ugly green blocks, but this is actually acceptable as the stream is bogus.