Harald Brusewitz 5-May-95 Teracom hab@fou.svrr.se Description of the bitstream "teracom_vlc4.bin". ================================================ The purpose of the bitstream is conformance testing of MPEG-2 SP@ML decoders. The bitstream uses all VLC entries in all VLC tables (except macro-block-type and DMV). Beside that, motion compensated prediction, oddification and pel clipping may be checked. The bitstream contains 65 frame pictures (ipic=0-64), where ipic=0 is an I-picture, and ipic=1-64 are P-pictures. Picture size is 720 pels/line, 576 lines/picture. Slices are numbered isli=0-35. Macro-blocks are numbered imb=0-44. The corresponding decoded pictures "teracom_vlc3.pic" have been produced with a software decoder using double precision matrix multiplication for IDCT. intra_quantizer_matrix = non_intra_quantiser_matrix = FLAT = 16. The following topics are tested in different parts of decoded pictures (for details, see below). INTRA VLC NON-INTRA VLC CODED BLOCK PATTERN VLC HORIZONTAL MOTION VECTORS (FRAME full range for f_code=8) VERTICAL MOTION VECTORS (FRAME+FIELD full range for f_code=5) MACROBLOCK ADRESS INCREMENT VLC DC SIZE VLC NON-INTRA FIRST COEFFICIENT VLC. ODDIFICATION CLIPPING PELS TO 0,255 CLIPPING COEFFICIENTS TO -2048,2047 IDCT MISMATCH EXTRA_SLICE_INFORMATION COPY-RIGHT HEADER RESERVED EXTENSION INTRA_VLC. ---------- ipic= 1-64 isli= 1- 8 imb = 1- 8 Component (u,v) is transmitted in (imb,isli)=(1+u,1+v). Y sub-blocks 0 and 3 are used. SB0: level= ipic SB3: level=-ipic All combinations of (run,level) in the range run=0-63 level=-64 - +64 are tested. Oddification will occur for ipic=even. IDCT mismatch may occur rarely, even with floating point arithmetic. NON_INTRA_VLC. -------------- ipic= 1-64 isli= 1- 8 imb =11-18 Component (u,v) is transmitted in (imb,isli)=(11+u,1+v). Y sub-blocks 0 and 3 are used. Positive and negative values are toggled in the following way ipic=odd SB0: level= ipic SB3: level=-ipic-1 ipic=even SB0: level=-ipic+1 SB3: level= ipic All combinations of (run,level) in the range run=0-63 level=-64 - +64 are tested. Quantisers are selected such that oddification and clipping does not occur. If IDCT has the property that IDCT(level)=-IDCT(-level) decoded picture shall be mid-grey=128 when ipic=even. CODED BLOCK PATTERN (CBP) ------------------------- ipic= 1 isli= 1-15 (odd only) imb =32-35 37-40 Inter_dc=16 are transmitted such that cbp = (isli-1)*2 + imb-32 (imb=32-35) cbp = 32 + (isli-1)*2 + imb-37 (imb=37-40) HORIZONTAL MOTION VECTORS. -------------------------- ipic= 0 isli=15,31 imb = 0-2,42-44 Reference data for prediction. ipic= 1-64 FRAME isli=23 vmv = +127.5 for imb%4=1,2 -127.5 for imb%4=0,3 hmv = 704 - 16*imb - ipic/2 for imb%2=0 - 16*imb +(ipic/2 for imb%2=1 VERTICAL MOTION VECTORS. ------------------------ ipic= 0 isli= 8- 9 imb =21-22 Reference data for prediction. FRAME FIELD o-o/e-e FIELD o-e/e-o ipic= 1-64 ipic= 1-32 ipic=1-32 imb =20 imb =23 imb =25 hmv=+20 hmv=-28 hmv=-60 isli= 1 vmv= ipic/2 + 96 *) vmv= ipic/2 + 48 **) vmv= ipic/2 + 48 **) isli= 3 vmv= ipic/2 + 64 vmv= ipic/2 + 32 vmv= ipic/2 + 32 isli= 5 vmv= ipic/2 + 32 vmv= ipic/2 + 16 vmv= ipic/2 + 16 isli= 7 vmv= ipic/2 vmv= ipic/2 vmv= ipic/2 isli=10 vmv=-ipic/2 vmv=-ipic/2 vmv=-ipic/2 isli=12 vmv=-ipic/2 - 32 vmv=-ipic/2 - 16 vmv=-ipic/2 - 16 isli=14 vmv=-ipic/2 - 64 vmv=-ipic/2 - 32 vmv=-ipic/2 - 32 isli=16 vmv=-ipic/2 - 96 vmv=-ipic/2 - 48 vmv=-ipic/2 - 48 *) not for ipic=64 **) not for ipic=32 MACROBLOCK ADRESS INCREMENT. ---------------------------- ipic= 0 isli=18 imb = 0 Reference data (intra_dc=64) ipic= 1-44 isli=18 imb = ipic horisontal motion vector = -16 is transmitted. increment value = imb. DC SIZE. -------- dc_prec=8 dc_prec=9 dc_prec=10 ipic=0 ipic=1 ipic= 2 isli=11 (y) isli=13 (y) isli=15 (y) isli=12 (cb) isli=14 (cr) isli=16 (cb) imb = 7-16 imb = 7-17 imb = 7-18 imb dc_y=dc_cb dc_y=dc_cr dc_y=dc_cb 7 127 255 511 8 255 511 1023 9 0 0 0 10 64 128 256 11 96 192 384 12 112 224 448 13 120 240 480 14 124 248 496 15 126 252 504 16 127 254 508 17 - 255 510 18 - - 511 NON-INTRA FIRST COEFFICIENT. ---------------------------- ipic= 1-64 isli= 1 imb =28 mquant=29 ipic=odd run,level=(0, 1) , (0, 1) , (0, 1) eob ipic=even run,level=(0,-1) , (0,-1) , (0,-1) eob Oddification does not occur. ODDIFICATION. ------------- ipic= 1-64 isli= 3 imb =28 mquant=4 sub-block = 0 1 2 3 ipic=odd level= 1 for (u,v)=(1,0),(3,2),(5,4),(7,6) ipic=even level=-1 for (u,v)=(1,0),(3,2),(5,4),(7,6) ODDIFICATION. ------------- isli= 5 imb =28 mquant=4 sub-block = 0-3 0 1 2 3 ipic=0 intra_dc = 255 ipic=1-64 inter_dc= -1 -2 -3 -4 CLIPPING PELS TO 0,255. ----------------------- isli = 7 imb =28 mquant= 1 ipic/2=odd level= 265+ipic for (u,v)=(1,1) ipic/2=even level=-265-ipic for (u,v)=(1,1) CLIPPING COEFFICIENTS TO -2048,+2047. ------------------------------------- ipic = 1-64 isli = 9,11 imb =28 mquant= 1 level values transmitted: isli = 9 (run=1) 11 (run=4) sub-block 0 2 3 0 2 3 ipic=odd 1023 2047 1023 1023 2047 1023 even -1023 -1023 -2047 -1023 -1023 -2047 Sub-blocks 0 and 2 should decode equally. Sub-block 3 may decode slightly different. IDCT MISMATCH. -------------- ipic = 1-64 isli =32-35 imb = 0-43 mquant = 3 Only a limited IDCT mismatch test is made. Macro-blocks are grouped in 4*4 squares to cover 8*8 sub-blocks (isb=0-3). Every 8th picture is INTRA. Selected cobinations of 1-3 coefficients per sub-block are transmitted, derived with the below formulas. Deviations from reference decoded pictures may be observed, but will not be a full test of IEEE conformance. for (u=0 ; u<8 ; u++) /* DCT domain frequencies */ for (v=0 ; v<8 ; v++) level(u,v)=0; t = (ipic%8); if ( t==0 ) { mb_intra = YES; for ( isb=0 ; isb<6 ; isb++ ) level(0,0) = grey ; } else mb_intra = NO; for ( isb=0 ; isb<4 ; isb++ ) { u1 = (imb%4) *2 + isb%2 ; v1 = (isli-32)*2 + isb/2 ; level(u1,v1) += t+1 ; u2 = (imb/4)%8 ; v2 = ipic/8 ; level(u2+8*v2) += t+1 ; if ( 32<=imb && imb<36 ) level(3+8*0) += t+1 ; if ( 36<=imb && imb<40 ) level(0+8*3) += t+1 ; if ( 40<=imb && imb<44 ) level(3+8*3) += t+1 ; } EXTRA_SLICE_INFORMATION ipic=0 isli=1 16 zero bytes of extra slice information is inserrted. COPY-RIGHT HEADER A copy-right header is inserted directly after the sequence_extension. All data is zero. RESERVED EXTENSION 7 reserved_extensions (nrs 0, 6, 11, 12, 13, 14, 15) are inserted, each followed by 320 dymmy zeroes.