Log in

View Full Version : hierarchical B-frame ?


palmman
12th August 2009, 09:52
Hi guys, in x264, does it support the feature of hierarchical B-frame below or has a similar feature like JM's HierarchicalCoding? Thank you very much for your answer. :)

http://www.cs.ccu.edu.tw/~tsaicm/pics/2.PNG

Dust Signs
12th August 2009, 10:16
--b-pyramid?

Dust Signs

palmman
12th August 2009, 14:52
--b-pyramid?

Dust Signs

Is it similar to JM's HierarchicalCoding? Is it complete or developing? Thank you a lot.

LoRd_MuldeR
12th August 2009, 15:32
B-Pyramid is in x264 for a very long time now, so I think this can be called "complete". However it doesn't work with the new MB-Tree (http://i29.tinypic.com/34fiq9w.png) Ratecontrol at the moment...

palmman
12th August 2009, 15:47
B-Pyramid is in x264 for a very long time now, so I think this can be called "complete". However it doesn't work with the new MB-Tree Ratecontrol at the moment...

Got it, thanks. :)

Dark Shikari
12th August 2009, 17:47
x264's b-pyramid only supports one level of heirarchy though, and it doesn't (yet) use MMCO to throw away the middle B-ref, so it isn't strictly heirarchical.

benwaggoner
13th August 2009, 03:39
x264's b-pyramid only supports one level of heirarchy though, and it doesn't (yet) use MMCO to throw away the middle B-ref, so it isn't strictly heirarchical.
A fine reminder to ask you how useful b-pyramid is in practice.

I can see the value of them for animation and particularly screen recording, but do they offer much payoff for film/video?

Dark Shikari
13th August 2009, 03:40
A fine reminder to ask you how useful b-pyramid is in practice.

I can see the value of them for animation and particularly screen recording, but do they offer much payoff for film/video?I'd say it's least useful for animation and screen recording and most useful for film/video. Some broadcast encoders are now using 3-level b-pyramid with 15 B-frames per minigop.

I don't have any measurements though, I recall it being a % or 2 for x264, but it might be more with MMCO and multi-level pyramid, and perhaps it helps psy-wise as well by minimizing local quality fluctuation.

benwaggoner
13th August 2009, 04:56
I'd say it's least useful for animation and screen recording and most useful for film/video. Some broadcast encoders are now using 3-level b-pyramid with 15 B-frames per minigop.

I don't have any measurements though, I recall it being a % or 2 for x264, but it might be more with MMCO and multi-level pyramid, and perhaps it helps psy-wise as well by minimizing local quality fluctuation.
Interesting. This topic requires further rumination; I don't have an intuitive sense of b-pyramid impact in practice.

Anything good I should read up on?

Dark Shikari
13th August 2009, 05:18
Interesting. This topic requires further rumination; I don't have an intuitive sense of b-pyramid impact in practice.

Anything good I should read up on?Don't know really, I haven't seen much.

Basically the concept behind B-pyramid is that biprediction is really good, and more of it is better :p

Sulik
13th August 2009, 06:47
It's quite useful in order to enable 2x/4x fast forwarding modes (obviously that would require using MMCO in order to be strictly BD-compliant).

akupenguin
13th August 2009, 08:47
2x ff only requires 1 consecutive B-frame, it doesn't care at all about pyramid.
4x ff requires 3 consecutive B-frames, which is equally possible without pyramid. But yes there are some cases where bBb > bPb > bbb, i.e. where you'd be willing to use pyramid but not willing to use 3 conventional B-frames from a quality perspective. Conversely, there are cases where PPP is the optimal coding mode, so you still have to sacrifice quality if you want to enable frame skipping.

Comatose
13th August 2009, 09:07
Kinda off topic, but I've always wondered - what's the difference between B and b (as in bBb)? I know how i and I are different, but B/b? Does it denote they are referenced by other frames or something?

Dust Signs
13th August 2009, 09:11
Kinda off topic, but I've always wondered - what's the difference between B and b (as in bBb)? I know how i and I are different, but B/b? Does it denote they are referenced by other frames or something?

Yes, B frames are being referenced again, whereas b frames are not. The same applies to P and p as well as to I and i frames, albeit the latter would only make sense for an I frame interval of one

Dust Signs

akupenguin
13th August 2009, 22:22
The same applies to P and p
But there's no reason to ever use disposable p-frames (except as the last in a GOP), since b are better.
as well as to I and i frames
Not in x264 terminology. We use "i" to mean not-seekable, rather than not-referenced.

Dust Signs
14th August 2009, 05:38
But there's no reason to ever use disposable p-frames (except as the last in a GOP), since b are better.
I was just referring to the terminology, not to the actual meaningfulness of using certain types.

Not in x264 terminology. We use "i" to mean not-seekable, rather than not-referenced.
Sorry, I mixed that up with JM's terminology

Dust Signs

Manao
14th August 2009, 13:04
But there's no reason to ever use disposable p-frames (except as the last in a GOP), since b are better.Not in baseline, since you can't use bframes.

tono1234
14th August 2009, 16:03
Hi guys,

Can you please explain what do you exactly mean by "level of pyramid". Is it number of hierarchical levels that contain B frames that are referenced? In that case would the above figure correspond to two-level pyramid?

I have seen several tests performed in JM using this type of referencing the frames in temporal DPCM and my impression is that it generally improves coding performance compared to standard IBBP, IBP or IPPP coding configuration. It also provides the basis for temporal scalability, thus is sort of basic configuration in H.264 scalable extension, when dyadic temporal scalability is sought.

Thanks

nurbs
14th August 2009, 17:16
Can you please explain what do you exactly mean by "level of pyramid"
If you look at the picture in the first post you can see that the b-frames are marked with B1, B2 and B3. AFAIK without b-pyramid x264 only uses B1, with b-pyramid also B2 and it can't do B3.

palmman
24th August 2009, 10:24
Is 'B-Pyramid' a part of H.264 standards as 'Hierarchical B-Frame' is a part of SVC standards ?

wyti
24th August 2009, 11:44
as far as i understand it's 'Hierarchical B-Frame' who is part of h264 standart and 'B-Pyramid' is the x264 implementation of that.

akupenguin
24th August 2009, 13:23
I wouldn't call it a standard vs implementation divide.
"Referenced B-frames" and "memory control operations" are parts of the h264 standard. "B-pyramid" and "hierarchical B-frames" are things you can do those features; they describe configurations of bitstreams, not programs, but they don't have to be in the standard because they're built out of simpler concepts that are in the standard. B-pyramid is a subset of hierarchical B-frames (nothing says your hierarchy has to be exactly a pyramid).

palmman
25th August 2009, 10:16
I wouldn't call it a standard vs implementation divide.
"Referenced B-frames" and "memory control operations" are parts of the h264 standard. "B-pyramid" and "hierarchical B-frames" are things you can do those features; they describe configurations of bitstreams, not programs, but they don't have to be in the standard because they're built out of simpler concepts that are in the standard. B-pyramid is a subset of hierarchical B-frames (nothing says your hierarchy has to be exactly a pyramid).


Excuse me, what does "memory control operations" mean?

akupenguin
25th August 2009, 10:25
That's how you control which frames are referenced, and when to forget each old frame.

palmman
27th August 2009, 03:18
That's how you control which frames are referenced, and when to forget each old frame.
Got it, thanks. :)

palmman
3rd September 2009, 08:21
In HBP, can it only use single reference frame, or also use multiple reference frame?
For example, if GOP size is 4, i.e. IBBBP
These B frames will refer to previous and next frames, in others words, it uses single reference frame. How about multiple reference frame working?

Trahald
5th September 2009, 14:49
@palman
I0 b1 B2 b3 P4 b5 B6 b7 P8 ( lower case letters being "not used for reference" )

in Hierarchical B level 1 (what x264 does) in decode order with ref = 4 after the patch...
I0 refers to nothing
P4 refers to I0
B2 refers to I0 P4
b1 refers to I0 P4 B2
b3 refers to I0 P4 B2
*B2 is mmco'd out of the dpb* (to retain hierarchy)
P8 refers to I0 P4
*I0 is mmco'd out of the dpb*
B6 refers to P4 P8
b5 refers to P4 P8 B6
b7 refers to P4 P8 B6