Line 1... |
Line 1... |
//**********************************************************************
|
//**********************************************************************
|
// Entropy Decoder (parser) implementation
|
// Entropy Decoder implementation
|
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
// Section 7 in spec
|
|
//
|
//
|
//
|
//
|
|
|
package mkEntropyDec;
|
package mkEntropyDec;
|
|
|
Line 184... |
Line 183... |
begin
|
begin
|
infifo.deq();
|
infifo.deq();
|
nalrefidc <= rdata[6:5];
|
nalrefidc <= rdata[6:5];
|
nalunittype <= rdata[4:0];
|
nalunittype <= rdata[4:0];
|
case (rdata[4:0])
|
case (rdata[4:0])
|
1 : state <= CodedSlice (0);
|
1 : state <= CodedSlice 0;
|
5 : state <= CodedSlice (0);
|
5 : state <= CodedSlice 0;
|
6 : state <= SEI;
|
6 : state <= SEI;
|
7 : state <= SPS (0);
|
7 : state <= SPS 0;
|
8 : state <= PPS (0);
|
8 : state <= PPS 0;
|
9 : state <= AUD;
|
9 : state <= AUD;
|
10: state <= EndSequence;
|
10: state <= EndSequence;
|
11: state <= EndStream;
|
11: state <= EndStream;
|
12: state <= Filler;
|
12: state <= Filler;
|
default:
|
default:
|
Line 201... |
Line 200... |
state <= Start;
|
state <= Start;
|
end
|
end
|
endcase
|
endcase
|
$display("ccl2newunit");
|
$display("ccl2newunit");
|
$display("ccl2rbspbyte %h", rdata);
|
$display("ccl2rbspbyte %h", rdata);
|
outfifo.enq(NewUnit (rdata));
|
outfifo.enq(NewUnit rdata);
|
outfifo_ITB.enq(NewUnit (rdata));
|
outfifo_ITB.enq(NewUnit rdata);
|
end
|
end
|
tagged EndOfFile : state <= Start;
|
tagged EndOfFile : state <= Start;
|
endcase
|
endcase
|
endrule
|
endrule
|
|
|
Line 275... |
Line 274... |
begin
|
begin
|
case ( step )
|
case ( step )
|
0:
|
0:
|
begin
|
begin
|
$display( "ccl2SHfirst_mb_in_slice %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHfirst_mb_in_slice %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHfirst_mb_in_slice (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHfirst_mb_in_slice truncate(expgolomb_unsigned(buffer)));
|
currMbAddr <= truncate(expgolomb_unsigned(buffer));
|
currMbAddr <= truncate(expgolomb_unsigned(buffer));
|
calcnc.initialize(truncate(expgolomb_unsigned(buffer)));
|
calcnc.initialize(truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (1);
|
nextstate = CodedSlice 1;
|
end
|
end
|
1:
|
1:
|
begin
|
begin
|
$display( "ccl2SHslice_type %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHslice_type %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHslice_type (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHslice_type truncate(expgolomb_unsigned(buffer)));
|
shslice_type <= truncate(expgolomb_unsigned(buffer));
|
shslice_type <= truncate(expgolomb_unsigned(buffer));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (2);
|
nextstate = CodedSlice 2;
|
end
|
end
|
2:
|
2:
|
begin
|
begin
|
$display( "ccl2SHpic_parameter_set_id %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHpic_parameter_set_id %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHpic_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (3);
|
nextstate = CodedSlice 3;
|
if(ppspic_parameter_set_id != truncate(expgolomb_unsigned(buffer))) $display( "ERROR EntropyDec: pic_parameter_set_id don't match" );
|
if(ppspic_parameter_set_id != truncate(expgolomb_unsigned(buffer))) $display( "ERROR EntropyDec: pic_parameter_set_id don't match" );
|
end
|
end
|
3:
|
3:
|
begin
|
begin
|
Bit#(16) tttt = buffer[buffersize-1:buffersize-16];
|
Bit#(16) tttt = buffer[buffersize-1:buffersize-16];
|
tttt = tttt >> 16 - zeroExtend(spslog2_max_frame_num);
|
tttt = tttt >> 16 - zeroExtend(spslog2_max_frame_num);
|
$display( "ccl2SHframe_num %0d", tttt );
|
$display( "ccl2SHframe_num %0d", tttt );
|
outfifo.enq(SHframe_num (tttt));
|
outfifo.enq(SHframe_num tttt);
|
numbitsused = zeroExtend(spslog2_max_frame_num);
|
numbitsused = zeroExtend(spslog2_max_frame_num);
|
nextstate = CodedSlice (4);
|
nextstate = CodedSlice 4;
|
end
|
end
|
4:
|
4:
|
begin
|
begin
|
if(nalunittype == 5)
|
if(nalunittype == 5)
|
begin
|
begin
|
$display( "ccl2SHidr_pic_id %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHidr_pic_id %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHidr_pic_id (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHidr_pic_id truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
end
|
end
|
nextstate = CodedSlice (5);
|
nextstate = CodedSlice 5;
|
end
|
end
|
5:
|
5:
|
begin
|
begin
|
if(spspic_order_cnt_type == 0)
|
if(spspic_order_cnt_type == 0)
|
begin
|
begin
|
Bit#(16) tttt = buffer[buffersize-1:buffersize-16];
|
Bit#(16) tttt = buffer[buffersize-1:buffersize-16];
|
tttt = tttt >> 16 - zeroExtend(spslog2_max_pic_order_cnt_lsb);
|
tttt = tttt >> 16 - zeroExtend(spslog2_max_pic_order_cnt_lsb);
|
$display( "ccl2SHpic_order_cnt_lsb %0d", tttt );
|
$display( "ccl2SHpic_order_cnt_lsb %0d", tttt );
|
outfifo.enq(SHpic_order_cnt_lsb (tttt));
|
outfifo.enq(SHpic_order_cnt_lsb tttt);
|
numbitsused = zeroExtend(spslog2_max_pic_order_cnt_lsb);
|
numbitsused = zeroExtend(spslog2_max_pic_order_cnt_lsb);
|
nextstate = CodedSlice (6);
|
nextstate = CodedSlice 6;
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (7);
|
nextstate = CodedSlice 7;
|
end
|
end
|
6:
|
6:
|
begin
|
begin
|
if(ppspic_order_present_flag == 1)
|
if(ppspic_order_present_flag == 1)
|
begin
|
begin
|
if(egnumbits == 0)
|
if(egnumbits == 0)
|
begin
|
begin
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
egnumbits <= tempbufcount;
|
egnumbits <= tempbufcount;
|
numbitsused = tempbufcount-1;
|
numbitsused = tempbufcount-1;
|
nextstate = CodedSlice (6);
|
nextstate = CodedSlice 6;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
$display( "ccl2SHdelta_pic_order_cnt_bottom %0d", tempint32 );
|
$display( "ccl2SHdelta_pic_order_cnt_bottom %0d", tempint32 );
|
outfifo.enq(SHdelta_pic_order_cnt_bottom (truncate(expgolomb_signed32(buffer,egnumbits))));
|
outfifo.enq(SHdelta_pic_order_cnt_bottom truncate(expgolomb_signed32(buffer,egnumbits)));
|
egnumbits <= 0;
|
egnumbits <= 0;
|
numbitsused = egnumbits;
|
numbitsused = egnumbits;
|
nextstate = CodedSlice (7);
|
nextstate = CodedSlice 7;
|
end
|
end
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (7);
|
nextstate = CodedSlice 7;
|
end
|
end
|
7:
|
7:
|
begin
|
begin
|
if(spspic_order_cnt_type == 1 && spsdelta_pic_order_always_zero_flag == 0)
|
if(spspic_order_cnt_type == 1 && spsdelta_pic_order_always_zero_flag == 0)
|
begin
|
begin
|
if(egnumbits == 0)
|
if(egnumbits == 0)
|
begin
|
begin
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
egnumbits <= tempbufcount;
|
egnumbits <= tempbufcount;
|
numbitsused = tempbufcount-1;
|
numbitsused = tempbufcount-1;
|
nextstate = CodedSlice (7);
|
nextstate = CodedSlice 7;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
$display( "ccl2SHdelta_pic_order_cnt0 %0d", tempint32 );
|
$display( "ccl2SHdelta_pic_order_cnt0 %0d", tempint32 );
|
outfifo.enq(SHdelta_pic_order_cnt0 (truncate(expgolomb_signed32(buffer,egnumbits))));
|
outfifo.enq(SHdelta_pic_order_cnt0 truncate(expgolomb_signed32(buffer,egnumbits)));
|
egnumbits <= 0;
|
egnumbits <= 0;
|
numbitsused = egnumbits;
|
numbitsused = egnumbits;
|
nextstate = CodedSlice (8);
|
nextstate = CodedSlice 8;
|
end
|
end
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (9);
|
nextstate = CodedSlice 9;
|
end
|
end
|
8:
|
8:
|
begin
|
begin
|
if(ppspic_order_present_flag == 1)
|
if(ppspic_order_present_flag == 1)
|
begin
|
begin
|
if(egnumbits == 0)
|
if(egnumbits == 0)
|
begin
|
begin
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
egnumbits <= tempbufcount;
|
egnumbits <= tempbufcount;
|
numbitsused = tempbufcount-1;
|
numbitsused = tempbufcount-1;
|
nextstate = CodedSlice (8);
|
nextstate = CodedSlice 8;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
$display( "ccl2SHdelta_pic_order_cnt1 %0d", tempint32 );
|
$display( "ccl2SHdelta_pic_order_cnt1 %0d", tempint32 );
|
outfifo.enq(SHdelta_pic_order_cnt1 (truncate(expgolomb_signed32(buffer,egnumbits))));
|
outfifo.enq(SHdelta_pic_order_cnt1 truncate(expgolomb_signed32(buffer,egnumbits)));
|
egnumbits <= 0;
|
egnumbits <= 0;
|
numbitsused = egnumbits;
|
numbitsused = egnumbits;
|
nextstate = CodedSlice (9);
|
nextstate = CodedSlice 9;
|
end
|
end
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (9);
|
nextstate = CodedSlice 9;
|
end
|
end
|
9:
|
9:
|
begin
|
begin
|
if(shslice_type == 0 || shslice_type == 5)
|
if(shslice_type == 0 || shslice_type == 5)
|
begin
|
begin
|
$display( "ccl2SHnum_ref_idx_active_override_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2SHnum_ref_idx_active_override_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(SHnum_ref_idx_active_override_flag (buffer[buffersize-1]));
|
outfifo.enq(SHnum_ref_idx_active_override_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
if(buffer[buffersize-1] == 1)
|
if(buffer[buffersize-1] == 1)
|
nextstate = CodedSlice (10);
|
nextstate = CodedSlice 10;
|
else
|
else
|
nextstate = CodedSlice (11);
|
nextstate = CodedSlice 11;
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (11);
|
nextstate = CodedSlice 11;
|
end
|
end
|
10:
|
10:
|
begin
|
begin
|
$display( "ccl2SHnum_ref_idx_l0_active %0d", expgolomb_unsigned(buffer)+1 );
|
$display( "ccl2SHnum_ref_idx_l0_active %0d", expgolomb_unsigned(buffer)+1 );
|
outfifo.enq(SHnum_ref_idx_l0_active (truncate(expgolomb_unsigned(buffer)+1)));
|
outfifo.enq(SHnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1));
|
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer));
|
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (11);
|
nextstate = CodedSlice 11;
|
end
|
end
|
11:
|
11:
|
begin
|
begin
|
if(shslice_type != 2 && shslice_type != 7)
|
if(shslice_type != 2 && shslice_type != 7)
|
begin
|
begin
|
$display( "ccl2SHRref_pic_list_reordering_flag_l0 %0d", buffer[buffersize-1] );
|
$display( "ccl2SHRref_pic_list_reordering_flag_l0 %0d", buffer[buffersize-1] );
|
outfifo.enq(SHRref_pic_list_reordering_flag_l0 (buffer[buffersize-1]));
|
outfifo.enq(SHRref_pic_list_reordering_flag_l0 buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
if(buffer[buffersize-1] == 1)
|
if(buffer[buffersize-1] == 1)
|
nextstate = CodedSlice (12);
|
nextstate = CodedSlice 12;
|
else
|
else
|
nextstate = CodedSlice (15);
|
nextstate = CodedSlice 15;
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (15);
|
nextstate = CodedSlice 15;
|
end
|
end
|
12:
|
12:
|
begin
|
begin
|
$display( "ccl2SHRreordering_of_pic_nums_idc %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHRreordering_of_pic_nums_idc %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHRreordering_of_pic_nums_idc (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHRreordering_of_pic_nums_idc truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
if(expgolomb_unsigned(buffer)==0 || expgolomb_unsigned(buffer)==1)
|
if(expgolomb_unsigned(buffer)==0 || expgolomb_unsigned(buffer)==1)
|
nextstate = CodedSlice (13);
|
nextstate = CodedSlice 13;
|
else if(expgolomb_unsigned(buffer)==2)
|
else if(expgolomb_unsigned(buffer)==2)
|
nextstate = CodedSlice (14);
|
nextstate = CodedSlice 14;
|
else
|
else
|
nextstate = CodedSlice (15);
|
nextstate = CodedSlice 15;
|
end
|
end
|
13:
|
13:
|
begin
|
begin
|
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1;
|
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1;
|
$display( "ccl2SHRabs_diff_pic_num %0d", temp17 );
|
$display( "ccl2SHRabs_diff_pic_num %0d", temp17 );
|
outfifo.enq(SHRabs_diff_pic_num (temp17));
|
outfifo.enq(SHRabs_diff_pic_num temp17);
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (12);
|
nextstate = CodedSlice 12;
|
end
|
end
|
14:
|
14:
|
begin
|
begin
|
$display( "ccl2SHRlong_term_pic_num %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHRlong_term_pic_num %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHRlong_term_pic_num (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHRlong_term_pic_num truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (12);
|
nextstate = CodedSlice 12;
|
end
|
end
|
15:
|
15:
|
begin
|
begin
|
if(nalrefidc == 0)
|
if(nalrefidc == 0)
|
nextstate = CodedSlice (23);
|
nextstate = CodedSlice 23;
|
else
|
else
|
begin
|
begin
|
if(nalunittype == 5)
|
if(nalunittype == 5)
|
begin
|
begin
|
$display( "ccl2SHDno_output_of_prior_pics_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2SHDno_output_of_prior_pics_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(SHDno_output_of_prior_pics_flag (buffer[buffersize-1]));
|
outfifo.enq(SHDno_output_of_prior_pics_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = CodedSlice (16);
|
nextstate = CodedSlice 16;
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (17);
|
nextstate = CodedSlice 17;
|
end
|
end
|
end
|
end
|
16:
|
16:
|
begin
|
begin
|
$display( "ccl2SHDlong_term_reference_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2SHDlong_term_reference_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(SHDlong_term_reference_flag (buffer[buffersize-1]));
|
outfifo.enq(SHDlong_term_reference_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = CodedSlice (23);
|
nextstate = CodedSlice 23;
|
end
|
end
|
17:
|
17:
|
begin
|
begin
|
$display( "ccl2SHDadaptive_ref_pic_marking_mode_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2SHDadaptive_ref_pic_marking_mode_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(SHDadaptive_ref_pic_marking_mode_flag (buffer[buffersize-1]));
|
outfifo.enq(SHDadaptive_ref_pic_marking_mode_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
if(buffer[buffersize-1] == 1)
|
if(buffer[buffersize-1] == 1)
|
nextstate = CodedSlice (18);
|
nextstate = CodedSlice 18;
|
else
|
else
|
nextstate = CodedSlice (23);
|
nextstate = CodedSlice 23;
|
end
|
end
|
18:
|
18:
|
begin
|
begin
|
$display( "ccl2SHDmemory_management_control_operation %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHDmemory_management_control_operation %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHDmemory_management_control_operation (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHDmemory_management_control_operation truncate(expgolomb_unsigned(buffer)));
|
shdmemory_management_control_operation <= truncate(expgolomb_unsigned(buffer));
|
shdmemory_management_control_operation <= truncate(expgolomb_unsigned(buffer));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
if(expgolomb_unsigned(buffer)!=0)
|
if(expgolomb_unsigned(buffer)!=0)
|
nextstate = CodedSlice (19);
|
nextstate = CodedSlice 19;
|
else
|
else
|
nextstate = CodedSlice (23);
|
nextstate = CodedSlice 23;
|
end
|
end
|
19:
|
19:
|
begin
|
begin
|
if(shdmemory_management_control_operation==1 || shdmemory_management_control_operation==3)
|
if(shdmemory_management_control_operation==1 || shdmemory_management_control_operation==3)
|
begin
|
begin
|
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1;
|
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1;
|
$display( "ccl2SHDdifference_of_pic_nums %0d", temp17 );
|
$display( "ccl2SHDdifference_of_pic_nums %0d", temp17 );
|
outfifo.enq(SHDdifference_of_pic_nums (temp17));
|
outfifo.enq(SHDdifference_of_pic_nums temp17);
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (20);
|
nextstate = CodedSlice 20;
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (20);
|
nextstate = CodedSlice 20;
|
end
|
end
|
20:
|
20:
|
begin
|
begin
|
if(shdmemory_management_control_operation==2)
|
if(shdmemory_management_control_operation==2)
|
begin
|
begin
|
$display( "ccl2SHDlong_term_pic_num %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHDlong_term_pic_num %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHDlong_term_pic_num (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHDlong_term_pic_num truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (21);
|
nextstate = CodedSlice 21;
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (21);
|
nextstate = CodedSlice 21;
|
end
|
end
|
21:
|
21:
|
begin
|
begin
|
if(shdmemory_management_control_operation==3 || shdmemory_management_control_operation==6)
|
if(shdmemory_management_control_operation==3 || shdmemory_management_control_operation==6)
|
begin
|
begin
|
$display( "ccl2SHDlong_term_frame_idx %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHDlong_term_frame_idx %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHDlong_term_frame_idx (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHDlong_term_frame_idx truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (22);
|
nextstate = CodedSlice 22;
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (22);
|
nextstate = CodedSlice 22;
|
end
|
end
|
22:
|
22:
|
begin
|
begin
|
if(shdmemory_management_control_operation==4)
|
if(shdmemory_management_control_operation==4)
|
begin
|
begin
|
$display( "ccl2SHDmax_long_term_frame_idx_plus1 %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHDmax_long_term_frame_idx_plus1 %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHDmax_long_term_frame_idx_plus1 (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHDmax_long_term_frame_idx_plus1 truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (18);
|
nextstate = CodedSlice 18;
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (18);
|
nextstate = CodedSlice 18;
|
end
|
end
|
23:
|
23:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SHslice_qp_delta %0d", tempint );
|
$display( "ccl2SHslice_qp_delta %0d", tempint );
|
outfifo_ITB.enq(SHslice_qp_delta (truncate(expgolomb_signed(buffer))));
|
outfifo_ITB.enq(SHslice_qp_delta truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (24);
|
nextstate = CodedSlice 24;
|
end
|
end
|
24:
|
24:
|
begin
|
begin
|
if(ppsdeblocking_filter_control_present_flag==1)
|
if(ppsdeblocking_filter_control_present_flag==1)
|
begin
|
begin
|
$display( "ccl2SHdisable_deblocking_filter_idc %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SHdisable_deblocking_filter_idc %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SHdisable_deblocking_filter_idc (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SHdisable_deblocking_filter_idc truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
if(expgolomb_unsigned(buffer)!=1)
|
if(expgolomb_unsigned(buffer)!=1)
|
nextstate = CodedSlice (25);
|
nextstate = CodedSlice 25;
|
else
|
else
|
nextstate = CodedSlice (27);
|
nextstate = CodedSlice 27;
|
end
|
end
|
else
|
else
|
nextstate = CodedSlice (27);
|
nextstate = CodedSlice 27;
|
end
|
end
|
25:
|
25:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer) << 1);
|
tempint = unpack(expgolomb_signed(buffer) << 1);
|
$display( "ccl2SHslice_alpha_c0_offset %0d", tempint );
|
$display( "ccl2SHslice_alpha_c0_offset %0d", tempint );
|
outfifo.enq(SHslice_alpha_c0_offset (truncate(expgolomb_signed(buffer) << 1)));
|
outfifo.enq(SHslice_alpha_c0_offset truncate(expgolomb_signed(buffer) << 1));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (26);
|
nextstate = CodedSlice 26;
|
end
|
end
|
26:
|
26:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer) << 1);
|
tempint = unpack(expgolomb_signed(buffer) << 1);
|
$display( "ccl2SHslice_beta_offset %0d", tempint );
|
$display( "ccl2SHslice_beta_offset %0d", tempint );
|
outfifo.enq(SHslice_beta_offset (truncate(expgolomb_signed(buffer) << 1)));
|
outfifo.enq(SHslice_beta_offset truncate(expgolomb_signed(buffer) << 1));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = CodedSlice (27);
|
nextstate = CodedSlice 27;
|
end
|
end
|
27:
|
27:
|
begin
|
begin
|
nextstate = SliceData (0);
|
nextstate = SliceData 0;
|
end
|
end
|
default: $display( "ERROR EntropyDec: CodedSlice default step" );
|
default: $display( "ERROR EntropyDec: CodedSlice default step" );
|
endcase
|
endcase
|
end
|
end
|
tagged SEI .step :
|
tagged SEI .step :
|
Line 624... |
Line 623... |
outputdata = buffer[buffersize-9:buffersize-16];
|
outputdata = buffer[buffersize-9:buffersize-16];
|
$display( "INFO EntropyDec: constraint_set = %b", outputdata );
|
$display( "INFO EntropyDec: constraint_set = %b", outputdata );
|
outputdata = buffer[buffersize-17:buffersize-24];
|
outputdata = buffer[buffersize-17:buffersize-24];
|
$display( "INFO EntropyDec: level_idc = %d", outputdata );
|
$display( "INFO EntropyDec: level_idc = %d", outputdata );
|
numbitsused = 24;
|
numbitsused = 24;
|
nextstate = SPS (1);
|
nextstate = SPS 1;
|
end
|
end
|
1:
|
1:
|
begin
|
begin
|
$display( "ccl2SPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SPSseq_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer)));
|
spsseq_parameter_set_id <= truncate(expgolomb_unsigned(buffer));
|
spsseq_parameter_set_id <= truncate(expgolomb_unsigned(buffer));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (2);
|
nextstate = SPS 2;
|
end
|
end
|
2:
|
2:
|
begin
|
begin
|
$display( "ccl2SPSlog2_max_frame_num %0d", expgolomb_unsigned(buffer)+4 );
|
$display( "ccl2SPSlog2_max_frame_num %0d", expgolomb_unsigned(buffer)+4 );
|
outfifo.enq(SPSlog2_max_frame_num (truncate(expgolomb_unsigned(buffer)+4)));
|
outfifo.enq(SPSlog2_max_frame_num truncate(expgolomb_unsigned(buffer)+4));
|
spslog2_max_frame_num <= truncate(expgolomb_unsigned(buffer)+4);
|
spslog2_max_frame_num <= truncate(expgolomb_unsigned(buffer)+4);
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (3);
|
nextstate = SPS 3;
|
end
|
end
|
3:
|
3:
|
begin
|
begin
|
let tttt = expgolomb_unsigned(buffer);
|
let tttt = expgolomb_unsigned(buffer);
|
$display( "ccl2SPSpic_order_cnt_type %0d", tttt );
|
$display( "ccl2SPSpic_order_cnt_type %0d", tttt );
|
outfifo.enq(SPSpic_order_cnt_type (truncate(tttt)));
|
outfifo.enq(SPSpic_order_cnt_type truncate(tttt));
|
spspic_order_cnt_type <= truncate(tttt);
|
spspic_order_cnt_type <= truncate(tttt);
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
if(tttt == 0)
|
if(tttt == 0)
|
nextstate = SPS (4);
|
nextstate = SPS 4;
|
else if(tttt == 1)
|
else if(tttt == 1)
|
nextstate = SPS (5);
|
nextstate = SPS 5;
|
else
|
else
|
nextstate = SPS (10);
|
nextstate = SPS 10;
|
end
|
end
|
4:
|
4:
|
begin
|
begin
|
$display( "ccl2SPSlog2_max_pic_order_cnt_lsb %0d", expgolomb_unsigned(buffer)+4 );
|
$display( "ccl2SPSlog2_max_pic_order_cnt_lsb %0d", expgolomb_unsigned(buffer)+4 );
|
outfifo.enq(SPSlog2_max_pic_order_cnt_lsb (truncate(expgolomb_unsigned(buffer)+4)));
|
outfifo.enq(SPSlog2_max_pic_order_cnt_lsb truncate(expgolomb_unsigned(buffer)+4));
|
spslog2_max_pic_order_cnt_lsb <= truncate(expgolomb_unsigned(buffer)+4);
|
spslog2_max_pic_order_cnt_lsb <= truncate(expgolomb_unsigned(buffer)+4);
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (10);
|
nextstate = SPS 10;
|
end
|
end
|
5:
|
5:
|
begin
|
begin
|
$display( "ccl2SPSdelta_pic_order_always_zero_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2SPSdelta_pic_order_always_zero_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(SPSdelta_pic_order_always_zero_flag (buffer[buffersize-1]));
|
outfifo.enq(SPSdelta_pic_order_always_zero_flag buffer[buffersize-1]);
|
spsdelta_pic_order_always_zero_flag <= buffer[buffersize-1];
|
spsdelta_pic_order_always_zero_flag <= buffer[buffersize-1];
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = SPS (6);
|
nextstate = SPS 6;
|
end
|
end
|
6:
|
6:
|
begin
|
begin
|
if(egnumbits == 0)
|
if(egnumbits == 0)
|
begin
|
begin
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
egnumbits <= tempbufcount;
|
egnumbits <= tempbufcount;
|
numbitsused = tempbufcount-1;
|
numbitsused = tempbufcount-1;
|
nextstate = SPS (6);
|
nextstate = SPS 6;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
$display( "ccl2SPSoffset_for_non_ref_pic %0d", tempint32 );
|
$display( "ccl2SPSoffset_for_non_ref_pic %0d", tempint32 );
|
outfifo.enq(SPSoffset_for_non_ref_pic (truncate(expgolomb_signed32(buffer,egnumbits))));
|
outfifo.enq(SPSoffset_for_non_ref_pic truncate(expgolomb_signed32(buffer,egnumbits)));
|
egnumbits <= 0;
|
egnumbits <= 0;
|
numbitsused = egnumbits;
|
numbitsused = egnumbits;
|
nextstate = SPS (7);
|
nextstate = SPS 7;
|
end
|
end
|
end
|
end
|
7:
|
7:
|
begin
|
begin
|
if(egnumbits == 0)
|
if(egnumbits == 0)
|
begin
|
begin
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
egnumbits <= tempbufcount;
|
egnumbits <= tempbufcount;
|
numbitsused = tempbufcount-1;
|
numbitsused = tempbufcount-1;
|
nextstate = SPS (7);
|
nextstate = SPS 7;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
$display( "ccl2SPSoffset_for_top_to_bottom_field %0d", tempint32 );
|
$display( "ccl2SPSoffset_for_top_to_bottom_field %0d", tempint32 );
|
outfifo.enq(SPSoffset_for_top_to_bottom_field (truncate(expgolomb_signed32(buffer,egnumbits))));
|
outfifo.enq(SPSoffset_for_top_to_bottom_field truncate(expgolomb_signed32(buffer,egnumbits)));
|
egnumbits <= 0;
|
egnumbits <= 0;
|
numbitsused = egnumbits;
|
numbitsused = egnumbits;
|
nextstate = SPS (8);
|
nextstate = SPS 8;
|
end
|
end
|
end
|
end
|
8:
|
8:
|
begin
|
begin
|
$display( "ccl2SPSnum_ref_frames_in_pic_order_cnt_cycle %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SPSnum_ref_frames_in_pic_order_cnt_cycle %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SPSnum_ref_frames_in_pic_order_cnt_cycle (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SPSnum_ref_frames_in_pic_order_cnt_cycle truncate(expgolomb_unsigned(buffer)));
|
spsnum_ref_frames_in_pic_order_cnt_cycle <= truncate(expgolomb_unsigned(buffer));
|
spsnum_ref_frames_in_pic_order_cnt_cycle <= truncate(expgolomb_unsigned(buffer));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (9);
|
nextstate = SPS 9;
|
end
|
end
|
9:
|
9:
|
begin
|
begin
|
if(spsnum_ref_frames_in_pic_order_cnt_cycle == 0)
|
if(spsnum_ref_frames_in_pic_order_cnt_cycle == 0)
|
nextstate = SPS (10);
|
nextstate = SPS 10;
|
else
|
else
|
begin
|
begin
|
if(egnumbits == 0)
|
if(egnumbits == 0)
|
begin
|
begin
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
Bufcount tempbufcount = expgolomb_numbits32(buffer);
|
egnumbits <= tempbufcount;
|
egnumbits <= tempbufcount;
|
numbitsused = tempbufcount-1;
|
numbitsused = tempbufcount-1;
|
nextstate = SPS (9);
|
nextstate = SPS 9;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
|
$display( "ccl2SPSoffset_for_ref_frame %0d", tempint32 );
|
$display( "ccl2SPSoffset_for_ref_frame %0d", tempint32 );
|
outfifo.enq(SPSoffset_for_ref_frame (truncate(expgolomb_signed32(buffer,egnumbits))));
|
outfifo.enq(SPSoffset_for_ref_frame truncate(expgolomb_signed32(buffer,egnumbits)));
|
egnumbits <= 0;
|
egnumbits <= 0;
|
spsnum_ref_frames_in_pic_order_cnt_cycle <= spsnum_ref_frames_in_pic_order_cnt_cycle - 1;
|
spsnum_ref_frames_in_pic_order_cnt_cycle <= spsnum_ref_frames_in_pic_order_cnt_cycle - 1;
|
numbitsused = egnumbits;
|
numbitsused = egnumbits;
|
nextstate = SPS (9);
|
nextstate = SPS 9;
|
end
|
end
|
end
|
end
|
end
|
end
|
10:
|
10:
|
begin
|
begin
|
$display( "ccl2SPSnum_ref_frames %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SPSnum_ref_frames %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SPSnum_ref_frames (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SPSnum_ref_frames truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (11);
|
nextstate = SPS 11;
|
end
|
end
|
11:
|
11:
|
begin
|
begin
|
$display( "ccl2SPSgaps_in_frame_num_allowed_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2SPSgaps_in_frame_num_allowed_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(SPSgaps_in_frame_num_allowed_flag (buffer[buffersize-1]));
|
outfifo.enq(SPSgaps_in_frame_num_allowed_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = SPS (12);
|
nextstate = SPS 12;
|
end
|
end
|
12:
|
12:
|
begin
|
begin
|
$display( "ccl2SPSpic_width_in_mbs %0d", expgolomb_unsigned(buffer)+1 );
|
$display( "ccl2SPSpic_width_in_mbs %0d", expgolomb_unsigned(buffer)+1 );
|
outfifo.enq(SPSpic_width_in_mbs (truncate(expgolomb_unsigned(buffer)+1)));
|
outfifo.enq(SPSpic_width_in_mbs truncate(expgolomb_unsigned(buffer)+1));
|
calcnc.initialize_picWidth(truncate(expgolomb_unsigned(buffer)+1));
|
calcnc.initialize_picWidth(truncate(expgolomb_unsigned(buffer)+1));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (13);
|
nextstate = SPS 13;
|
end
|
end
|
13:
|
13:
|
begin
|
begin
|
$display( "ccl2SPSpic_height_in_map_units %0d", expgolomb_unsigned(buffer)+1 );
|
$display( "ccl2SPSpic_height_in_map_units %0d", expgolomb_unsigned(buffer)+1 );
|
outfifo.enq(SPSpic_height_in_map_units (truncate(expgolomb_unsigned(buffer)+1)));
|
outfifo.enq(SPSpic_height_in_map_units truncate(expgolomb_unsigned(buffer)+1));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (14);
|
nextstate = SPS 14;
|
end
|
end
|
14:
|
14:
|
begin
|
begin
|
//SPSframe_mbs_only_flag = 1 for baseline
|
//SPSframe_mbs_only_flag = 1 for baseline
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = SPS (15);
|
nextstate = SPS 15;
|
end
|
end
|
15:
|
15:
|
begin
|
begin
|
$display( "ccl2SPSdirect_8x8_inference_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2SPSdirect_8x8_inference_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(SPSdirect_8x8_inference_flag (buffer[buffersize-1]));
|
outfifo.enq(SPSdirect_8x8_inference_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = SPS (16);
|
nextstate = SPS 16;
|
end
|
end
|
16:
|
16:
|
begin
|
begin
|
$display( "ccl2SPSframe_cropping_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2SPSframe_cropping_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(SPSframe_cropping_flag (buffer[buffersize-1]));
|
outfifo.enq(SPSframe_cropping_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
if(buffer[buffersize-1] == 1)
|
if(buffer[buffersize-1] == 1)
|
nextstate = SPS (17);
|
nextstate = SPS 17;
|
else
|
else
|
nextstate = SPS (21);
|
nextstate = SPS 21;
|
end
|
end
|
17:
|
17:
|
begin
|
begin
|
$display( "ccl2SPSframe_crop_left_offset %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SPSframe_crop_left_offset %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SPSframe_crop_left_offset (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SPSframe_crop_left_offset truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (18);
|
nextstate = SPS 18;
|
end
|
end
|
18:
|
18:
|
begin
|
begin
|
$display( "ccl2SPSframe_crop_right_offset %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SPSframe_crop_right_offset %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SPSframe_crop_right_offset (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SPSframe_crop_right_offset truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (19);
|
nextstate = SPS 19;
|
end
|
end
|
19:
|
19:
|
begin
|
begin
|
$display( "ccl2SPSframe_crop_top_offset %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SPSframe_crop_top_offset %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SPSframe_crop_top_offset (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SPSframe_crop_top_offset truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (20);
|
nextstate = SPS 20;
|
end
|
end
|
20:
|
20:
|
begin
|
begin
|
$display( "ccl2SPSframe_crop_bottom_offset %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SPSframe_crop_bottom_offset %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SPSframe_crop_bottom_offset (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SPSframe_crop_bottom_offset truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SPS (21);
|
nextstate = SPS 21;
|
end
|
end
|
21:
|
21:
|
begin
|
begin
|
nextstate = Start;
|
nextstate = Start;
|
$display( "INFO EntropyDec:VUI data thrown away" );
|
$display( "INFO EntropyDec:VUI data thrown away" );
|
Line 838... |
Line 837... |
case ( step )
|
case ( step )
|
0:
|
0:
|
begin
|
begin
|
ppspic_parameter_set_id <= truncate(expgolomb_unsigned(buffer));
|
ppspic_parameter_set_id <= truncate(expgolomb_unsigned(buffer));
|
$display( "ccl2PPSpic_parameter_set_id %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2PPSpic_parameter_set_id %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(PPSpic_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
|
outfifo_ITB.enq(PPSpic_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
|
outfifo_ITB.enq(PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = PPS (1);
|
nextstate = PPS 1;
|
end
|
end
|
1:
|
1:
|
begin
|
begin
|
$display( "ccl2PPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2PPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(PPSseq_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(PPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = PPS (2);
|
nextstate = PPS 2;
|
if(spsseq_parameter_set_id != truncate(expgolomb_unsigned(buffer)))
|
if(spsseq_parameter_set_id != truncate(expgolomb_unsigned(buffer)))
|
$display( "ERROR EntropyDec: seq_parameter_set_id don't match" );
|
$display( "ERROR EntropyDec: seq_parameter_set_id don't match" );
|
end
|
end
|
2:
|
2:
|
begin
|
begin
|
//PPSentropy_coding_mode_flag = 0 for baseline
|
//PPSentropy_coding_mode_flag = 0 for baseline
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = PPS (3);
|
nextstate = PPS 3;
|
end
|
end
|
3:
|
3:
|
begin
|
begin
|
ppspic_order_present_flag <= buffer[buffersize-1];
|
ppspic_order_present_flag <= buffer[buffersize-1];
|
$display( "ccl2PPSpic_order_present_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2PPSpic_order_present_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(PPSpic_order_present_flag (buffer[buffersize-1]));
|
outfifo.enq(PPSpic_order_present_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = PPS (4);
|
nextstate = PPS 4;
|
end
|
end
|
4:
|
4:
|
begin
|
begin
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = PPS (5);
|
nextstate = PPS 5;
|
if(expgolomb_unsigned(buffer)+1 != 1)
|
if(expgolomb_unsigned(buffer)+1 != 1)
|
$display( "ERROR EntropyDec: PPSnum_slice_groups not equal to 1" );//=1 for main
|
$display( "ERROR EntropyDec: PPSnum_slice_groups not equal to 1" );//=1 for main
|
end
|
end
|
5:
|
5:
|
begin
|
begin
|
$display( "ccl2PPSnum_ref_idx_l0_active %0d", expgolomb_unsigned(buffer)+1 );
|
$display( "ccl2PPSnum_ref_idx_l0_active %0d", expgolomb_unsigned(buffer)+1 );
|
outfifo.enq(PPSnum_ref_idx_l0_active (truncate(expgolomb_unsigned(buffer)+1)));
|
outfifo.enq(PPSnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1));
|
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer));
|
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = PPS (6);
|
nextstate = PPS 6;
|
end
|
end
|
6:
|
6:
|
begin
|
begin
|
$display( "ccl2PPSnum_ref_idx_l1_active %0d", expgolomb_unsigned(buffer)+1 );
|
$display( "ccl2PPSnum_ref_idx_l1_active %0d", expgolomb_unsigned(buffer)+1 );
|
outfifo.enq(PPSnum_ref_idx_l1_active (truncate(expgolomb_unsigned(buffer)+1)));
|
outfifo.enq(PPSnum_ref_idx_l1_active truncate(expgolomb_unsigned(buffer)+1));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = PPS (7);
|
nextstate = PPS 7;
|
end
|
end
|
7:
|
7:
|
begin
|
begin
|
//PPSweighted_pred_flag = 0 for baseline; PPSweighted_bipred_idc = 0 for baseline
|
//PPSweighted_pred_flag = 0 for baseline; PPSweighted_bipred_idc = 0 for baseline
|
numbitsused = 3;
|
numbitsused = 3;
|
nextstate = PPS (8);
|
nextstate = PPS 8;
|
end
|
end
|
8:
|
8:
|
begin
|
begin
|
$display( "ccl2PPSpic_init_qp %0d", expgolomb_signed(buffer)+26 );
|
$display( "ccl2PPSpic_init_qp %0d", expgolomb_signed(buffer)+26 );
|
outfifo_ITB.enq(PPSpic_init_qp (truncate(expgolomb_signed(buffer)+26)));
|
outfifo_ITB.enq(PPSpic_init_qp truncate(expgolomb_signed(buffer)+26));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = PPS (9);
|
nextstate = PPS 9;
|
end
|
end
|
9:
|
9:
|
begin
|
begin
|
$display( "ccl2PPSpic_init_qs %0d", expgolomb_signed(buffer)+26 );
|
$display( "ccl2PPSpic_init_qs %0d", expgolomb_signed(buffer)+26 );
|
outfifo_ITB.enq(PPSpic_init_qs (truncate(expgolomb_signed(buffer)+26)));
|
outfifo_ITB.enq(PPSpic_init_qs truncate(expgolomb_signed(buffer)+26));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = PPS (10);
|
nextstate = PPS 10;
|
end
|
end
|
10:
|
10:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2PPSchroma_qp_index_offset %0d", tempint );
|
$display( "ccl2PPSchroma_qp_index_offset %0d", tempint );
|
outfifo_ITB.enq(PPSchroma_qp_index_offset (truncate(expgolomb_signed(buffer))));
|
outfifo_ITB.enq(PPSchroma_qp_index_offset truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = PPS (11);
|
nextstate = PPS 11;
|
end
|
end
|
11:
|
11:
|
begin
|
begin
|
ppsdeblocking_filter_control_present_flag <= buffer[buffersize-1];
|
ppsdeblocking_filter_control_present_flag <= buffer[buffersize-1];
|
$display( "ccl2PPSdeblocking_filter_control_present_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2PPSdeblocking_filter_control_present_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(PPSdeblocking_filter_control_present_flag (buffer[buffersize-1]));
|
outfifo.enq(PPSdeblocking_filter_control_present_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = PPS (12);
|
nextstate = PPS 12;
|
end
|
end
|
12:
|
12:
|
begin
|
begin
|
$display( "ccl2PPSconstrained_intra_pred_flag %0d", buffer[buffersize-1] );
|
$display( "ccl2PPSconstrained_intra_pred_flag %0d", buffer[buffersize-1] );
|
outfifo.enq(PPSconstrained_intra_pred_flag (buffer[buffersize-1]));
|
outfifo.enq(PPSconstrained_intra_pred_flag buffer[buffersize-1]);
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = PPS (13);
|
nextstate = PPS 13;
|
end
|
end
|
13:
|
13:
|
begin
|
begin
|
//PPSredundant_pic_cnt_present_flag = 0 for main
|
//PPSredundant_pic_cnt_present_flag = 0 for main
|
numbitsused = 1;
|
numbitsused = 1;
|
nextstate = PPS (14);
|
nextstate = PPS 14;
|
if(buffer[buffersize-1] != 0)
|
if(buffer[buffersize-1] != 0)
|
$display( "ERROR EntropyDec: PPSredundant_pic_cnt_present_flag not equal to 0" );//=0 for main
|
$display( "ERROR EntropyDec: PPSredundant_pic_cnt_present_flag not equal to 0" );//=0 for main
|
end
|
end
|
14:
|
14:
|
begin
|
begin
|
Line 948... |
Line 947... |
default: $display( "ERROR EntropyDec: PPS default step" );
|
default: $display( "ERROR EntropyDec: PPS default step" );
|
endcase
|
endcase
|
end
|
end
|
tagged AUD .step :
|
tagged AUD .step :
|
begin
|
begin
|
outfifo.enq(AUDPrimaryPicType (buffer[buffersize-1:buffersize-3]));
|
outfifo.enq(AUDPrimaryPicType buffer[buffersize-1:buffersize-3]);
|
numbitsused = 3;
|
numbitsused = 3;
|
nextstate = Start;
|
nextstate = Start;
|
end
|
end
|
tagged EndSequence :
|
tagged EndSequence :
|
begin
|
begin
|
Line 974... |
Line 973... |
0:
|
0:
|
begin
|
begin
|
if( shslice_type!=2 && shslice_type!=7 )
|
if( shslice_type!=2 && shslice_type!=7 )
|
begin
|
begin
|
$display( "ccl2SDmb_skip_run %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDmb_skip_run %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDmb_skip_run (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDmb_skip_run truncate(expgolomb_unsigned(buffer)));
|
tempreg <= truncate(expgolomb_unsigned(buffer));
|
tempreg <= truncate(expgolomb_unsigned(buffer));
|
calcnc.nNupdate_pskip( truncate(expgolomb_unsigned(buffer)) );
|
calcnc.nNupdate_pskip( truncate(expgolomb_unsigned(buffer)) );
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SliceData (1);
|
nextstate = SliceData 1;
|
end
|
end
|
else
|
else
|
nextstate = SliceData (2);
|
nextstate = SliceData 2;
|
end
|
end
|
1:
|
1:
|
begin
|
begin
|
if( tempreg>0 )
|
if( tempreg>0 )
|
begin
|
begin
|
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main
|
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main
|
tempreg <= tempreg-1;
|
tempreg <= tempreg-1;
|
nextstate = SliceData (1);
|
nextstate = SliceData 1;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
////$display( "ccl2SDcurrMbAddr %0d", currMbAddr );
|
////$display( "ccl2SDcurrMbAddr %0d", currMbAddr );
|
////outfifo.enq(SDcurrMbAddr currMbAddr);
|
////outfifo.enq(SDcurrMbAddr currMbAddr);
|
nextstate = SliceData (2);
|
nextstate = SliceData 2;
|
end
|
end
|
end
|
end
|
2:
|
2:
|
begin
|
begin
|
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 )
|
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 )
|
begin
|
begin
|
calcnc.loadMb(currMbAddr);
|
calcnc.loadMb(currMbAddr);
|
nextstate = MacroblockLayer (0);
|
nextstate = MacroblockLayer 0;
|
end
|
end
|
else
|
else
|
nextstate = SliceData (3);
|
nextstate = SliceData 3;
|
end
|
end
|
3:
|
3:
|
begin
|
begin
|
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main
|
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main
|
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 )
|
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 )
|
nextstate = SliceData (0);
|
nextstate = SliceData 0;
|
else
|
else
|
nextstate = Start;
|
nextstate = Start;
|
end
|
end
|
default: $display( "ERROR EntropyDec: SliceData default step" );
|
default: $display( "ERROR EntropyDec: SliceData default step" );
|
endcase
|
endcase
|
Line 1025... |
Line 1024... |
begin
|
begin
|
case ( step )
|
case ( step )
|
0:
|
0:
|
begin
|
begin
|
$display( "ccl2SDMmb_type %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMmb_type %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMmbtype (mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type)) );
|
outfifo.enq(SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) );
|
outfifo_ITB.enq(SDMmbtype (mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type)) );
|
outfifo_ITB.enq(SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) );
|
sdmmbtype <= mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type);
|
sdmmbtype <= mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type);
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
if(mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) == I_PCM)
|
if(mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) == I_PCM)
|
begin
|
begin
|
calcnc.nNupdate_ipcm();
|
calcnc.nNupdate_ipcm();
|
nextstate = MacroblockLayer (1);
|
nextstate = MacroblockLayer 1;
|
end
|
end
|
else
|
else
|
nextstate = MacroblockLayer (4);
|
nextstate = MacroblockLayer 4;
|
end
|
end
|
1:
|
1:
|
begin
|
begin
|
tempreg <= 256;
|
tempreg <= 256;
|
numbitsused = zeroExtend(bufcount[2:0]);
|
numbitsused = zeroExtend(bufcount[2:0]);
|
nextstate = MacroblockLayer (2);
|
nextstate = MacroblockLayer 2;
|
end
|
end
|
2:
|
2:
|
begin
|
begin
|
if( tempreg>0 )
|
if( tempreg>0 )
|
begin
|
begin
|
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8];
|
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8];
|
$display( "ccl2SDMpcm_sample_luma %0d", outputdata );
|
$display( "ccl2SDMpcm_sample_luma %0d", outputdata );
|
outfifo.enq(SDMpcm_sample_luma (outputdata));
|
outfifo.enq(SDMpcm_sample_luma outputdata);
|
tempreg <= tempreg-1;
|
tempreg <= tempreg-1;
|
numbitsused = 8;
|
numbitsused = 8;
|
nextstate = MacroblockLayer (2);
|
nextstate = MacroblockLayer 2;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
tempreg <= 128;
|
tempreg <= 128;
|
nextstate = MacroblockLayer (3);
|
nextstate = MacroblockLayer 3;
|
end
|
end
|
end
|
end
|
3:
|
3:
|
begin
|
begin
|
if( tempreg>0 )
|
if( tempreg>0 )
|
begin
|
begin
|
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8];
|
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8];
|
$display( "ccl2SDMpcm_sample_chroma %0d", outputdata );
|
$display( "ccl2SDMpcm_sample_chroma %0d", outputdata );
|
outfifo.enq(SDMpcm_sample_chroma (outputdata));
|
outfifo.enq(SDMpcm_sample_chroma outputdata);
|
tempreg <= tempreg-1;
|
tempreg <= tempreg-1;
|
numbitsused = 8;
|
numbitsused = 8;
|
nextstate = MacroblockLayer (3);
|
nextstate = MacroblockLayer 3;
|
end
|
end
|
else
|
else
|
nextstate = SliceData (3);
|
nextstate = SliceData 3;
|
end
|
end
|
4:
|
4:
|
begin
|
begin
|
if(sdmmbtype != I_NxN
|
if(sdmmbtype != I_NxN
|
&&& mbPartPredMode(sdmmbtype,0) != Intra_16x16
|
&&& mbPartPredMode(sdmmbtype,0) != Intra_16x16
|
&&& numMbPart(sdmmbtype) == 4)
|
&&& numMbPart(sdmmbtype) == 4)
|
nextstate = SubMbPrediction (0);
|
nextstate = SubMbPrediction 0;
|
else
|
else
|
nextstate = MbPrediction (0);
|
nextstate = MbPrediction 0;
|
end
|
end
|
5:
|
5:
|
begin
|
begin
|
if(mbPartPredMode(sdmmbtype,0) != Intra_16x16)
|
if(mbPartPredMode(sdmmbtype,0) != Intra_16x16)
|
begin
|
begin
|
Line 1103... |
Line 1102... |
sdmcodedBlockPatternChroma <= tempv2;
|
sdmcodedBlockPatternChroma <= tempv2;
|
end
|
end
|
else
|
else
|
$display( "ERROR EntropyDec: MacroblockLayer 5 sdmmbtype not I_16x16" );
|
$display( "ERROR EntropyDec: MacroblockLayer 5 sdmmbtype not I_16x16" );
|
end
|
end
|
nextstate = MacroblockLayer (6);
|
nextstate = MacroblockLayer 6;
|
end
|
end
|
6:
|
6:
|
begin
|
begin
|
if(sdmcodedBlockPatternLuma > 0
|
if(sdmcodedBlockPatternLuma > 0
|
|| sdmcodedBlockPatternChroma > 0
|
|| sdmcodedBlockPatternChroma > 0
|
|| mbPartPredMode(sdmmbtype,0) == Intra_16x16)
|
|| mbPartPredMode(sdmmbtype,0) == Intra_16x16)
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMmb_qp_delta %0d", tempint );
|
$display( "ccl2SDMmb_qp_delta %0d", tempint );
|
outfifo_ITB.enq(SDMmb_qp_delta (truncate(expgolomb_signed(buffer))));
|
outfifo_ITB.enq(SDMmb_qp_delta truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
end
|
end
|
residualChroma <= 0;
|
residualChroma <= 0;
|
temp5bit <= 0;
|
temp5bit <= 0;
|
maxNumCoeff <= 16;
|
maxNumCoeff <= 16;
|
nextstate = ResidualBlock (0);
|
nextstate = ResidualBlock 0;
|
end
|
end
|
default: $display( "ERROR EntropyDec: MacroblockLayer default step" );
|
default: $display( "ERROR EntropyDec: MacroblockLayer default step" );
|
endcase
|
endcase
|
end
|
end
|
tagged MbPrediction .step : //return to MacroblockLayer 5
|
tagged MbPrediction .step : //return to MacroblockLayer 5
|
Line 1132... |
Line 1131... |
0:
|
0:
|
begin
|
begin
|
if(mbPartPredMode(sdmmbtype,0) == Intra_16x16)
|
if(mbPartPredMode(sdmmbtype,0) == Intra_16x16)
|
begin
|
begin
|
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMMintra_chroma_pred_mode (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = MacroblockLayer (5);
|
nextstate = MacroblockLayer 5;
|
end
|
end
|
else if(mbPartPredMode(sdmmbtype,0) == Intra_4x4)
|
else if(mbPartPredMode(sdmmbtype,0) == Intra_4x4)
|
begin
|
begin
|
temp5bit <= 16;
|
temp5bit <= 16;
|
nextstate = MbPrediction (1);
|
nextstate = MbPrediction 1;
|
end
|
end
|
else if(num_ref_idx_l0_active_minus1 > 0)
|
else if(num_ref_idx_l0_active_minus1 > 0)
|
begin
|
begin
|
temp3bit0 <= numMbPart(sdmmbtype);
|
temp3bit0 <= numMbPart(sdmmbtype);
|
nextstate = MbPrediction (2);
|
nextstate = MbPrediction 2;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
temp3bit0 <= numMbPart(sdmmbtype);
|
temp3bit0 <= numMbPart(sdmmbtype);
|
nextstate = MbPrediction (3);
|
nextstate = MbPrediction 3;
|
end
|
end
|
end
|
end
|
1:
|
1:
|
begin
|
begin
|
if(temp5bit == 0)
|
if(temp5bit == 0)
|
begin
|
begin
|
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMMintra_chroma_pred_mode (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = MacroblockLayer (5);
|
nextstate = MacroblockLayer 5;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
////$display( "ccl2SDMMprev_intra4x4_pred_mode_flag %0d", buffer[buffersize-1] );
|
////$display( "ccl2SDMMprev_intra4x4_pred_mode_flag %0d", buffer[buffersize-1] );
|
if(buffer[buffersize-1] == 0)
|
if(buffer[buffersize-1] == 0)
|
begin
|
begin
|
Bit#(4) tttt = buffer[buffersize-1:buffersize-4];
|
Bit#(4) tttt = buffer[buffersize-1:buffersize-4];
|
$display( "ccl2SDMMrem_intra4x4_pred_mode %0d", tttt );
|
$display( "ccl2SDMMrem_intra4x4_pred_mode %0d", tttt );
|
outfifo.enq(SDMMrem_intra4x4_pred_mode (tttt));
|
outfifo.enq(SDMMrem_intra4x4_pred_mode tttt);
|
numbitsused = 4;
|
numbitsused = 4;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
outfifo.enq(SDMMrem_intra4x4_pred_mode (4'b1000));
|
outfifo.enq(SDMMrem_intra4x4_pred_mode 4'b1000);
|
numbitsused = 1;
|
numbitsused = 1;
|
end
|
end
|
temp5bit <= temp5bit-1;
|
temp5bit <= temp5bit-1;
|
nextstate = MbPrediction (1);
|
nextstate = MbPrediction 1;
|
end
|
end
|
end
|
end
|
2:
|
2:
|
begin
|
begin
|
if(num_ref_idx_l0_active_minus1 == 1)
|
if(num_ref_idx_l0_active_minus1 == 1)
|
begin
|
begin
|
$display( "ccl2SDMMref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
$display( "ccl2SDMMref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
outfifo.enq(SDMMref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
|
outfifo.enq(SDMMref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
|
numbitsused = 1;
|
numbitsused = 1;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
$display( "ccl2SDMMref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMMref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMMref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMMref_idx_l0 truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
end
|
end
|
if(temp3bit0 == 1)
|
if(temp3bit0 == 1)
|
begin
|
begin
|
temp3bit0 <= numMbPart(sdmmbtype);
|
temp3bit0 <= numMbPart(sdmmbtype);
|
nextstate = MbPrediction (3);
|
nextstate = MbPrediction 3;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
temp3bit0 <= temp3bit0-1;
|
temp3bit0 <= temp3bit0-1;
|
nextstate = MbPrediction (2);
|
nextstate = MbPrediction 2;
|
end
|
end
|
end
|
end
|
3:
|
3:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMMmvd_l0 %0d", tempint );
|
$display( "ccl2SDMMmvd_l0 %0d", tempint );
|
outfifo.enq(SDMMmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMMmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = MbPrediction (4);
|
nextstate = MbPrediction 4;
|
end
|
end
|
4:
|
4:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMMmvd_l0 %0d", tempint );
|
$display( "ccl2SDMMmvd_l0 %0d", tempint );
|
outfifo.enq(SDMMmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMMmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
temp3bit0 <= temp3bit0-1;
|
temp3bit0 <= temp3bit0-1;
|
if(temp3bit0 == 1)
|
if(temp3bit0 == 1)
|
nextstate = MacroblockLayer (5);
|
nextstate = MacroblockLayer 5;
|
else
|
else
|
nextstate = MbPrediction (3);
|
nextstate = MbPrediction 3;
|
end
|
end
|
default: $display( "ERROR EntropyDec: MbPrediction default step" );
|
default: $display( "ERROR EntropyDec: MbPrediction default step" );
|
endcase
|
endcase
|
end
|
end
|
tagged SubMbPrediction .step : //return to MacroblockLayer 5
|
tagged SubMbPrediction .step : //return to MacroblockLayer 5
|
begin
|
begin
|
case ( step )
|
case ( step )
|
0:
|
0:
|
begin
|
begin
|
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMSsub_mb_type (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
|
temp3bit0 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
|
temp3bit0 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SubMbPrediction (1);
|
nextstate = SubMbPrediction 1;
|
end
|
end
|
1:
|
1:
|
begin
|
begin
|
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMSsub_mb_type (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
|
temp3bit1 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
|
temp3bit1 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SubMbPrediction (2);
|
nextstate = SubMbPrediction 2;
|
end
|
end
|
2:
|
2:
|
begin
|
begin
|
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMSsub_mb_type (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
|
temp3bit2 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
|
temp3bit2 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SubMbPrediction (3);
|
nextstate = SubMbPrediction 3;
|
end
|
end
|
3:
|
3:
|
begin
|
begin
|
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMSsub_mb_type (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
|
temp3bit3 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
|
temp3bit3 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
if(num_ref_idx_l0_active_minus1 > 0
|
if(num_ref_idx_l0_active_minus1 > 0
|
&& sdmmbtype != P_8x8ref0)
|
&& sdmmbtype != P_8x8ref0)
|
nextstate = SubMbPrediction (4);
|
nextstate = SubMbPrediction 4;
|
else
|
else
|
nextstate = SubMbPrediction (8);
|
nextstate = SubMbPrediction 8;
|
end
|
end
|
4:
|
4:
|
begin
|
begin
|
if(num_ref_idx_l0_active_minus1 == 1)
|
if(num_ref_idx_l0_active_minus1 == 1)
|
begin
|
begin
|
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
outfifo.enq(SDMSref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
|
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
|
numbitsused = 1;
|
numbitsused = 1;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMSref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
end
|
end
|
nextstate = SubMbPrediction (5);
|
nextstate = SubMbPrediction 5;
|
end
|
end
|
5:
|
5:
|
begin
|
begin
|
if(num_ref_idx_l0_active_minus1 == 1)
|
if(num_ref_idx_l0_active_minus1 == 1)
|
begin
|
begin
|
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
outfifo.enq(SDMSref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
|
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
|
numbitsused = 1;
|
numbitsused = 1;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMSref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
end
|
end
|
nextstate = SubMbPrediction (6);
|
nextstate = SubMbPrediction 6;
|
end
|
end
|
6:
|
6:
|
begin
|
begin
|
if(num_ref_idx_l0_active_minus1 == 1)
|
if(num_ref_idx_l0_active_minus1 == 1)
|
begin
|
begin
|
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
outfifo.enq(SDMSref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
|
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
|
numbitsused = 1;
|
numbitsused = 1;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMSref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
end
|
end
|
nextstate = SubMbPrediction (7);
|
nextstate = SubMbPrediction 7;
|
end
|
end
|
7:
|
7:
|
begin
|
begin
|
if(num_ref_idx_l0_active_minus1 == 1)
|
if(num_ref_idx_l0_active_minus1 == 1)
|
begin
|
begin
|
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
|
outfifo.enq(SDMSref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
|
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
|
numbitsused = 1;
|
numbitsused = 1;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
|
outfifo.enq(SDMSref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
|
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
end
|
end
|
nextstate = SubMbPrediction (8);
|
nextstate = SubMbPrediction 8;
|
end
|
end
|
8:
|
8:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SubMbPrediction (9);
|
nextstate = SubMbPrediction 9;
|
end
|
end
|
9:
|
9:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
temp3bit0 <= temp3bit0-1;
|
temp3bit0 <= temp3bit0-1;
|
if(temp3bit0 == 1)
|
if(temp3bit0 == 1)
|
nextstate = SubMbPrediction (10);
|
nextstate = SubMbPrediction 10;
|
else
|
else
|
nextstate = SubMbPrediction (8);
|
nextstate = SubMbPrediction 8;
|
end
|
end
|
10:
|
10:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SubMbPrediction (11);
|
nextstate = SubMbPrediction 11;
|
end
|
end
|
11:
|
11:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
temp3bit1 <= temp3bit1-1;
|
temp3bit1 <= temp3bit1-1;
|
if(temp3bit1 == 1)
|
if(temp3bit1 == 1)
|
nextstate = SubMbPrediction (12);
|
nextstate = SubMbPrediction 12;
|
else
|
else
|
nextstate = SubMbPrediction (10);
|
nextstate = SubMbPrediction 10;
|
end
|
end
|
12:
|
12:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SubMbPrediction (13);
|
nextstate = SubMbPrediction 13;
|
end
|
end
|
13:
|
13:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
temp3bit2 <= temp3bit2-1;
|
temp3bit2 <= temp3bit2-1;
|
if(temp3bit2 == 1)
|
if(temp3bit2 == 1)
|
nextstate = SubMbPrediction (14);
|
nextstate = SubMbPrediction 14;
|
else
|
else
|
nextstate = SubMbPrediction (12);
|
nextstate = SubMbPrediction 12;
|
end
|
end
|
14:
|
14:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
nextstate = SubMbPrediction (15);
|
nextstate = SubMbPrediction 15;
|
end
|
end
|
15:
|
15:
|
begin
|
begin
|
tempint = unpack(expgolomb_signed(buffer));
|
tempint = unpack(expgolomb_signed(buffer));
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
$display( "ccl2SDMSmvd_l0 %0d", tempint );
|
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
|
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
|
numbitsused = expgolomb_numbits(buffer);
|
numbitsused = expgolomb_numbits(buffer);
|
temp3bit3 <= temp3bit3-1;
|
temp3bit3 <= temp3bit3-1;
|
if(temp3bit3 == 1)
|
if(temp3bit3 == 1)
|
nextstate = MacroblockLayer (5);
|
nextstate = MacroblockLayer 5;
|
else
|
else
|
nextstate = SubMbPrediction (14);
|
nextstate = SubMbPrediction 14;
|
end
|
end
|
default: $display( "ERROR EntropyDec: SubMbPrediction default step" );
|
default: $display( "ERROR EntropyDec: SubMbPrediction default step" );
|
endcase
|
endcase
|
end
|
end
|
tagged ResidualBlock .step : //if(residualChroma==0) return to Residual 1; else if(maxNumCoeff==4) return to Residual 3; else return to Residual 5
|
tagged ResidualBlock .step : //if(residualChroma==0) return to Residual 1; else if(maxNumCoeff==4) return to Residual 3; else return to Residual 5
|
Line 1430... |
Line 1429... |
tempreg <= zeroExtend(calcnc.nCcalc_chroma(truncate(temp5bit)));
|
tempreg <= zeroExtend(calcnc.nCcalc_chroma(truncate(temp5bit)));
|
end
|
end
|
else
|
else
|
tempreg <= zeroExtend(6'b111111);
|
tempreg <= zeroExtend(6'b111111);
|
if(mbPartPredMode(sdmmbtype,0)==Intra_16x16 && maxNumCoeff==16)
|
if(mbPartPredMode(sdmmbtype,0)==Intra_16x16 && maxNumCoeff==16)
|
nextstate = ResidualBlock (1);
|
nextstate = ResidualBlock 1;
|
else if(residualChroma==0 && (sdmcodedBlockPatternLuma & (1 << zeroExtend(temp5bit[3:2])))==0)
|
else if(residualChroma==0 && (sdmcodedBlockPatternLuma & (1 << zeroExtend(temp5bit[3:2])))==0)
|
begin
|
begin
|
calcnc.nNupdate_luma(truncate(temp5bit),0);
|
calcnc.nNupdate_luma(truncate(temp5bit),0);
|
outfifo_ITB.enq(SDMRcoeffLevelZeros (maxNumCoeff));
|
outfifo_ITB.enq(SDMRcoeffLevelZeros maxNumCoeff);
|
nextstate = ResidualBlock (5);
|
nextstate = ResidualBlock 5;
|
end
|
end
|
else if(residualChroma==1 && maxNumCoeff==4 && (sdmcodedBlockPatternChroma & 3)==0)
|
else if(residualChroma==1 && maxNumCoeff==4 && (sdmcodedBlockPatternChroma & 3)==0)
|
begin
|
begin
|
outfifo_ITB.enq(SDMRcoeffLevelZeros (4));
|
outfifo_ITB.enq(SDMRcoeffLevelZeros 4);
|
nextstate = ResidualBlock (5);
|
nextstate = ResidualBlock 5;
|
end
|
end
|
else if(residualChroma==1 && maxNumCoeff!=4 && (sdmcodedBlockPatternChroma & 2)==0)
|
else if(residualChroma==1 && maxNumCoeff!=4 && (sdmcodedBlockPatternChroma & 2)==0)
|
begin
|
begin
|
calcnc.nNupdate_chroma(truncate(temp5bit),0);
|
calcnc.nNupdate_chroma(truncate(temp5bit),0);
|
outfifo_ITB.enq(SDMRcoeffLevelZeros (15));
|
outfifo_ITB.enq(SDMRcoeffLevelZeros 15);
|
nextstate = ResidualBlock (5);
|
nextstate = ResidualBlock 5;
|
end
|
end
|
else
|
else
|
nextstate = ResidualBlock (1);
|
nextstate = ResidualBlock 1;
|
//$display( "TRACE EntropyDec: ResidualBlock 0 temp5bit = %0d", temp5bit);
|
//$display( "TRACE EntropyDec: ResidualBlock 0 temp5bit = %0d", temp5bit);
|
end
|
end
|
1:
|
1:
|
begin
|
begin
|
Bit#(2) trailingOnesTemp = 0;
|
Bit#(2) trailingOnesTemp = 0;
|
Line 1469... |
Line 1468... |
tempreg <= 0;//levelCode temp
|
tempreg <= 0;//levelCode temp
|
if(totalCoeffTemp > 10 && trailingOnesTemp < 3)
|
if(totalCoeffTemp > 10 && trailingOnesTemp < 3)
|
temp3bit1 <= 1;//suffixLength
|
temp3bit1 <= 1;//suffixLength
|
else
|
else
|
temp3bit1 <= 0;//suffixLength
|
temp3bit1 <= 0;//suffixLength
|
nextstate = ResidualBlock (2);
|
nextstate = ResidualBlock 2;
|
//$display( "TRACE EntropyDec: ResidualBlock 1 nC = %0d", tempreg);
|
//$display( "TRACE EntropyDec: ResidualBlock 1 nC = %0d", tempreg);
|
$display( "ccl2SDMRtotal_coeff %0d", totalCoeffTemp );
|
$display( "ccl2SDMRtotal_coeff %0d", totalCoeffTemp );
|
$display( "ccl2SDMRtrailing_ones %0d", trailingOnesTemp );
|
$display( "ccl2SDMRtrailing_ones %0d", trailingOnesTemp );
|
end
|
end
|
2:
|
2:
|
Line 1532... |
Line 1531... |
if( totalCoeff==0 || temp5bit2+1==totalCoeff )
|
if( totalCoeff==0 || temp5bit2+1==totalCoeff )
|
begin
|
begin
|
temp5bit2 <= 0;
|
temp5bit2 <= 0;
|
zerosLeft <= 0;
|
zerosLeft <= 0;
|
if(totalCoeff < maxNumCoeff)
|
if(totalCoeff < maxNumCoeff)
|
nextstate = ResidualBlock (3);
|
nextstate = ResidualBlock 3;
|
else
|
else
|
nextstate = ResidualBlock (5);
|
nextstate = ResidualBlock 5;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
temp5bit2 <= temp5bit2 + 1;
|
temp5bit2 <= temp5bit2 + 1;
|
nextstate = ResidualBlock (2);
|
nextstate = ResidualBlock 2;
|
end
|
end
|
end
|
end
|
3:
|
3:
|
begin
|
begin
|
Bit#(4) tempZerosLeft;
|
Bit#(4) tempZerosLeft;
|
Line 1558... |
Line 1557... |
if(maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) > 0)
|
if(maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) > 0)
|
begin
|
begin
|
$display( "ccl2SDMRcoeffLevelZeros %0d", maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) );
|
$display( "ccl2SDMRcoeffLevelZeros %0d", maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) );
|
outfifo_ITB.enq(SDMRcoeffLevelZeros (maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft)));
|
outfifo_ITB.enq(SDMRcoeffLevelZeros (maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft)));
|
end
|
end
|
nextstate = ResidualBlock (5);
|
nextstate = ResidualBlock 5;
|
end
|
end
|
5:
|
5:
|
begin
|
begin
|
if( totalCoeff > 0 )
|
if( totalCoeff > 0 )
|
begin
|
begin
|
Line 1587... |
Line 1586... |
end
|
end
|
if( totalCoeff <= 1 )
|
if( totalCoeff <= 1 )
|
begin
|
begin
|
if(residualChroma==0)
|
if(residualChroma==0)
|
begin
|
begin
|
nextstate = ResidualBlock (0);
|
nextstate = ResidualBlock 0;
|
if(mbPartPredMode(sdmmbtype,0)==Intra_16x16 && maxNumCoeff==16)
|
if(mbPartPredMode(sdmmbtype,0)==Intra_16x16 && maxNumCoeff==16)
|
maxNumCoeff <= 15;
|
maxNumCoeff <= 15;
|
else if(temp5bit==15)
|
else if(temp5bit==15)
|
begin
|
begin
|
temp5bit <= 0;
|
temp5bit <= 0;
|
Line 1601... |
Line 1600... |
else
|
else
|
temp5bit <= temp5bit+1;
|
temp5bit <= temp5bit+1;
|
end
|
end
|
else if(maxNumCoeff==4)
|
else if(maxNumCoeff==4)
|
begin
|
begin
|
nextstate = ResidualBlock (0);
|
nextstate = ResidualBlock 0;
|
if(temp5bit==1)
|
if(temp5bit==1)
|
begin
|
begin
|
temp5bit <= 0;
|
temp5bit <= 0;
|
maxNumCoeff <= 15;
|
maxNumCoeff <= 15;
|
end
|
end
|
Line 1615... |
Line 1614... |
else
|
else
|
begin
|
begin
|
if(temp5bit==7)
|
if(temp5bit==7)
|
begin
|
begin
|
temp5bit <= 0;
|
temp5bit <= 0;
|
nextstate = SliceData (3);
|
nextstate = SliceData 3;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
nextstate = ResidualBlock (0);
|
nextstate = ResidualBlock 0;
|
temp5bit <= temp5bit+1;
|
temp5bit <= temp5bit+1;
|
end
|
end
|
end
|
end
|
end
|
end
|
else
|
else
|
nextstate = ResidualBlock (5);
|
nextstate = ResidualBlock 5;
|
end
|
end
|
default: $display( "ERROR EntropyDec: ResidualBlock default step" );
|
default: $display( "ERROR EntropyDec: ResidualBlock default step" );
|
endcase
|
endcase
|
end
|
end
|
endcase
|
endcase
|