h264 profile

trez

Well-known member
I wonder which of the h264 profiles the 7d video encoder is based upon... I checked the latest Philip Bloom footage (first two shots - downloaded original mp4 file):
http://exposureroom.com/members/philipbloom.aspx/assets/5e7861bfcd44457c8fe6f70cf0289786/
and there are some artifacts on the sky. Looks like the color depth (8bit per channel I guess) is too low to reproduce the smooth single-color gradients (areas where one channel is predominant). I've never really understood people saying 8 bit is sufficient...
 
this is edited footage(not straight from camera)

8bit footage(i talk hdv).... it can be fine.
doesnt cineform(or any intermediate codec) help by converting the "fragile" footage to something easier to work with and less prone to breaking down?
 
I don't think it's been announced anywhere as to what the exact profile is, but it's not very advanced; it doesn't include B frames, for example. Of course, neither does the 5D nor the GH1.
 
I don't think it's been announced anywhere as to what the exact profile is, but it's not very advanced; it doesn't include B frames, for example. Of course, neither does the 5D nor the GH1.

Yes, but this might have been wise decision, actually (provided the codec bitrate is sufficient) - getting rid of interpolated frames is like moving towards 'intra' encoding which has some advantages... at 48Mbit/s 7d designers might have been able to afford it. Intraframe DVCPRO HD is excellent at twice the 7d bitrate (the raster size is smaller, though)
 
Last edited:
8 bits with dithering, aka noise, works just fine for representing gradients since we don't see the difference between two colors in 8 bits but we see the edge, which dithering breaks up. the problem is that h.264 by design removes noise, resulting in banding. you can actually make the situation slightly better by adding some noise again in post, for example by using the "reduce banding" filter in final cut/motion.
 
Yes, but this might have been wise decision, actually (provided the codec bitrate is sufficient) - getting rid of interpolated frames
absolutely, except p frames are also "interpolated"* so we have the same post production problem. they probably use p frames only to make compression less complex.

* neither is in fact that, they have their own integrity and are just as real, it's just that they use the difference or similarity of surrounding frames to compress better. this is a common misunderstanding.
 
getting rid of interpolated frames is like moving towards 'intra' encoding which has some advantages
But, as mattsand said, that's not what they did. P frames are also interpolated. There is nothing "intra" about any of these DSLR's implementations of h.264. If they'd gone with intraframe, that would be awesome. The GH1 has intraframe MJPG, but only at 720/30p and not with enough bandwidth allocated. I'd love to see intraframe with enough bandwidth allocated on all these DSLRs.

But with no B frames, they've taken a big step backwards in video quality compared to what it could have been. In AVCHD, the GoP is normally something like IBBBPBBBPBBBP -- meaning, mostly B frames, and that's where most of the efficiency comes from. In the GH1 and 7D the GoP is more like IPPPPPPPPPPPP. By eliminating B frames and substituting all P frames, they've minimized how much horsepower the compressor needs to use, but also given up a lot of the efficiency.

Make no mistake about it, a lack of "B" frames is not something to be happy about. Canon added a lot more bandwidth than Panasonic to try to overcome it, but the end result is that it's taking 47mbps to do what a B-frame codec could probably handle in about 13mbps or so.
 
8 bits with dithering, aka noise, works just fine for representing gradients since we don't see the difference between two colors in 8 bits but we see the edge, which dithering breaks up

Telling truth I'm not so sure. 8bit linear color is, to my eyes, not enough to create smooth (dark) gradients, even when properly dithered. 8bit log is different thing. Even if it can look ok from certain distance, it doesn't change the fact that 8bit per channel is way too little for acquisition format. It can be fine for distribution, but not for footage that will be subject to further ccing and grading.

In AVCHD, the GoP is normally something like IBBBPBBBPBBBP -- meaning, mostly B frames, and that's where most of the efficiency comes from. In the GH1 and 7D the GoP is more like IPPPPPPPPPPPP. By eliminating B frames and substituting all P frames, they've minimized how much horsepower the compressor needs to use, but also given up a lot of the efficiency.

If all B-frames have been simply replaced by P-frames (no additional I-frames) then sure it's a step backwards...
Or? It reminds me the Intraframe vs LongGOP dillema - at certain bitrate it is better to only use I-frames, even though they eat up more bandwidth (at least this is what Intraframe advocates say). The P-frames error is usually less than that of the B-frames - at the cost of compression ratio and bitrate usage. So maybe there's certain bitrate limit above which we can afford the luxury of having only I- and P-frames (no B-frames)? Just 'thinking out loud'...
 
Telling truth I'm not so sure. 8bit linear color is, to my eyes, not enough to create smooth (dark) gradients, even when properly dithered. 8bit log is different thing. Even if it can look ok from certain distance, it doesn't change the fact that 8bit per channel is way too little for acquisition format. It can be fine for distribution, but not for footage that will be subject to further ccing and grading.



If all B-frames have been simply replaced by P-frames (no additional I-frames) then sure it's a step backwards...
Or? It reminds me the Intraframe vs LongGOP dillema - at certain bitrate it is better to only use I-frames, even though they eat up more bandwidth (at least this is what Intraframe advocates say). The P-frames error is usually less than that of the B-frames - at the cost of compression ratio and bitrate usage. So maybe there's certain bitrate limit above which we can afford the luxury of having only I- and P-frames (no B-frames)? Just 'thinking out loud'...

It sounds like you prefer 10 bit but 8 bit is sufficient. Maybe not preferred but sufficient. HDV,DVCPROHD,HDCAM, etc are all 8bit and I would say they are more than sufficient as an acquisition format.
 
It sounds like you prefer 10 bit but 8 bit is sufficient. Maybe not preferred but sufficient. HDV,DVCPROHD,HDCAM, etc are all 8bit and I would say they are more than sufficient as an acquisition format.

Well, I could agree these formats are sufficient. But you have to agree 'more than sufficient' is an exxageration ;)
Honestly, for properly exposed shot, using entire dynamic range, when no dark gradients are present 8bits might be fine. Still, I much prefer 10bits. It's just much more forgiving IMO... The DSLR manufacturers try to convince their customers 10bit is not enough! I'm not videophile, so 10 bits have been ok with me so far ;)
 
But with no B frames, they've taken a big step backwards in video quality compared to what it could have been. In AVCHD, the GoP is normally something like IBBBPBBBPBBBP -- meaning, mostly B frames, and that's where most of the efficiency comes from. In the GH1 and 7D the GoP is more like IPPPPPPPPPPPP. By eliminating B frames and substituting all P frames, they've minimized how much horsepower the compressor needs to use, but also given up a lot of the efficiency.

Make no mistake about it, a lack of "B" frames is not something to be happy about. Canon added a lot more bandwidth than Panasonic to try to overcome it, but the end result is that it's taking 47mbps to do what a B-frame codec could probably handle in about 13mbps or so.

Exactly.

Just to add, the 7D uses Baseline@L5

Baseline means no b-frames as mentioned already, but also important it means that it is limited to CAVLC entropy coding instead of CABAC - which is another ~10-20% loss in efficiency. Baseline means no I8X8 transform either, another loss in efficiency.

It uses only 1 reference frame, another hit in efficiency. As everyone knows, these non intra formats code the differences between frames. Compare this to the 4 reference frames on a better AVCHD implementation like the HMC150 (which also uses AVC high, bframes, CABAC, I8x8).

But at least the 7D has ~3x the bitrate of the other DSLR camera in it's "class", the GH1, to make up for some of it's deficiencies in recording implementation
 
The DSLR manufacturers try to convince their customers 10bit is not enough! I'm not videophile, so 10 bits have been ok with me so far ;)
Well, I'm not sure what you're referencing, but in case you don't know, 10 bits is practically nonexistent in the video world, including the professional video world. In all of video history, in commonly used formats, 10 bits has only appeared in video twice: in Digital Betacam, and in AVC-Intra. So all the standard-def digital video formats like DV, DVCAM, DVCPRO, DVCPRO50, Digital-S, XDCAM, MPEG-IMX, BetaSX, etc., are all 8-bit. And all the digital HD formats, such as HDCAM, DVCPRO-HD, XDCAM-HD, XDCAM-EX, HDV, and AVCHD, are all 8-bit.

The mastering formats like HDCAM-SR and D-5 are 10-bit, but not the camera formats. Only AVC-Intra is a 10-bit format in HD, and only Digital Betacam is a 10-bit format in SD (unless I'm forgetting some?)

So saying 10 bits have been ok so far? Just so you know, 8-bit is practically all that there is. We'd all love 10 bits, 10 bit is a hugely nice upgrade for gradients etc., but don't expect to see it on an inexpensive DSLR anytime soon.
 
I was referencing my dSLR, but just realized it's 12bit and not 10.
Sure 8bit is common among video formats. However, since Canon uses h264, which allows for 10bit in higher profiles, I hoped they might have implemented it in 7d. This would probably put more load on the processor, but 7d has two Digic chips.

PDR - nice insider info on the codec! thanks
 
12-bit raw, not 12-bit yuv or rgb.

Yes, good point. Wonder how do those relate (raw, rgb, yuv), considering all the processing raw file must undergo to be converted to rgb or yuv space (debayering, applying gamma)... Is 8bit rgb or yuv container (at 2.2 gamma) enough for 12bit raw (perceptually, of course)?
 
Back
Top