[XviD-devel] Bframes almost finished

Christoph Lampert xvid-devel@xvid.org
Mon, 15 Jul 2002 00:28:42 +0200 (CEST)


Hi,

I worked a little at bframes this weekend. I added direct mode
(without delta vector, but already saving bits) and corrected
some errors in decoder_bframe by MinChem

In particular the quantizer was hardcoded to 8 for blocks without
dquant-modifier, which caused image distorsion. 


My new version seems visually fine, but I have a problem which 
I want to get rid off before I commit. Have a look at this test
(Foreman QCIF, fixed quant 4, bquant_ratio=200, max_bframes=2):

I encode and decode at the same time (with an offset of 4 frames,
so it looks a little garbled)... There is lot of debug output, 
please look at the Time= N  values: 

They start fine, with 0(I) 3(P) 1(B) 2(B) 6(P) 4(B) 5(B) etc.
but then after Frame   28: and DecFrame   28: the P-frame(!) decoding
seems to "fail": it returns after 5 decoded bytes instead of 6 as usual
and the timestamp is 2 instead of 27. After that, bytestream seems to be
broken, the B-frame is identified correctly, but time_bp/time_pp is wrong
and the image gets buggy. 

Do you have any idea what could cause _P-frames_ to become broken?
This does not happen for max_bframes=0. :-(((

Christoph

----------------------------------------------------------

Frame     0: intra 1, enctime =   8.3 ms length=   5531 bytes 
Frame     1: intra 0, enctime =   1.3 ms length=      1 bytes 
Frame     2: intra 0, enctime =   1.4 ms length=      1 bytes 
Frame     3: intra 0, enctime =  44.9 ms length=   2537 bytes 
I_VOP  Time= 0
DecFrame     3: length=   5530 bytes (left:    2540)
Frame     4: intra 0, enctime =  20.0 ms length=    243 bytes 
P_VOP  Time= 3
DecFrame     4: length=   2079 bytes (left:     704)
Frame     5: intra 0, enctime =   0.2 ms length=      7 bytes 
B_VOP  Time= 1
DecFrame     5: length=    460 bytes (left:     251)
Frame     6: intra 0, enctime =  38.5 ms length=   2497 bytes 
B_VOP  Time= 2
DecFrame     6: length=    243 bytes (left:    2505)
Frame     7: intra 0, enctime =  23.8 ms length=    263 bytes 
DecFrame     7: length=      6 bytes (left:    2762)
P_VOP  Time= 6
DecFrame     7: length=   2143 bytes (left:     619)
Frame     8: intra 0, enctime =   0.2 ms length=      7 bytes 
B_VOP  Time= 4
DecFrame     8: length=    355 bytes (left:     271)
Frame     9: intra 0, enctime =  56.5 ms length=   2215 bytes 
B_VOP  Time= 5
DecFrame     9: length=    263 bytes (left:    2223)
Frame    10: intra 0, enctime =  21.3 ms length=    273 bytes 
DecFrame    10: length=      6 bytes (left:    2490)
P_VOP  Time= 9
DecFrame    10: length=   1976 bytes (left:     514)
Frame    11: intra 0, enctime =   0.2 ms length=      7 bytes 
B_VOP  Time= 7
DecFrame    11: length=    240 bytes (left:     281)
Frame    12: intra 0, enctime =  34.6 ms length=   2204 bytes 
B_VOP  Time= 8
DecFrame    12: length=    273 bytes (left:    2212)
Frame    13: intra 0, enctime =  19.5 ms length=    280 bytes 
DecFrame    13: length=      6 bytes (left:    2486)
P_VOP  Time= 12
DecFrame    13: length=   1960 bytes (left:     526)
Frame    14: intra 0, enctime =   0.2 ms length=      7 bytes 
B_VOP  Time= 10
DecFrame    14: length=    245 bytes (left:     288)
Frame    15: intra 0, enctime =  33.7 ms length=   1985 bytes 
B_VOP  Time= 11
DecFrame    15: length=    280 bytes (left:    1993)
Frame    16: intra 0, enctime =  18.2 ms length=    215 bytes 
DecFrame    16: length=      6 bytes (left:    2202)
P_VOP  Time= 15
DecFrame    16: length=   1784 bytes (left:     418)
Frame    17: intra 0, enctime =   0.2 ms length=      7 bytes 
B_VOP  Time= 13
DecFrame    17: length=    202 bytes (left:     223)
Frame    18: intra 0, enctime =  33.8 ms length=   2240 bytes 
B_VOP  Time= 14
DecFrame    18: length=    216 bytes (left:    2247)
Frame    19: intra 0, enctime =  22.9 ms length=    276 bytes 
DecFrame    19: length=      5 bytes (left:    2518)
P_VOP  Time= 18
DecFrame    19: length=   1926 bytes (left:     592)
Frame    20: intra 0, enctime =   0.2 ms length=      7 bytes 
B_VOP  Time= 16
DecFrame    20: length=    315 bytes (left:     284)
Frame    21: intra 0, enctime =  36.1 ms length=   2495 bytes 
B_VOP  Time= 17
DecFrame    21: length=    276 bytes (left:    2503)
Frame    22: intra 0, enctime =  19.7 ms length=    395 bytes 
DecFrame    22: length=      6 bytes (left:    2892)
P_VOP  Time= 21
DecFrame    22: length=   2094 bytes (left:     798)
Frame    23: intra 0, enctime =   0.2 ms length=      7 bytes 
B_VOP  Time= 19
DecFrame    23: length=    402 bytes (left:     403)
Frame    24: intra 0, enctime =  33.0 ms length=   1924 bytes 
B_VOP  Time= 20
DecFrame    24: length=    395 bytes (left:    1932)
Frame    25: intra 0, enctime =  19.5 ms length=    209 bytes 
DecFrame    25: length=      6 bytes (left:    2135)
P_VOP  Time= 24
DecFrame    25: length=   1606 bytes (left:     529)
Frame    26: intra 0, enctime =   0.2 ms length=      7 bytes 
B_VOP  Time= 22
DecFrame    26: length=    319 bytes (left:     217)
Frame    27: intra 0, enctime =  40.4 ms length=   1958 bytes 
B_VOP  Time= 23
DecFrame    27: length=    210 bytes (left:    1965)
Frame    28: intra 0, enctime =  17.7 ms length=    244 bytes 
DecFrame    28: length=      5 bytes (left:    2204)          <-- broken?
P_VOP  Time= 2
DecFrame    28: length=   1770 bytes (left:     434)
Frame    29: intra 0, enctime =   0.2 ms length=      7 bytes 
dec->time_pp -22
dec->time_bp -22
broken B-frame!
DecFrame    29: length=      8 bytes (left:     433)
Frame    30: intra 0, enctime =  38.2 ms length=   2360 bytes 
dec->time_pp -22
dec->time_bp 1
B_VOP  Time= 1
DecFrame    30: length=    425 bytes (left:    2368)
Frame    31: intra 0, enctime =  19.1 ms length=    274 bytes 
DecFrame    31: length=      6 bytes (left:    2636)
P_VOP  Time= 5
DecFrame    31: length=   2085 bytes (left:     551)
Frame    32: intra 0, enctime =   0.2 ms length=      7 bytes 
dec->time_pp 3
dec->time_bp 2
B_VOP  Time= 3
DecFrame    32: length=    276 bytes (left:     282)
Frame    33: intra 0, enctime =  38.3 ms length=   2312 bytes 
dec->time_pp 3
dec->time_bp 1
B_VOP  Time= 4
DecFrame    33: length=    274 bytes (left:    2320)
Frame    34: intra 0, enctime =  21.0 ms length=    314 bytes 
DecFrame    34: length=      6 bytes (left:    2628)
P_VOP  Time= 8
DecFrame    34: length=   2089 bytes (left:     539)





-- 
Christoph H. Lampert chl@math.uni-bonn.de | Diese Signature wurde maschi-     
Beringstr. 6, Raum 14 Tel. (0228) 73-2948 | nell erstellt und bedarf
Sprechstunden: keine, aber meistens da    | keiner Unterschrift. AZ 27B-6