Log in

View Full Version : syntax slice_type in slice header of h.264 Specification


aphon
20th June 2008, 11:05
Hello there. Dose anyone know whether syntax slice_type in slice header within one coded picture may change or not? I mean spec only define slice_type in the range from 5 to 9 to limit that all other slices of the current coded picture shall have a value of slice_type equal to the current value of slice_type or equal to the current value of slice_type-5.

Does it make sense if encoder always encodes slice_type in the range 0..4 and changes slice_type value when current coded picture is "non IDR picture"(if IDR picture, all slice are IDR/I slice ,of course).

For example,assume there are always 4 slices within one coded picture, num_ref_frames equals to 1:[frame0: IIII],[frame 1 : IPIP], all slice_type value in slice header equal to 0(p slice) or 2(I slice). When frame 1 appeared, the first and the third slice type are I slice, the others are p slice. Is this bitstream legal?

There is another question for me. What is the use of slice_type in range 5..9? I mean that slice_type from 5 to 9 tells decoder the whole slice_type status in one coded picture in advance, however, h.264 should encode/decode slice by slice. Bit rate of bitstream with slice_type 5..9 is larger than the one which slice_type only encoded in 0..4, decoder may do the same decoding flow for those two bitstreams.I can't figure out the use of slice_type 5..9, does anyone know?
thanks a lot!

akupenguin
20th June 2008, 13:28
Does anyone know whether syntax slice_type in slice header within one coded picture may change or not?
Yes that's valid, although there's no reason for an encoder to do that. I can't think of any situation where it would improve compression.

I mean that slice_type from 5 to 9 tells decoder the whole slice_type status in one coded picture in advance, however, h.264 should encode/decode slice by slice.
Who said anything about "should"? There are places where code would have to be more complex to implement mixed slicetypes. Such a decoder might want to optimize for both cases and know in advance which version of the code to run.