URL
https://opencores.org/ocsvn/bluespec-h264/bluespec-h264/trunk
Subversion Repositories bluespec-h264
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 12 to Rev 13
- ↔ Reverse comparison
Rev 12 → Rev 13
/trunk/src_fpga/mkPrediction.bsv
309,9 → 309,9
currMbHor <= xdata; |
currMbVer <= 0; |
intra4x4typeLeft <= replicate(15); |
interTopLeftVal <= replicate(NotInter 0); |
interTopLeftVal <= replicate(tagged NotInter 0); |
if(xdata==0) |
interLeftVal <= replicate(NotInter 0); |
interLeftVal <= replicate(tagged NotInter 0); |
outFirstQPFlag <= True; |
end |
tagged SDmb_skip_run .xdata : passFlag <= False; |
350,8 → 350,8
interRespCount <= 1; |
intra4x4typeLeft <= replicate(14); |
intra4x4typeTop <= replicate(14); |
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter 0)); |
interTopVal <= replicate(NotInter 0); |
interTopLeftVal <= update(interTopLeftVal , 0, (tagged NotInter 0)); |
interTopVal <= replicate(tagged NotInter 0); |
interPskipCount <= interPskipCount+1; |
interNewestMv <= 0; |
interRefIdxVector <= replicate(0); |
389,9 → 389,9
$display( "ERROR Prediction: MacroblockLayer 5 sdmmbtype not I_16x16" ); |
intraReqCount <= 1; |
intraRespCount <= 1; |
interTopLeftVal <= replicate(NotInter 1); |
interLeftVal <= replicate(NotInter 1); |
interTopVal <= replicate(NotInter 1); |
interTopLeftVal <= replicate(tagged NotInter 1); |
interLeftVal <= replicate(tagged NotInter 1); |
interTopVal <= replicate(tagged NotInter 1); |
end |
else |
donotfire.doNotFire(); |
404,9 → 404,9
intrastate <= Intra4x4; |
intraReqCount <= 1; |
intraRespCount <= 1; |
interTopLeftVal <= replicate(NotInter 1); |
interLeftVal <= replicate(NotInter 1); |
interTopVal <= replicate(NotInter 1); |
interTopLeftVal <= replicate(tagged NotInter 1); |
interLeftVal <= replicate(tagged NotInter 1); |
interTopVal <= replicate(tagged NotInter 1); |
end |
else |
donotfire.doNotFire(); |
417,9 → 417,9
$finish;//////////////////////////////////////////////////////////////////////////////////////// |
intra4x4typeLeft <= replicate(13); |
intra4x4typeTop <= replicate(13); |
interTopLeftVal <= replicate(NotInter 1); |
interLeftVal <= replicate(NotInter 1); |
interTopVal <= replicate(NotInter 1); |
interTopLeftVal <= replicate(tagged NotInter 1); |
interLeftVal <= replicate(tagged NotInter 1); |
interTopVal <= replicate(tagged NotInter 1); |
end |
else |
begin |
438,8 → 438,8
interRespCount <= 1; |
intra4x4typeLeft <= replicate(14);///////////////////////////////////////////////////////////////////////////// |
intra4x4typeTop <= replicate(14); |
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter 0)); |
interTopVal <= replicate(NotInter 0); |
interTopLeftVal <= update(interTopLeftVal , 0, (tagged NotInter 0)); |
interTopVal <= replicate(tagged NotInter 0); |
interNewestMv <= 0; |
interRefIdxVector <= replicate(0); |
nextoutputfifo.enq(NonSkipMB); |
548,7 → 548,7
else if(nextoutputfifo.first() == SkipMB) |
begin |
outputVector = predictedfifo.first(); |
outfifo.enq(PBoutput outputVector); |
outfifo.enq(tagged PBoutput outputVector); |
outputFlag = 1; |
predictedfifo.deq(); |
$display( "Trace Prediction: outputing SkipMB out %h %h %h", outBlockNum, outPixelNum, outputVector); |
559,7 → 559,7
tagged IBTmb_qp .xdata : |
begin |
infifo_ITB.deq(); |
outfifo.enq(IBTmb_qp {qpy:xdata.qpy,qpc:xdata.qpc}); |
outfifo.enq(tagged IBTmb_qp {qpy:xdata.qpy,qpc:xdata.qpc}); |
outFirstQPFlag <= False; |
$display( "Trace Prediction: outputing ITBmb_qp %h %h %h", outBlockNum, outPixelNum, xdata); |
end |
576,7 → 576,7
else |
outputVector[ii] = tempOutputValue[7:0]; |
end |
outfifo.enq(PBoutput outputVector); |
outfifo.enq(tagged PBoutput outputVector); |
infifo_ITB.deq(); |
predictedfifo.deq(); |
outputFlag = 1; |
587,7 → 587,7
if(outPixelNum == 12) |
infifo_ITB.deq(); |
outputVector = predictedfifo.first(); |
outfifo.enq(PBoutput outputVector); |
outfifo.enq(tagged PBoutput outputVector); |
outputFlag = 1; |
predictedfifo.deq(); |
$display( "Trace Prediction: outputing ITBcoeffLevelZeros out %h %h %h %h %h", outChromaFlag, outBlockNum, outPixelNum, predictedfifo.first(), outputVector); |
801,7 → 801,7
end |
if(!noMoreReq) |
begin |
interMemReqQ.enq(LoadReq temp); |
interMemReqQ.enq(tagged LoadReq temp); |
interReqCount <= interReqCount+1; |
//$display( "TRACE Prediction: interSendReq addr %0d",temp);/////////////////////// |
end |
820,8 → 820,8
interIPStepCount <= 1; |
if(currMbHorTemp == 0) |
begin |
interLeftVal <= replicate(NotInter 0); |
interTopLeftVal <= replicate(NotInter 0); |
interLeftVal <= replicate(tagged NotInter 0); |
interTopLeftVal <= replicate(tagged NotInter 0); |
end |
$display( "Trace Prediction: interReceiveNoResp %h %h", interstate, interRespCount); |
endrule |
875,8 → 875,8
interIPStepCount <= 1; |
if(currMbHorTemp == 0) |
begin |
interLeftVal <= replicate(NotInter 0); |
interTopLeftValNext = replicate(NotInter 0); |
interLeftVal <= replicate(tagged NotInter 0); |
interTopLeftValNext = replicate(tagged NotInter 0); |
end |
end |
interTopVal <= interTopValNext; |
970,17 → 970,17
else |
$display( "ERROR Prediction: interProcessStep unexpected interstate"); |
Bit#(4) refIndex = ((interstate==InterPskip||interstate==InterP8x8ref0) ? 0 : interRefIdxVector[interMbPartNum]); |
Vector#(3,InterBlockMv) blockABC = replicate(NotInter 0); |
Vector#(3,InterBlockMv) blockABC = replicate(tagged NotInter 0); |
if( currMbTemp-firstMb==0 && blockHor==0 ) |
blockABC[0] = (NotInter 0); |
blockABC[0] = (tagged NotInter 0); |
else |
blockABC[0] = interLeftVal[blockVer]; |
if( currMbTemp-firstMb<zeroExtend(picWidth) && blockVer==0 ) |
blockABC[1] = (NotInter 0); |
blockABC[1] = (tagged NotInter 0); |
else |
blockABC[1] = interTopVal[blockHor]; |
blockABC[2] = interTopVal[{1'b0,blockHor}+partWidth]; |
if(noBlockC || blockABC[2]==(NotInter 0)) |
if(noBlockC || blockABC[2]==(tagged NotInter 0)) |
blockABC[2] = interTopLeftVal[blockVer]; |
|
partWidthR <= partWidth; |
1328,7 → 1328,7
end |
if(noMoreReq == 0) |
begin |
intraMemReqQ.enq(LoadReq temp); |
intraMemReqQ.enq(tagged LoadReq temp); |
intraReqCount <= intraReqCount+1; |
//$display( "TRACE Prediction: intraSendReq addr %0d",temp);/////////////////////// |
end |
1344,7 → 1344,7
intraStepCount <= 1; |
blockNum <= 0; |
pixelNum <= 0; |
interOutBlockMvfifo.enq(NotInter 1); |
interOutBlockMvfifo.enq(tagged NotInter 1); |
$display( "Trace Prediction: intraReceiveNoResp"); |
endrule |
|
1406,7 → 1406,7
intraStepCount <= 1; |
blockNum <= 0; |
pixelNum <= 0; |
interOutBlockMvfifo.enq(NotInter 1); |
interOutBlockMvfifo.enq(tagged NotInter 1); |
end |
$display( "Trace Prediction: intraReceiveResp"); |
endrule |
/trunk/src_fpga/mkDeblockFilter.bsv
73,7 → 73,7
tagged NewUnit . xdata : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(tagged EDOT infifo.first()); |
$display("ccl5newunit"); |
$display("ccl5rbspbyte %h", xdata); |
end |
80,19 → 80,19
tagged SPSpic_width_in_mbs .xdata : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(tagged EDOT infifo.first()); |
picWidth <= xdata; |
end |
tagged SPSpic_height_in_map_units .xdata : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(tagged EDOT infifo.first()); |
picHeight <= xdata; |
end |
tagged SHfirst_mb_in_slice .xdata : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(tagged EDOT infifo.first()); |
firstMb <= xdata; |
currMb <= xdata; |
currMbHor <= xdata; |
108,9 → 108,9
Bit#(PicWidthSz) currMbHorT = truncate(currMbHor); |
Bit#(32) pixelq = {xdata[3],xdata[2],xdata[1],xdata[0]}; |
if(chromaFlag==0) |
outfifo.enq(DFBLuma {ver:{currMbVer,blockVer,pixelVer},hor:{currMbHorT,blockHor},data:pixelq}); |
outfifo.enq(tagged DFBLuma {ver:{currMbVer,blockVer,pixelVer},hor:{currMbHorT,blockHor},data:pixelq}); |
else |
outfifo.enq(DFBChroma {uv:blockHor[1],ver:{currMbVer,blockVer[0],pixelVer},hor:{currMbHorT,blockHor[0]},data:pixelq}); |
outfifo.enq(tagged DFBChroma {uv:blockHor[1],ver:{currMbVer,blockVer[0],pixelVer},hor:{currMbHorT,blockHor[0]},data:pixelq}); |
if(pixelNum == 12) |
begin |
pixelNum <= 0; |
138,7 → 138,7
tagged EndOfFile : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(tagged EDOT infifo.first()); |
$display( "ccl5: EndOfFile reached"); |
//$finish(0); |
end |
145,7 → 145,7
default: |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(tagged EDOT infifo.first()); |
end |
endcase |
endrule |
168,7 → 168,7
|
|
rule outputEndOfFrame(endOfFrame); |
outfifo.enq(EndOfFrame); |
outfifo.enq(tagged EndOfFrame); |
endOfFrame <= False; |
//$display( "Trace Deblocking Filter: outputEndOfFrame %h", pack(infifo.first())); |
endrule |
/trunk/src_fpga/mkEntropyDec.bsv
189,11 → 189,11
nalrefidc <= rdata[6:5]; |
nalunittype <= rdata[4:0]; |
case (rdata[4:0]) |
1 : state <= CodedSlice 0; |
5 : state <= CodedSlice 0; |
1 : state <= tagged CodedSlice 0; |
5 : state <= tagged CodedSlice 0; |
6 : state <= SEI; |
7 : state <= SPS 0; |
8 : state <= PPS 0; |
7 : state <= tagged SPS 0; |
8 : state <= tagged PPS 0; |
9 : state <= AUD; |
10: state <= EndSequence; |
11: state <= EndStream; |
206,8 → 206,8
endcase |
$display("ccl2newunit"); |
$display("ccl2rbspbyte %h", rdata); |
outfifo.enq(NewUnit rdata); |
outfifo_ITB.enq(NewUnit rdata); |
outfifo.enq(tagged NewUnit rdata); |
outfifo_ITB.enq(tagged NewUnit rdata); |
end |
tagged EndOfFile : state <= Start; |
endcase |
280,26 → 280,26
0: |
begin |
$display( "ccl2SHfirst_mb_in_slice %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHfirst_mb_in_slice truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHfirst_mb_in_slice truncate(expgolomb_unsigned(buffer))); |
currMbAddr <= truncate(expgolomb_unsigned(buffer)); |
calcnc.initialize(truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 1; |
nextstate = tagged CodedSlice 1; |
end |
1: |
begin |
$display( "ccl2SHslice_type %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHslice_type truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHslice_type truncate(expgolomb_unsigned(buffer))); |
shslice_type <= truncate(expgolomb_unsigned(buffer)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 2; |
nextstate = tagged CodedSlice 2; |
end |
2: |
begin |
$display( "ccl2SHpic_parameter_set_id %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHpic_parameter_set_id truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHpic_parameter_set_id truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 3; |
nextstate = tagged CodedSlice 3; |
if(ppspic_parameter_set_id != truncate(expgolomb_unsigned(buffer))) $display( "ERROR EntropyDec: pic_parameter_set_id don't match" ); |
end |
3: |
307,9 → 307,9
Bit#(16) tttt = buffer[buffersize-1:buffersize-16]; |
tttt = tttt >> 16 - zeroExtend(spslog2_max_frame_num); |
$display( "ccl2SHframe_num %0d", tttt ); |
outfifo.enq(SHframe_num tttt); |
outfifo.enq(tagged SHframe_num tttt); |
numbitsused = zeroExtend(spslog2_max_frame_num); |
nextstate = CodedSlice 4; |
nextstate = tagged CodedSlice 4; |
end |
4: |
begin |
316,10 → 316,10
if(nalunittype == 5) |
begin |
$display( "ccl2SHidr_pic_id %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHidr_pic_id truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHidr_pic_id truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
end |
nextstate = CodedSlice 5; |
nextstate = tagged CodedSlice 5; |
end |
5: |
begin |
328,12 → 328,12
Bit#(16) tttt = buffer[buffersize-1:buffersize-16]; |
tttt = tttt >> 16 - zeroExtend(spslog2_max_pic_order_cnt_lsb); |
$display( "ccl2SHpic_order_cnt_lsb %0d", tttt ); |
outfifo.enq(SHpic_order_cnt_lsb tttt); |
outfifo.enq(tagged SHpic_order_cnt_lsb tttt); |
numbitsused = zeroExtend(spslog2_max_pic_order_cnt_lsb); |
nextstate = CodedSlice 6; |
nextstate = tagged CodedSlice 6; |
end |
else |
nextstate = CodedSlice 7; |
nextstate = tagged CodedSlice 7; |
end |
6: |
begin |
344,20 → 344,20
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = CodedSlice 6; |
nextstate = tagged CodedSlice 6; |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$display( "ccl2SHdelta_pic_order_cnt_bottom %0d", tempint32 ); |
outfifo.enq(SHdelta_pic_order_cnt_bottom truncate(expgolomb_signed32(buffer,egnumbits))); |
outfifo.enq(tagged SHdelta_pic_order_cnt_bottom truncate(expgolomb_signed32(buffer,egnumbits))); |
egnumbits <= 0; |
numbitsused = egnumbits; |
nextstate = CodedSlice 7; |
nextstate = tagged CodedSlice 7; |
end |
end |
else |
nextstate = CodedSlice 7; |
nextstate = tagged CodedSlice 7; |
end |
7: |
begin |
368,20 → 368,20
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = CodedSlice 7; |
nextstate = tagged CodedSlice 7; |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$display( "ccl2SHdelta_pic_order_cnt0 %0d", tempint32 ); |
outfifo.enq(SHdelta_pic_order_cnt0 truncate(expgolomb_signed32(buffer,egnumbits))); |
outfifo.enq(tagged SHdelta_pic_order_cnt0 truncate(expgolomb_signed32(buffer,egnumbits))); |
egnumbits <= 0; |
numbitsused = egnumbits; |
nextstate = CodedSlice 8; |
nextstate = tagged CodedSlice 8; |
end |
end |
else |
nextstate = CodedSlice 9; |
nextstate = tagged CodedSlice 9; |
end |
8: |
begin |
392,20 → 392,20
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = CodedSlice 8; |
nextstate = tagged CodedSlice 8; |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$display( "ccl2SHdelta_pic_order_cnt1 %0d", tempint32 ); |
outfifo.enq(SHdelta_pic_order_cnt1 truncate(expgolomb_signed32(buffer,egnumbits))); |
outfifo.enq(tagged SHdelta_pic_order_cnt1 truncate(expgolomb_signed32(buffer,egnumbits))); |
egnumbits <= 0; |
numbitsused = egnumbits; |
nextstate = CodedSlice 9; |
nextstate = tagged CodedSlice 9; |
end |
end |
else |
nextstate = CodedSlice 9; |
nextstate = tagged CodedSlice 9; |
end |
9: |
begin |
412,23 → 412,23
if(shslice_type == 0 || shslice_type == 5) |
begin |
$display( "ccl2SHnum_ref_idx_active_override_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(SHnum_ref_idx_active_override_flag buffer[buffersize-1]); |
outfifo.enq(tagged SHnum_ref_idx_active_override_flag buffer[buffersize-1]); |
numbitsused = 1; |
if(buffer[buffersize-1] == 1) |
nextstate = CodedSlice 10; |
nextstate = tagged CodedSlice 10; |
else |
nextstate = CodedSlice 11; |
nextstate = tagged CodedSlice 11; |
end |
else |
nextstate = CodedSlice 11; |
nextstate = tagged CodedSlice 11; |
end |
10: |
begin |
$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(tagged SHnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1)); |
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 11; |
nextstate = tagged CodedSlice 11; |
end |
11: |
begin |
435,87 → 435,87
if(shslice_type != 2 && shslice_type != 7) |
begin |
$display( "ccl2SHRref_pic_list_reordering_flag_l0 %0d", buffer[buffersize-1] ); |
outfifo.enq(SHRref_pic_list_reordering_flag_l0 buffer[buffersize-1]); |
outfifo.enq(tagged SHRref_pic_list_reordering_flag_l0 buffer[buffersize-1]); |
numbitsused = 1; |
if(buffer[buffersize-1] == 1) |
nextstate = CodedSlice 12; |
nextstate = tagged CodedSlice 12; |
else |
nextstate = CodedSlice 15; |
nextstate = tagged CodedSlice 15; |
end |
else |
nextstate = CodedSlice 15; |
nextstate = tagged CodedSlice 15; |
end |
12: |
begin |
$display( "ccl2SHRreordering_of_pic_nums_idc %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHRreordering_of_pic_nums_idc truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHRreordering_of_pic_nums_idc truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
if(expgolomb_unsigned(buffer)==0 || expgolomb_unsigned(buffer)==1) |
nextstate = CodedSlice 13; |
nextstate = tagged CodedSlice 13; |
else if(expgolomb_unsigned(buffer)==2) |
nextstate = CodedSlice 14; |
nextstate = tagged CodedSlice 14; |
else |
nextstate = CodedSlice 15; |
nextstate = tagged CodedSlice 15; |
end |
13: |
begin |
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1; |
$display( "ccl2SHRabs_diff_pic_num %0d", temp17 ); |
outfifo.enq(SHRabs_diff_pic_num temp17); |
outfifo.enq(tagged SHRabs_diff_pic_num temp17); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 12; |
nextstate = tagged CodedSlice 12; |
end |
14: |
begin |
$display( "ccl2SHRlong_term_pic_num %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHRlong_term_pic_num truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHRlong_term_pic_num truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 12; |
nextstate = tagged CodedSlice 12; |
end |
15: |
begin |
if(nalrefidc == 0) |
nextstate = CodedSlice 23; |
nextstate = tagged CodedSlice 23; |
else |
begin |
if(nalunittype == 5) |
begin |
$display( "ccl2SHDno_output_of_prior_pics_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(SHDno_output_of_prior_pics_flag buffer[buffersize-1]); |
outfifo.enq(tagged SHDno_output_of_prior_pics_flag buffer[buffersize-1]); |
numbitsused = 1; |
nextstate = CodedSlice 16; |
nextstate = tagged CodedSlice 16; |
end |
else |
nextstate = CodedSlice 17; |
nextstate = tagged CodedSlice 17; |
end |
end |
16: |
begin |
$display( "ccl2SHDlong_term_reference_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(SHDlong_term_reference_flag buffer[buffersize-1]); |
outfifo.enq(tagged SHDlong_term_reference_flag buffer[buffersize-1]); |
numbitsused = 1; |
nextstate = CodedSlice 23; |
nextstate = tagged CodedSlice 23; |
end |
17: |
begin |
$display( "ccl2SHDadaptive_ref_pic_marking_mode_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(SHDadaptive_ref_pic_marking_mode_flag buffer[buffersize-1]); |
outfifo.enq(tagged SHDadaptive_ref_pic_marking_mode_flag buffer[buffersize-1]); |
numbitsused = 1; |
if(buffer[buffersize-1] == 1) |
nextstate = CodedSlice 18; |
nextstate = tagged CodedSlice 18; |
else |
nextstate = CodedSlice 23; |
nextstate = tagged CodedSlice 23; |
end |
18: |
begin |
$display( "ccl2SHDmemory_management_control_operation %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHDmemory_management_control_operation truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHDmemory_management_control_operation truncate(expgolomb_unsigned(buffer))); |
shdmemory_management_control_operation <= truncate(expgolomb_unsigned(buffer)); |
numbitsused = expgolomb_numbits(buffer); |
if(expgolomb_unsigned(buffer)!=0) |
nextstate = CodedSlice 19; |
nextstate = tagged CodedSlice 19; |
else |
nextstate = CodedSlice 23; |
nextstate = tagged CodedSlice 23; |
end |
19: |
begin |
523,12 → 523,12
begin |
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1; |
$display( "ccl2SHDdifference_of_pic_nums %0d", temp17 ); |
outfifo.enq(SHDdifference_of_pic_nums temp17); |
outfifo.enq(tagged SHDdifference_of_pic_nums temp17); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 20; |
nextstate = tagged CodedSlice 20; |
end |
else |
nextstate = CodedSlice 20; |
nextstate = tagged CodedSlice 20; |
end |
20: |
begin |
535,12 → 535,12
if(shdmemory_management_control_operation==2) |
begin |
$display( "ccl2SHDlong_term_pic_num %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHDlong_term_pic_num truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHDlong_term_pic_num truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 21; |
nextstate = tagged CodedSlice 21; |
end |
else |
nextstate = CodedSlice 21; |
nextstate = tagged CodedSlice 21; |
end |
21: |
begin |
547,12 → 547,12
if(shdmemory_management_control_operation==3 || shdmemory_management_control_operation==6) |
begin |
$display( "ccl2SHDlong_term_frame_idx %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHDlong_term_frame_idx truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHDlong_term_frame_idx truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 22; |
nextstate = tagged CodedSlice 22; |
end |
else |
nextstate = CodedSlice 22; |
nextstate = tagged CodedSlice 22; |
end |
22: |
begin |
559,20 → 559,20
if(shdmemory_management_control_operation==4) |
begin |
$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(tagged SHDmax_long_term_frame_idx_plus1 truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 18; |
nextstate = tagged CodedSlice 18; |
end |
else |
nextstate = CodedSlice 18; |
nextstate = tagged CodedSlice 18; |
end |
23: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SHslice_qp_delta %0d", tempint ); |
outfifo_ITB.enq(SHslice_qp_delta truncate(expgolomb_signed(buffer))); |
outfifo_ITB.enq(tagged SHslice_qp_delta truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 24; |
nextstate = tagged CodedSlice 24; |
end |
24: |
begin |
579,35 → 579,35
if(ppsdeblocking_filter_control_present_flag==1) |
begin |
$display( "ccl2SHdisable_deblocking_filter_idc %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SHdisable_deblocking_filter_idc truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SHdisable_deblocking_filter_idc truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
if(expgolomb_unsigned(buffer)!=1) |
nextstate = CodedSlice 25; |
nextstate = tagged CodedSlice 25; |
else |
nextstate = CodedSlice 27; |
nextstate = tagged CodedSlice 27; |
end |
else |
nextstate = CodedSlice 27; |
nextstate = tagged CodedSlice 27; |
end |
25: |
begin |
tempint = unpack(expgolomb_signed(buffer) << 1); |
$display( "ccl2SHslice_alpha_c0_offset %0d", tempint ); |
outfifo.enq(SHslice_alpha_c0_offset truncate(expgolomb_signed(buffer) << 1)); |
outfifo.enq(tagged SHslice_alpha_c0_offset truncate(expgolomb_signed(buffer) << 1)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 26; |
nextstate = tagged CodedSlice 26; |
end |
26: |
begin |
tempint = unpack(expgolomb_signed(buffer) << 1); |
$display( "ccl2SHslice_beta_offset %0d", tempint ); |
outfifo.enq(SHslice_beta_offset truncate(expgolomb_signed(buffer) << 1)); |
outfifo.enq(tagged SHslice_beta_offset truncate(expgolomb_signed(buffer) << 1)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 27; |
nextstate = tagged CodedSlice 27; |
end |
27: |
begin |
nextstate = SliceData 0; |
nextstate = tagged SliceData 0; |
end |
default: $display( "ERROR EntropyDec: CodedSlice default step" ); |
endcase |
629,53 → 629,53
outputdata = buffer[buffersize-17:buffersize-24]; |
$display( "INFO EntropyDec: level_idc = %d", outputdata ); |
numbitsused = 24; |
nextstate = SPS 1; |
nextstate = tagged SPS 1; |
end |
1: |
begin |
$display( "ccl2SPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer))); |
spsseq_parameter_set_id <= truncate(expgolomb_unsigned(buffer)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 2; |
nextstate = tagged SPS 2; |
end |
2: |
begin |
$display( "ccl2SPSlog2_max_frame_num %0d", expgolomb_unsigned(buffer)+4 ); |
outfifo.enq(SPSlog2_max_frame_num truncate(expgolomb_unsigned(buffer)+4)); |
outfifo.enq(tagged SPSlog2_max_frame_num truncate(expgolomb_unsigned(buffer)+4)); |
spslog2_max_frame_num <= truncate(expgolomb_unsigned(buffer)+4); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 3; |
nextstate = tagged SPS 3; |
end |
3: |
begin |
let tttt = expgolomb_unsigned(buffer); |
$display( "ccl2SPSpic_order_cnt_type %0d", tttt ); |
outfifo.enq(SPSpic_order_cnt_type truncate(tttt)); |
outfifo.enq(tagged SPSpic_order_cnt_type truncate(tttt)); |
spspic_order_cnt_type <= truncate(tttt); |
numbitsused = expgolomb_numbits(buffer); |
if(tttt == 0) |
nextstate = SPS 4; |
nextstate = tagged SPS 4; |
else if(tttt == 1) |
nextstate = SPS 5; |
nextstate = tagged SPS 5; |
else |
nextstate = SPS 10; |
nextstate = tagged SPS 10; |
end |
4: |
begin |
$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(tagged 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); |
nextstate = SPS 10; |
nextstate = tagged SPS 10; |
end |
5: |
begin |
$display( "ccl2SPSdelta_pic_order_always_zero_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(SPSdelta_pic_order_always_zero_flag buffer[buffersize-1]); |
outfifo.enq(tagged SPSdelta_pic_order_always_zero_flag buffer[buffersize-1]); |
spsdelta_pic_order_always_zero_flag <= buffer[buffersize-1]; |
numbitsused = 1; |
nextstate = SPS 6; |
nextstate = tagged SPS 6; |
end |
6: |
begin |
684,16 → 684,16
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = SPS 6; |
nextstate = tagged SPS 6; |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$display( "ccl2SPSoffset_for_non_ref_pic %0d", tempint32 ); |
outfifo.enq(SPSoffset_for_non_ref_pic truncate(expgolomb_signed32(buffer,egnumbits))); |
outfifo.enq(tagged SPSoffset_for_non_ref_pic truncate(expgolomb_signed32(buffer,egnumbits))); |
egnumbits <= 0; |
numbitsused = egnumbits; |
nextstate = SPS 7; |
nextstate = tagged SPS 7; |
end |
end |
7: |
703,30 → 703,30
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = SPS 7; |
nextstate = tagged SPS 7; |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$display( "ccl2SPSoffset_for_top_to_bottom_field %0d", tempint32 ); |
outfifo.enq(SPSoffset_for_top_to_bottom_field truncate(expgolomb_signed32(buffer,egnumbits))); |
outfifo.enq(tagged SPSoffset_for_top_to_bottom_field truncate(expgolomb_signed32(buffer,egnumbits))); |
egnumbits <= 0; |
numbitsused = egnumbits; |
nextstate = SPS 8; |
nextstate = tagged SPS 8; |
end |
end |
8: |
begin |
$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(tagged 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); |
nextstate = SPS 9; |
nextstate = tagged SPS 9; |
end |
9: |
begin |
if(spsnum_ref_frames_in_pic_order_cnt_cycle == 0) |
nextstate = SPS 10; |
nextstate = tagged SPS 10; |
else |
begin |
if(egnumbits == 0) |
734,17 → 734,17
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = SPS 9; |
nextstate = tagged SPS 9; |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$display( "ccl2SPSoffset_for_ref_frame %0d", tempint32 ); |
outfifo.enq(SPSoffset_for_ref_frame truncate(expgolomb_signed32(buffer,egnumbits))); |
outfifo.enq(tagged SPSoffset_for_ref_frame truncate(expgolomb_signed32(buffer,egnumbits))); |
egnumbits <= 0; |
spsnum_ref_frames_in_pic_order_cnt_cycle <= spsnum_ref_frames_in_pic_order_cnt_cycle - 1; |
numbitsused = egnumbits; |
nextstate = SPS 9; |
nextstate = tagged SPS 9; |
end |
end |
end |
751,82 → 751,82
10: |
begin |
$display( "ccl2SPSnum_ref_frames %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SPSnum_ref_frames truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SPSnum_ref_frames truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 11; |
nextstate = tagged SPS 11; |
end |
11: |
begin |
$display( "ccl2SPSgaps_in_frame_num_allowed_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(SPSgaps_in_frame_num_allowed_flag buffer[buffersize-1]); |
outfifo.enq(tagged SPSgaps_in_frame_num_allowed_flag buffer[buffersize-1]); |
numbitsused = 1; |
nextstate = SPS 12; |
nextstate = tagged SPS 12; |
end |
12: |
begin |
$display( "ccl2SPSpic_width_in_mbs %0d", expgolomb_unsigned(buffer)+1 ); |
outfifo.enq(SPSpic_width_in_mbs truncate(expgolomb_unsigned(buffer)+1)); |
outfifo.enq(tagged SPSpic_width_in_mbs truncate(expgolomb_unsigned(buffer)+1)); |
calcnc.initialize_picWidth(truncate(expgolomb_unsigned(buffer)+1)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 13; |
nextstate = tagged SPS 13; |
end |
13: |
begin |
$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(tagged SPSpic_height_in_map_units truncate(expgolomb_unsigned(buffer)+1)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 14; |
nextstate = tagged SPS 14; |
end |
14: |
begin |
//SPSframe_mbs_only_flag = 1 for baseline |
numbitsused = 1; |
nextstate = SPS 15; |
nextstate = tagged SPS 15; |
end |
15: |
begin |
$display( "ccl2SPSdirect_8x8_inference_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(SPSdirect_8x8_inference_flag buffer[buffersize-1]); |
outfifo.enq(tagged SPSdirect_8x8_inference_flag buffer[buffersize-1]); |
numbitsused = 1; |
nextstate = SPS 16; |
nextstate = tagged SPS 16; |
end |
16: |
begin |
$display( "ccl2SPSframe_cropping_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(SPSframe_cropping_flag buffer[buffersize-1]); |
outfifo.enq(tagged SPSframe_cropping_flag buffer[buffersize-1]); |
numbitsused = 1; |
if(buffer[buffersize-1] == 1) |
nextstate = SPS 17; |
nextstate = tagged SPS 17; |
else |
nextstate = SPS 21; |
nextstate = tagged SPS 21; |
end |
17: |
begin |
$display( "ccl2SPSframe_crop_left_offset %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SPSframe_crop_left_offset truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SPSframe_crop_left_offset truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 18; |
nextstate = tagged SPS 18; |
end |
18: |
begin |
$display( "ccl2SPSframe_crop_right_offset %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SPSframe_crop_right_offset truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SPSframe_crop_right_offset truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 19; |
nextstate = tagged SPS 19; |
end |
19: |
begin |
$display( "ccl2SPSframe_crop_top_offset %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SPSframe_crop_top_offset truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SPSframe_crop_top_offset truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 20; |
nextstate = tagged SPS 20; |
end |
20: |
begin |
$display( "ccl2SPSframe_crop_bottom_offset %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SPSframe_crop_bottom_offset truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SPSframe_crop_bottom_offset truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 21; |
nextstate = tagged SPS 21; |
end |
21: |
begin |
843,17 → 843,17
begin |
ppspic_parameter_set_id <= truncate(expgolomb_unsigned(buffer)); |
$display( "ccl2PPSpic_parameter_set_id %0d", 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.enq(tagged PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer))); |
outfifo_ITB.enq(tagged PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 1; |
nextstate = tagged PPS 1; |
end |
1: |
begin |
$display( "ccl2PPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(PPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged PPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 2; |
nextstate = tagged PPS 2; |
if(spsseq_parameter_set_id != truncate(expgolomb_unsigned(buffer))) |
$display( "ERROR EntropyDec: seq_parameter_set_id don't match" ); |
end |
861,20 → 861,20
begin |
//PPSentropy_coding_mode_flag = 0 for baseline |
numbitsused = 1; |
nextstate = PPS 3; |
nextstate = tagged PPS 3; |
end |
3: |
begin |
ppspic_order_present_flag <= buffer[buffersize-1]; |
$display( "ccl2PPSpic_order_present_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(PPSpic_order_present_flag buffer[buffersize-1]); |
outfifo.enq(tagged PPSpic_order_present_flag buffer[buffersize-1]); |
numbitsused = 1; |
nextstate = PPS 4; |
nextstate = tagged PPS 4; |
end |
4: |
begin |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 5; |
nextstate = tagged PPS 5; |
if(expgolomb_unsigned(buffer)+1 != 1) |
$display( "ERROR EntropyDec: PPSnum_slice_groups not equal to 1" );//=1 for main |
end |
881,66 → 881,66
5: |
begin |
$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(tagged PPSnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1)); |
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 6; |
nextstate = tagged PPS 6; |
end |
6: |
begin |
$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(tagged PPSnum_ref_idx_l1_active truncate(expgolomb_unsigned(buffer)+1)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 7; |
nextstate = tagged PPS 7; |
end |
7: |
begin |
//PPSweighted_pred_flag = 0 for baseline; PPSweighted_bipred_idc = 0 for baseline |
numbitsused = 3; |
nextstate = PPS 8; |
nextstate = tagged PPS 8; |
end |
8: |
begin |
$display( "ccl2PPSpic_init_qp %0d", expgolomb_signed(buffer)+26 ); |
outfifo_ITB.enq(PPSpic_init_qp truncate(expgolomb_signed(buffer)+26)); |
outfifo_ITB.enq(tagged PPSpic_init_qp truncate(expgolomb_signed(buffer)+26)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 9; |
nextstate = tagged PPS 9; |
end |
9: |
begin |
$display( "ccl2PPSpic_init_qs %0d", expgolomb_signed(buffer)+26 ); |
outfifo_ITB.enq(PPSpic_init_qs truncate(expgolomb_signed(buffer)+26)); |
outfifo_ITB.enq(tagged PPSpic_init_qs truncate(expgolomb_signed(buffer)+26)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 10; |
nextstate = tagged PPS 10; |
end |
10: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2PPSchroma_qp_index_offset %0d", tempint ); |
outfifo_ITB.enq(PPSchroma_qp_index_offset truncate(expgolomb_signed(buffer))); |
outfifo_ITB.enq(tagged PPSchroma_qp_index_offset truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 11; |
nextstate = tagged PPS 11; |
end |
11: |
begin |
ppsdeblocking_filter_control_present_flag <= 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(tagged PPSdeblocking_filter_control_present_flag buffer[buffersize-1]); |
numbitsused = 1; |
nextstate = PPS 12; |
nextstate = tagged PPS 12; |
end |
12: |
begin |
$display( "ccl2PPSconstrained_intra_pred_flag %0d", buffer[buffersize-1] ); |
outfifo.enq(PPSconstrained_intra_pred_flag buffer[buffersize-1]); |
outfifo.enq(tagged PPSconstrained_intra_pred_flag buffer[buffersize-1]); |
numbitsused = 1; |
nextstate = PPS 13; |
nextstate = tagged PPS 13; |
end |
13: |
begin |
//PPSredundant_pic_cnt_present_flag = 0 for main |
numbitsused = 1; |
nextstate = PPS 14; |
nextstate = tagged PPS 14; |
if(buffer[buffersize-1] != 0) |
$display( "ERROR EntropyDec: PPSredundant_pic_cnt_present_flag not equal to 0" );//=0 for main |
end |
953,7 → 953,7
end |
tagged AUD .step : |
begin |
outfifo.enq(AUDPrimaryPicType buffer[buffersize-1:buffersize-3]); |
outfifo.enq(tagged AUDPrimaryPicType buffer[buffersize-1:buffersize-3]); |
numbitsused = 3; |
nextstate = Start; |
end |
979,14 → 979,14
if( shslice_type!=2 && shslice_type!=7 ) |
begin |
$display( "ccl2SDmb_skip_run %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDmb_skip_run truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDmb_skip_run truncate(expgolomb_unsigned(buffer))); |
tempreg <= truncate(expgolomb_unsigned(buffer)); |
calcnc.nNupdate_pskip( truncate(expgolomb_unsigned(buffer)) ); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SliceData 1; |
nextstate = tagged SliceData 1; |
end |
else |
nextstate = SliceData 2; |
nextstate = tagged SliceData 2; |
end |
1: |
begin |
994,13 → 994,13
begin |
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main |
tempreg <= tempreg-1; |
nextstate = SliceData 1; |
nextstate = tagged SliceData 1; |
end |
else |
begin |
////$display( "ccl2SDcurrMbAddr %0d", currMbAddr ); |
////outfifo.enq(SDcurrMbAddr currMbAddr); |
nextstate = SliceData 2; |
nextstate = tagged SliceData 2; |
end |
end |
2: |
1008,16 → 1008,16
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 ) |
begin |
calcnc.loadMb(currMbAddr); |
nextstate = MacroblockLayer 0; |
nextstate = tagged MacroblockLayer 0; |
end |
else |
nextstate = SliceData 3; |
nextstate = tagged SliceData 3; |
end |
3: |
begin |
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main |
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 ) |
nextstate = SliceData 0; |
nextstate = tagged SliceData 0; |
else |
nextstate = Start; |
end |
1030,23 → 1030,23
0: |
begin |
$display( "ccl2SDMmb_type %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) ); |
outfifo_ITB.enq(SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) ); |
outfifo.enq(tagged SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) ); |
outfifo_ITB.enq(tagged SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) ); |
sdmmbtype <= mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type); |
numbitsused = expgolomb_numbits(buffer); |
if(mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) == I_PCM) |
begin |
calcnc.nNupdate_ipcm(); |
nextstate = MacroblockLayer 1; |
nextstate = tagged MacroblockLayer 1; |
end |
else |
nextstate = MacroblockLayer 4; |
nextstate = tagged MacroblockLayer 4; |
end |
1: |
begin |
tempreg <= 256; |
numbitsused = zeroExtend(bufcount[2:0]); |
nextstate = MacroblockLayer 2; |
nextstate = tagged MacroblockLayer 2; |
end |
2: |
begin |
1054,15 → 1054,15
begin |
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8]; |
$display( "ccl2SDMpcm_sample_luma %0d", outputdata ); |
outfifo.enq(SDMpcm_sample_luma outputdata); |
outfifo.enq(tagged SDMpcm_sample_luma outputdata); |
tempreg <= tempreg-1; |
numbitsused = 8; |
nextstate = MacroblockLayer 2; |
nextstate = tagged MacroblockLayer 2; |
end |
else |
begin |
tempreg <= 128; |
nextstate = MacroblockLayer 3; |
nextstate = tagged MacroblockLayer 3; |
end |
end |
3: |
1071,13 → 1071,13
begin |
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8]; |
$display( "ccl2SDMpcm_sample_chroma %0d", outputdata ); |
outfifo.enq(SDMpcm_sample_chroma outputdata); |
outfifo.enq(tagged SDMpcm_sample_chroma outputdata); |
tempreg <= tempreg-1; |
numbitsused = 8; |
nextstate = MacroblockLayer 3; |
nextstate = tagged MacroblockLayer 3; |
end |
else |
nextstate = SliceData 3; |
nextstate = tagged SliceData 3; |
end |
4: |
begin |
1084,9 → 1084,9
if(sdmmbtype != I_NxN |
&&& mbPartPredMode(sdmmbtype,0) != Intra_16x16 |
&&& numMbPart(sdmmbtype) == 4) |
nextstate = SubMbPrediction 0; |
nextstate = tagged SubMbPrediction 0; |
else |
nextstate = MbPrediction 0; |
nextstate = tagged MbPrediction 0; |
end |
5: |
begin |
1108,7 → 1108,7
else |
$display( "ERROR EntropyDec: MacroblockLayer 5 sdmmbtype not I_16x16" ); |
end |
nextstate = MacroblockLayer 6; |
nextstate = tagged MacroblockLayer 6; |
end |
6: |
begin |
1118,12 → 1118,12
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMmb_qp_delta %0d", tempint ); |
outfifo_ITB.enq(SDMmb_qp_delta truncate(expgolomb_signed(buffer))); |
outfifo_ITB.enq(tagged SDMmb_qp_delta truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = Residual 0; |
nextstate = tagged Residual 0; |
end |
else |
nextstate = Residual 0; |
nextstate = tagged Residual 0; |
end |
default: $display( "ERROR EntropyDec: MacroblockLayer default step" ); |
endcase |
1136,24 → 1136,24
if(mbPartPredMode(sdmmbtype,0) == Intra_16x16) |
begin |
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = MacroblockLayer 5; |
nextstate = tagged MacroblockLayer 5; |
end |
else if(mbPartPredMode(sdmmbtype,0) == Intra_4x4) |
begin |
temp5bit <= 16; |
nextstate = MbPrediction 1; |
nextstate = tagged MbPrediction 1; |
end |
else if(num_ref_idx_l0_active_minus1 > 0) |
begin |
temp3bit0 <= numMbPart(sdmmbtype); |
nextstate = MbPrediction 2; |
nextstate = tagged MbPrediction 2; |
end |
else |
begin |
temp3bit0 <= numMbPart(sdmmbtype); |
nextstate = MbPrediction 3; |
nextstate = tagged MbPrediction 3; |
end |
end |
1: |
1161,9 → 1161,9
if(temp5bit == 0) |
begin |
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = MacroblockLayer 5; |
nextstate = tagged MacroblockLayer 5; |
end |
else |
begin |
1172,16 → 1172,16
begin |
Bit#(4) tttt = buffer[buffersize-1:buffersize-4]; |
$display( "ccl2SDMMrem_intra4x4_pred_mode %0d", tttt ); |
outfifo.enq(SDMMrem_intra4x4_pred_mode tttt); |
outfifo.enq(tagged SDMMrem_intra4x4_pred_mode tttt); |
numbitsused = 4; |
end |
else |
begin |
outfifo.enq(SDMMrem_intra4x4_pred_mode 4'b1000); |
outfifo.enq(tagged SDMMrem_intra4x4_pred_mode 4'b1000); |
numbitsused = 1; |
end |
temp5bit <= temp5bit-1; |
nextstate = MbPrediction 1; |
nextstate = tagged MbPrediction 1; |
end |
end |
2: |
1189,24 → 1189,24
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$display( "ccl2SDMMref_idx_l0 %0d", 1-buffer[buffersize-1] ); |
outfifo.enq(SDMMref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
outfifo.enq(tagged SDMMref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
numbitsused = 1; |
end |
else |
begin |
$display( "ccl2SDMMref_idx_l0 %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMMref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMMref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
end |
if(temp3bit0 == 1) |
begin |
temp3bit0 <= numMbPart(sdmmbtype); |
nextstate = MbPrediction 3; |
nextstate = tagged MbPrediction 3; |
end |
else |
begin |
temp3bit0 <= temp3bit0-1; |
nextstate = MbPrediction 2; |
nextstate = tagged MbPrediction 2; |
end |
end |
3: |
1213,21 → 1213,21
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMMmvd_l0 %0d", tempint ); |
outfifo.enq(SDMMmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMMmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = MbPrediction 4; |
nextstate = tagged MbPrediction 4; |
end |
4: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMMmvd_l0 %0d", tempint ); |
outfifo.enq(SDMMmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMMmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
temp3bit0 <= temp3bit0-1; |
if(temp3bit0 == 1) |
nextstate = MacroblockLayer 5; |
nextstate = tagged MacroblockLayer 5; |
else |
nextstate = MbPrediction 3; |
nextstate = tagged MbPrediction 3; |
end |
default: $display( "ERROR EntropyDec: MbPrediction default step" ); |
endcase |
1238,38 → 1238,38
0: |
begin |
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMSsub_mb_type truncate(expgolomb_unsigned(buffer))); |
temp3bit0 <= numSubMbPart(truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 1; |
nextstate = tagged SubMbPrediction 1; |
end |
1: |
begin |
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMSsub_mb_type truncate(expgolomb_unsigned(buffer))); |
temp3bit1 <= numSubMbPart(truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 2; |
nextstate = tagged SubMbPrediction 2; |
end |
2: |
begin |
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMSsub_mb_type truncate(expgolomb_unsigned(buffer))); |
temp3bit2 <= numSubMbPart(truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 3; |
nextstate = tagged SubMbPrediction 3; |
end |
3: |
begin |
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMSsub_mb_type truncate(expgolomb_unsigned(buffer))); |
temp3bit3 <= numSubMbPart(truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
if(num_ref_idx_l0_active_minus1 > 0 |
&& sdmmbtype != P_8x8ref0) |
nextstate = SubMbPrediction 4; |
nextstate = tagged SubMbPrediction 4; |
else |
nextstate = SubMbPrediction 8; |
nextstate = tagged SubMbPrediction 8; |
end |
4: |
begin |
1276,16 → 1276,16
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] ); |
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
outfifo.enq(tagged SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
numbitsused = 1; |
end |
else |
begin |
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
end |
nextstate = SubMbPrediction 5; |
nextstate = tagged SubMbPrediction 5; |
end |
5: |
begin |
1292,16 → 1292,16
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] ); |
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
outfifo.enq(tagged SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
numbitsused = 1; |
end |
else |
begin |
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
end |
nextstate = SubMbPrediction 6; |
nextstate = tagged SubMbPrediction 6; |
end |
6: |
begin |
1308,16 → 1308,16
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] ); |
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
outfifo.enq(tagged SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
numbitsused = 1; |
end |
else |
begin |
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
end |
nextstate = SubMbPrediction 7; |
nextstate = tagged SubMbPrediction 7; |
end |
7: |
begin |
1324,96 → 1324,96
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] ); |
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
outfifo.enq(tagged SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1])); |
numbitsused = 1; |
end |
else |
begin |
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
outfifo.enq(tagged SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
end |
nextstate = SubMbPrediction 8; |
nextstate = tagged SubMbPrediction 8; |
end |
8: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMSmvd_l0 %0d", tempint ); |
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 9; |
nextstate = tagged SubMbPrediction 9; |
end |
9: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMSmvd_l0 %0d", tempint ); |
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
temp3bit0 <= temp3bit0-1; |
if(temp3bit0 == 1) |
nextstate = SubMbPrediction 10; |
nextstate = tagged SubMbPrediction 10; |
else |
nextstate = SubMbPrediction 8; |
nextstate = tagged SubMbPrediction 8; |
end |
10: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMSmvd_l0 %0d", tempint ); |
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 11; |
nextstate = tagged SubMbPrediction 11; |
end |
11: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMSmvd_l0 %0d", tempint ); |
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
temp3bit1 <= temp3bit1-1; |
if(temp3bit1 == 1) |
nextstate = SubMbPrediction 12; |
nextstate = tagged SubMbPrediction 12; |
else |
nextstate = SubMbPrediction 10; |
nextstate = tagged SubMbPrediction 10; |
end |
12: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMSmvd_l0 %0d", tempint ); |
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 13; |
nextstate = tagged SubMbPrediction 13; |
end |
13: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMSmvd_l0 %0d", tempint ); |
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
temp3bit2 <= temp3bit2-1; |
if(temp3bit2 == 1) |
nextstate = SubMbPrediction 14; |
nextstate = tagged SubMbPrediction 14; |
else |
nextstate = SubMbPrediction 12; |
nextstate = tagged SubMbPrediction 12; |
end |
14: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMSmvd_l0 %0d", tempint ); |
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 15; |
nextstate = tagged SubMbPrediction 15; |
end |
15: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$display( "ccl2SDMSmvd_l0 %0d", tempint ); |
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
temp3bit3 <= temp3bit3-1; |
if(temp3bit3 == 1) |
nextstate = MacroblockLayer 5; |
nextstate = tagged MacroblockLayer 5; |
else |
nextstate = SubMbPrediction 14; |
nextstate = tagged SubMbPrediction 14; |
end |
default: $display( "ERROR EntropyDec: SubMbPrediction default step" ); |
endcase |
1428,10 → 1428,10
if(mbPartPredMode(sdmmbtype,0) == Intra_16x16) |
begin |
maxNumCoeff <= 16; |
nextstate = ResidualBlock 0; |
nextstate = tagged ResidualBlock 0; |
end |
else |
nextstate = Residual 1; |
nextstate = tagged Residual 1; |
//$display( "TRACE EntropyDec: Residual 0" ); |
end |
1: |
1440,7 → 1440,7
begin |
residualChroma <= 1; |
temp5bit <= 0; |
nextstate = Residual 3; |
nextstate = tagged Residual 3; |
end |
else |
begin |
1454,12 → 1454,12
begin |
calcnc.nNupdate_luma(truncate(temp5bit),0); |
////$display( "ccl2SDMRcoeffLevelZeros %0d", tempMaxNumCoeff ); |
outfifo_ITB.enq(SDMRcoeffLevelZeros tempMaxNumCoeff); |
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros tempMaxNumCoeff); |
temp5bit <= temp5bit+1; |
nextstate = Residual 1; |
nextstate = tagged Residual 1; |
end |
else |
nextstate = ResidualBlock 0; |
nextstate = tagged ResidualBlock 0; |
end |
//$display( "TRACE EntropyDec: Residual 1" ); |
end |
1468,7 → 1468,7
if(temp5bit == 2) |
begin |
temp5bit <= 0; |
nextstate = Residual 5; |
nextstate = tagged Residual 5; |
end |
else |
begin |
1476,12 → 1476,12
if((sdmcodedBlockPatternChroma & 3) == 0) |
begin |
////$display( "ccl2SDMRcoeffLevelZeros %0d", 4 ); |
outfifo_ITB.enq(SDMRcoeffLevelZeros 4); |
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros 4); |
temp5bit <= temp5bit+1; |
nextstate = Residual 3; |
nextstate = tagged Residual 3; |
end |
else |
nextstate = ResidualBlock 0; |
nextstate = tagged ResidualBlock 0; |
end |
//$display( "TRACE EntropyDec: Residual 3" ); |
end |
1490,7 → 1490,7
if(temp5bit == 8) |
begin |
temp5bit <= 0; |
nextstate = SliceData 3; |
nextstate = tagged SliceData 3; |
end |
else |
begin |
1499,12 → 1499,12
begin |
calcnc.nNupdate_chroma(truncate(temp5bit),0); |
////$display( "ccl2SDMRcoeffLevelZeros %0d", 15 ); |
outfifo_ITB.enq(SDMRcoeffLevelZeros 15); |
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros 15); |
temp5bit <= temp5bit+1; |
nextstate = Residual 5; |
nextstate = tagged Residual 5; |
end |
else |
nextstate = ResidualBlock 0; |
nextstate = tagged ResidualBlock 0; |
end |
//$display( "TRACE EntropyDec: Residual 5" ); |
end |
1528,7 → 1528,7
begin |
tempreg <= zeroExtend(6'b111111); |
end |
nextstate = ResidualBlock 1; |
nextstate = tagged ResidualBlock 1; |
//$display( "TRACE EntropyDec: ResidualBlock 0 temp5bit = %0d", temp5bit); |
end |
1: |
1548,7 → 1548,7
temp3bit1 <= 1;//suffixLength |
else |
temp3bit1 <= 0;//suffixLength |
nextstate = ResidualBlock 2; |
nextstate = tagged ResidualBlock 2; |
//$display( "TRACE EntropyDec: ResidualBlock 1 nC = %0d", tempreg); |
$display( "ccl2SDMRtotal_coeff %0d", totalCoeffTemp ); |
$display( "ccl2SDMRtrailing_ones %0d", trailingOnesTemp ); |
1560,9 → 1560,9
temp5bit2 <= 0; |
zerosLeft <= 0; |
if(totalCoeff < maxNumCoeff) |
nextstate = ResidualBlock 3; |
nextstate = tagged ResidualBlock 3; |
else |
nextstate = ResidualBlock 5; |
nextstate = tagged ResidualBlock 5; |
end |
else |
begin |
1615,7 → 1615,7
numbitsused = zeroExtend(level_prefix)+1+zeroExtend(levelSuffixSize); |
end |
temp5bit2 <= temp5bit2 + 1; |
nextstate = ResidualBlock 2; |
nextstate = tagged ResidualBlock 2; |
end |
end |
3: |
1632,16 → 1632,16
if(maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) > 0) |
begin |
$display( "ccl2SDMRcoeffLevelZeros %0d", maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) ); |
outfifo_ITB.enq(SDMRcoeffLevelZeros (maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft))); |
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros (maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft))); |
end |
nextstate = ResidualBlock 5; |
nextstate = tagged ResidualBlock 5; |
end |
4: |
begin |
$display( "ccl2SDMRcoeffLevelZeros %0d", temp5bit2 ); |
outfifo_ITB.enq(SDMRcoeffLevelZeros temp5bit2); |
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros temp5bit2); |
temp5bit2 <= 0; |
nextstate = ResidualBlock 5; |
nextstate = tagged ResidualBlock 5; |
end |
5: |
begin |
1649,7 → 1649,7
begin |
tempint = signExtend(unpack(cavlcFIFO.fifo.first())); |
$display( "ccl2SDMRcoeffLevel %0d", tempint ); |
outfifo_ITB.enq(SDMRcoeffLevel cavlcFIFO.fifo.first()); |
outfifo_ITB.enq(tagged SDMRcoeffLevel cavlcFIFO.fifo.first()); |
cavlcFIFO.fifo.deq(); |
totalCoeff <= totalCoeff-1; |
if( zerosLeft > 0 ) |
1663,13 → 1663,13
begin |
zerosLeft <= zerosLeft - run_before; |
temp5bit2 <= zeroExtend(run_before); |
nextstate = ResidualBlock 4; |
nextstate = tagged ResidualBlock 4; |
end |
else |
nextstate = ResidualBlock 5; |
nextstate = tagged ResidualBlock 5; |
end |
else |
nextstate = ResidualBlock 5; |
nextstate = tagged ResidualBlock 5; |
end |
else |
begin |
1676,11 → 1676,11
if(!(mbPartPredMode(sdmmbtype,0)==Intra_16x16 && maxNumCoeff==16)) |
temp5bit <= temp5bit+1; |
if(residualChroma==0) |
nextstate = Residual 1; |
nextstate = tagged Residual 1; |
else if(maxNumCoeff==4) |
nextstate = Residual 3; |
nextstate = tagged Residual 3; |
else |
nextstate = Residual 5; |
nextstate = tagged Residual 5; |
end |
end |
default: $display( "ERROR EntropyDec: ResidualBlock default step" ); |
/trunk/src_fpga/mkCalc_nC.bsv
49,7 → 49,7
rule sendReq ( waiting == 1 && reqCount > 0 ); |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2}; |
memReqQ.enq(LoadReq temp ); |
memReqQ.enq(tagged LoadReq temp ); |
reqCount <= reqCount-1; |
endrule |
|
71,7 → 71,7
currMbHor <= currMbHor+1; |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2}; |
memReqQ.enq(StoreReq {addr:temp,data:20'b10000100001000010000} ); |
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b10000100001000010000} ); |
ipcmCount <= 0; |
waiting <= 0; |
endrule |
83,7 → 83,7
currMbHor <= currMbHor+1; |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2}; |
memReqQ.enq(StoreReq {addr:temp,data:20'b00000000000000000000} ); |
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b00000000000000000000} ); |
if(pskipCount == 1) |
waiting <= 0; |
end |
91,7 → 91,7
begin |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2}; |
memReqQ.enq(StoreReq {addr:temp,data:20'b00000000000000000000} ); |
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b00000000000000000000} ); |
end |
pskipCount <= pskipCount - 1; |
endrule |
133,7 → 133,7
respCount <= 2; |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2}; |
memReqQ.enq(LoadReq temp ); |
memReqQ.enq(tagged LoadReq temp ); |
//$display( "ERROR EntropyDec: mkCalc_nC loadMb incomplete" ); |
end |
end |
226,7 → 226,7
begin |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2}; |
memReqQ.enq(StoreReq {addr:temp,data:topValTemp} ); |
memReqQ.enq(tagged StoreReq {addr:temp,data:topValTemp} ); |
end |
//$display( "TRACE nNupdate_luma old leftVal %b", leftVal ); |
//$display( "TRACE nNupdate_luma old topVal %b", topVal ); |
267,7 → 267,7
currMbHor <= currMbHor+1; |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2}; |
memReqQ.enq(StoreReq {addr:temp,data:{topValChroma1Temp,topValChroma0Temp}} ); |
memReqQ.enq(tagged StoreReq {addr:temp,data:{topValChroma1Temp,topValChroma0Temp}} ); |
end |
endmethod |
|
280,7 → 280,7
pskipCount <= (inmb_skip_run << 1)-1; |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2}; |
memReqQ.enq(StoreReq {addr:temp,data:20'b00000000000000000000} ); |
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b00000000000000000000} ); |
leftVal <= 0; |
leftValChroma0 <= 10'b0000000000; |
leftValChroma1 <= 10'b0000000000; |
297,7 → 297,7
ipcmCount <= 1; |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2}; |
memReqQ.enq(StoreReq {addr:temp,data:20'b10000100001000010000} ); |
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b10000100001000010000} ); |
endmethod |
|
interface Client mem_client; |
/trunk/src_fpga/mkFrameBuffer.bsv
82,7 → 82,7
|
rule read_response; |
Bit#(32) resp_data <- bram.read_resp(); |
loadRespQ.enq(FBLoadResp resp_data); |
loadRespQ.enq(FBLoadResp (resp_data)); |
outstandingReqs <= outstandingReqs - 1; |
$display("FBuff resp , data: %h outstanding reqs: %d", resp_data, outstandingReqs - 1); |
endrule |
/trunk/src_fpga/mkNalUnwrap.bsv
79,7 → 79,7
end |
else if(zerocount==0) |
begin |
outfifo.enq(RbspByte bufferc); |
outfifo.enq(RbspByte (bufferc)); |
$display("ccl1rbspbyte %h", bufferc); |
bufferc <= bufferb; |
bufferb <= buffera; |
89,7 → 89,7
else |
begin |
zerocount <= zerocount-1; |
outfifo.enq(RbspByte 0); |
outfifo.enq(RbspByte (0)); |
$display("ccl1rbspbyte 00"); |
end |
endrule |
106,13 → 106,13
else if(zerocount==0) |
begin |
bufcount <= 2; |
outfifo.enq(RbspByte bufferc); |
outfifo.enq(RbspByte (bufferc)); |
$display("ccl1rbspbyte %h", bufferc); |
end |
else |
begin |
zerocount <= zerocount-1; |
outfifo.enq(RbspByte 0); |
outfifo.enq(RbspByte (0)); |
$display("ccl1rbspbyte 00"); |
end |
end |
120,7 → 120,7
begin |
bufcount <= 1; |
if(!(bufferb==0 && buffera==0)) |
outfifo.enq(RbspByte bufferb); |
outfifo.enq(RbspByte (bufferb)); |
$display("ccl1rbspbyte %h", bufferb); |
end |
1: |
127,7 → 127,7
begin |
bufcount <= 0; |
if(!(buffera==0)) |
outfifo.enq(RbspByte buffera); |
outfifo.enq(RbspByte (buffera)); |
$display("ccl1rbspbyte %h", buffera); |
end |
0: |
/trunk/src_fpga/mkBufferControl.bsv
102,7 → 102,7
begin |
state <= RemoveFound; |
if(state==RemoveOutput) |
returnList.enq(Valid tpl_2(temp)); |
returnList.enq(tagged Valid tpl_2(temp)); |
end |
if(tempCount>=picCount) |
$display( "ERROR BufferControl: ShortTermPicList removing not found"); |
148,7 → 148,7
Tuple2#(Bit#(16),Bit#(5)) temp = rfile.sub(tempPic); |
if(tpl_1(temp)==tempNum) |
begin |
returnList.enq(Valid tpl_2(temp)); |
returnList.enq(tagged Valid tpl_2(temp)); |
state <= Idle; |
end |
tempPic <= shortTermPicListPrev(tempPic); |
162,7 → 162,7
if(tempCount<picCount) |
begin |
Tuple2#(Bit#(16),Bit#(5)) temp = rfile.sub(tempPic); |
returnList.enq(Valid tpl_2(temp)); |
returnList.enq(tagged Valid tpl_2(temp)); |
tempPic <= shortTermPicListPrev(tempPic); |
tempCount <= tempCount+1; |
end |
298,7 → 298,7
begin |
Maybe#(Bit#(5)) temp = rfile.sub(tempPic); |
if(temp matches tagged Valid .data) |
returnList.enq(Valid data); |
returnList.enq(tagged Valid data); |
tempPic <= tempPic+1; |
end |
else |
318,7 → 318,7
method Action insert( Bit#(5) frameNum, Bit#(5) slot ) if(state matches tagged Idle); |
if(rfile.sub(frameNum) matches tagged Invalid) |
picCount <= picCount+1; |
rfile.upd(frameNum,Valid slot); |
rfile.upd(frameNum,tagged Valid slot); |
//$display( "TRACE BufferControl: LongTermPicList insert %h %h %h", picCount, frameNum, slot); |
endmethod |
|
933,11 → 933,11
rule interResp ( loadRespQ2.first() matches tagged FBLoadResp .data ); |
loadRespQ2.deq(); |
if(inLoadOutOfBounds.first() == 2'b10) |
inLoadRespQ.enq(IPLoadResp ({data[7:0],data[7:0],data[7:0],data[7:0]})); |
inLoadRespQ.enq(tagged IPLoadResp ({data[7:0],data[7:0],data[7:0],data[7:0]})); |
else if(inLoadOutOfBounds.first() == 2'b11) |
inLoadRespQ.enq(IPLoadResp ({data[31:24],data[31:24],data[31:24],data[31:24]})); |
inLoadRespQ.enq(tagged IPLoadResp ({data[31:24],data[31:24],data[31:24],data[31:24]})); |
else |
inLoadRespQ.enq(IPLoadResp data); |
inLoadRespQ.enq(tagged IPLoadResp data); |
inLoadOutOfBounds.deq(); |
//$display( "Trace BufferControl: interResp %h %h", inLoadOutOfBounds.first(), data); |
endrule |
/trunk/src_fpga/build/Makefile
1,7 → 1,7
#======================================================================= |
# 6.375 Makefile for bsc-compile |
#----------------------------------------------------------------------- |
# $Id: Makefile,v 1.2 2008-06-26 17:52:25 jamey.hicks Exp $ |
# $Id: Makefile,v 1.3 2008-06-26 17:52:59 jamey.hicks Exp $ |
# |
|
default : all |
64,7 → 64,6
$(srcdir)/mkMemClient.bsv \ |
$(srcdir)/mkBRAMMemController.bsv \ |
$(srcdir)/mkRoundRobinMemScheduler.bsv \ |
$(srcdir)/mkReadFirstRoundRobinMemScheduler.bsv \ |
$(srcdir)/mkPriorityRoundRobinMemScheduler.bsv \ |
$(srcdir)/BRAM.bsv \ |
$(srcdir)/FIFO_2.bsv \ |
/trunk/src_fpga/mkInverseTrans.bsv
635,7 → 635,7
|
for(Integer ii=0; ii<4; ii=ii+1) |
outputVector[ii] = truncate((workVectorTemp[pixelNum+fromInteger(ii)]+32) >> 6); |
outfifo.enq(ITBresidual outputVector); |
outfifo.enq( tagged ITBresidual outputVector); |
Int#(10) tempint = unpack(outputVector[0]); |
$display("ccl3IBTresidual %0d", tempint); |
tempint = unpack(outputVector[1]); |
/trunk/src_fpga/mkMemED.bsv
43,7 → 43,7
|
rule readresp ( True ); |
let temp <- bramfile.read_resp; |
respQ.enq( LoadResp temp ); |
respQ.enq( LoadResp (temp) ); |
endrule |
|
interface Server mem_server; |
/trunk/src_fpga/mkInputGen.bsv
120,7 → 120,7
2'b00: data[31:24]; |
endcase; |
counter <= counter + 1; |
outfifo.enq(DataByte data_byte); |
outfifo.enq(DataByte (data_byte)); |
data_counter <= data_counter - 1; |
addr <= addr + 1; |
end |
/trunk/src/mkPrediction.bsv
296,9 → 296,9
currMbHor <= xdata; |
currMbVer <= 0; |
intra4x4typeLeft <= replicate(15); |
interTopLeftVal <= replicate(NotInter 0); |
interTopLeftVal <= replicate(NotInter (0)); |
if(xdata==0) |
interLeftVal <= replicate(NotInter 0); |
interLeftVal <= replicate(NotInter (0)); |
outFirstQPFlag <= True; |
end |
tagged SDmb_skip_run .xdata : passFlag <= False; |
337,8 → 337,8
interRespCount <= 1; |
intra4x4typeLeft <= replicate(14); |
intra4x4typeTop <= replicate(14); |
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter 0)); |
interTopVal <= replicate(NotInter 0); |
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter (0))); |
interTopVal <= replicate(NotInter (0)); |
interPskipCount <= interPskipCount+1; |
interNewestMv <= 0; |
interRefIdxVector <= replicate(0); |
376,9 → 376,9
$display( "ERROR Prediction: MacroblockLayer 5 sdmmbtype not I_16x16" ); |
intraReqCount <= 1; |
intraRespCount <= 1; |
interTopLeftVal <= replicate(NotInter 1); |
interLeftVal <= replicate(NotInter 1); |
interTopVal <= replicate(NotInter 1); |
interTopLeftVal <= replicate(NotInter (1)); |
interLeftVal <= replicate(NotInter (1)); |
interTopVal <= replicate(NotInter (1)); |
end |
else |
donotfire.doNotFire(); |
391,9 → 391,9
intrastate <= Intra4x4; |
intraReqCount <= 1; |
intraRespCount <= 1; |
interTopLeftVal <= replicate(NotInter 1); |
interLeftVal <= replicate(NotInter 1); |
interTopVal <= replicate(NotInter 1); |
interTopLeftVal <= replicate(NotInter (1)); |
interLeftVal <= replicate(NotInter (1)); |
interTopVal <= replicate(NotInter (1)); |
end |
else |
donotfire.doNotFire(); |
404,9 → 404,9
$finish;//////////////////////////////////////////////////////////////////////////////////////// |
intra4x4typeLeft <= replicate(13); |
intra4x4typeTop <= replicate(13); |
interTopLeftVal <= replicate(NotInter 1); |
interLeftVal <= replicate(NotInter 1); |
interTopVal <= replicate(NotInter 1); |
interTopLeftVal <= replicate(NotInter (1)); |
interLeftVal <= replicate(NotInter (1)); |
interTopVal <= replicate(NotInter (1)); |
end |
else |
begin |
425,8 → 425,8
interRespCount <= 1; |
intra4x4typeLeft <= replicate(14);///////////////////////////////////////////////////////////////////////////// |
intra4x4typeTop <= replicate(14); |
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter 0)); |
interTopVal <= replicate(NotInter 0); |
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter (0))); |
interTopVal <= replicate(NotInter (0)); |
interNewestMv <= 0; |
interRefIdxVector <= replicate(0); |
nextoutputfifo.enq(NonSkipMB); |
551,7 → 551,7
begin |
interBSoutput <= True; |
outputVector = predictedfifo.first(); |
outfifo.enq(PBoutput outputVector); |
outfifo.enq(PBoutput (outputVector)); |
outputFlag = 1; |
predictedfifo.deq(); |
$display( "Trace Prediction: outputing SkipMB out %h %h %h", outBlockNum, outPixelNum, outputVector); |
601,7 → 601,7
else |
outputVector[ii] = tempOutputValue[7:0]; |
end |
outfifo.enq(PBoutput outputVector); |
outfifo.enq(PBoutput (outputVector)); |
infifo_ITB.deq(); |
predictedfifo.deq(); |
outputFlag = 1; |
634,7 → 634,7
if(outPixelNum == 12) |
infifo_ITB.deq(); |
outputVector = predictedfifo.first(); |
outfifo.enq(PBoutput outputVector); |
outfifo.enq(PBoutput (outputVector)); |
outputFlag = 1; |
predictedfifo.deq(); |
$display( "Trace Prediction: outputing ITBcoeffLevelZeros out %h %h %h %h %h", outChromaFlag, outBlockNum, outPixelNum, predictedfifo.first(), outputVector); |
849,7 → 849,7
end |
if(!noMoreReq) |
begin |
interMemReqQ.enq(LoadReq temp); |
interMemReqQ.enq(LoadReq (temp)); |
interReqCount <= interReqCount+1; |
//$display( "TRACE Prediction: interSendReq addr %0d",temp);/////////////////////// |
end |
868,8 → 868,8
interIPStepCount <= 1; |
if(currMbHorTemp == 0) |
begin |
interLeftVal <= replicate(NotInter 0); |
interTopLeftVal <= replicate(NotInter 0); |
interLeftVal <= replicate(NotInter (0)); |
interTopLeftVal <= replicate(NotInter (0)); |
end |
$display( "Trace Prediction: interReceiveNoResp %h %h", interstate, interRespCount); |
endrule |
923,8 → 923,8
interIPStepCount <= 1; |
if(currMbHorTemp == 0) |
begin |
interLeftVal <= replicate(NotInter 0); |
interTopLeftValNext = replicate(NotInter 0); |
interLeftVal <= replicate(NotInter (0)); |
interTopLeftValNext = replicate(NotInter (0)); |
end |
end |
interTopVal <= interTopValNext; |
1015,17 → 1015,17
else |
$display( "ERROR Prediction: interProcessStep unexpected interstate"); |
Bit#(4) refIndex = ((interstate==InterPskip||interstate==InterP8x8ref0) ? 0 : interRefIdxVector[interMbPartNum]); |
Vector#(3,InterBlockMv) blockABC = replicate(NotInter 0); |
Vector#(3,InterBlockMv) blockABC = replicate(NotInter (0)); |
if( currMbTemp-firstMb==0 && blockHor==0 ) |
blockABC[0] = (NotInter 0); |
blockABC[0] = (NotInter (0)); |
else |
blockABC[0] = interLeftVal[blockVer]; |
if( currMbTemp-firstMb<zeroExtend(picWidth) && blockVer==0 ) |
blockABC[1] = (NotInter 0); |
blockABC[1] = (NotInter (0)); |
else |
blockABC[1] = interTopVal[blockHor]; |
blockABC[2] = interTopVal[{1'b0,blockHor}+partWidth]; |
if(noBlockC || blockABC[2]==(NotInter 0)) |
if(noBlockC || blockABC[2]==(NotInter (0))) |
blockABC[2] = interTopLeftVal[blockVer]; |
Bit#(14) mvhorfinal = 0; |
Bit#(12) mvverfinal = 0; |
1083,7 → 1083,7
mvverPred = 0; |
end |
end |
else if(blockABC[ii] matches tagged NotInter 0) |
else if(blockABC[ii] matches tagged NotInter (0)) |
begin |
mvhorPred = 0; |
mvverPred = 0; |
1358,7 → 1358,7
end |
if(noMoreReq == 0) |
begin |
intraMemReqQ.enq(LoadReq temp); |
intraMemReqQ.enq(LoadReq (temp)); |
intraReqCount <= intraReqCount+1; |
//$display( "TRACE Prediction: intraSendReq addr %0d",temp);/////////////////////// |
end |
1374,7 → 1374,7
intraStepCount <= 1; |
blockNum <= 0; |
pixelNum <= 0; |
interOutBlockMvfifo.enq(NotInter 1); |
interOutBlockMvfifo.enq(NotInter (1)); |
$display( "Trace Prediction: intraReceiveNoResp"); |
endrule |
|
1436,7 → 1436,7
intraStepCount <= 1; |
blockNum <= 0; |
pixelNum <= 0; |
interOutBlockMvfifo.enq(NotInter 1); |
interOutBlockMvfifo.enq(NotInter (1)); |
end |
$display( "Trace Prediction: intraReceiveResp"); |
endrule |
/trunk/src/mkDeblockFilter.bsv
354,7 → 354,7
tagged NewUnit . xdata : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(EDOT (infifo.first())); |
$display("ccl5newunit"); |
$display("ccl5rbspbyte %h", xdata); |
end |
361,13 → 361,13
tagged SPSpic_width_in_mbs .xdata : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(EDOT (infifo.first())); |
picWidth <= xdata; |
end |
tagged SPSpic_height_in_map_units .xdata : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(EDOT (infifo.first())); |
picHeight <= xdata; |
end |
tagged PPSdeblocking_filter_control_present_flag .xdata : |
383,7 → 383,7
tagged SHfirst_mb_in_slice .xdata : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(EDOT (infifo.first())); |
firstMb <= xdata; |
currMb <= xdata; |
currMbHor <= xdata; |
421,7 → 421,7
tagged EndOfFile : |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(EDOT (infifo.first())); |
$display( "ccl5: EndOfFile reached"); |
//$finish(0); |
end |
428,7 → 428,7
default: |
begin |
infifo.deq(); |
outfifo.enq(EDOT infifo.first()); |
outfifo.enq(EDOT (infifo.first())); |
end |
endcase |
endrule |
472,10 → 472,10
else |
begin |
if(dataReqCount==1) |
parameterMemReqQ.enq(LoadReq temp); |
parameterMemReqQ.enq(LoadReq (temp)); |
Bit#(4) temp2 = truncate(dataReqCount-1); |
let temp3 = {temp,chromaFlag,temp2}; |
dataMemReqQ.enq(LoadReq temp3); |
dataMemReqQ.enq(LoadReq (temp3)); |
if(dataReqCount==16) |
dataReqCount <= 0; |
else |
/trunk/src/mkEntropyDec.bsv
185,11 → 185,11
nalrefidc <= rdata[6:5]; |
nalunittype <= rdata[4:0]; |
case (rdata[4:0]) |
1 : state <= CodedSlice 0; |
5 : state <= CodedSlice 0; |
1 : state <= CodedSlice (0); |
5 : state <= CodedSlice (0); |
6 : state <= SEI; |
7 : state <= SPS 0; |
8 : state <= PPS 0; |
7 : state <= SPS (0); |
8 : state <= PPS (0); |
9 : state <= AUD; |
10: state <= EndSequence; |
11: state <= EndStream; |
202,8 → 202,8
endcase |
$display("ccl2newunit"); |
$display("ccl2rbspbyte %h", rdata); |
outfifo.enq(NewUnit rdata); |
outfifo_ITB.enq(NewUnit rdata); |
outfifo.enq(NewUnit (rdata)); |
outfifo_ITB.enq(NewUnit (rdata)); |
end |
tagged EndOfFile : state <= Start; |
endcase |
276,26 → 276,26
0: |
begin |
$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)); |
calcnc.initialize(truncate(expgolomb_unsigned(buffer))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 1; |
nextstate = CodedSlice (1); |
end |
1: |
begin |
$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)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 2; |
nextstate = CodedSlice (2); |
end |
2: |
begin |
$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); |
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" ); |
end |
3: |
303,9 → 303,9
Bit#(16) tttt = buffer[buffersize-1:buffersize-16]; |
tttt = tttt >> 16 - zeroExtend(spslog2_max_frame_num); |
$display( "ccl2SHframe_num %0d", tttt ); |
outfifo.enq(SHframe_num tttt); |
outfifo.enq(SHframe_num (tttt)); |
numbitsused = zeroExtend(spslog2_max_frame_num); |
nextstate = CodedSlice 4; |
nextstate = CodedSlice (4); |
end |
4: |
begin |
312,10 → 312,10
if(nalunittype == 5) |
begin |
$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); |
end |
nextstate = CodedSlice 5; |
nextstate = CodedSlice (5); |
end |
5: |
begin |
324,12 → 324,12
Bit#(16) tttt = buffer[buffersize-1:buffersize-16]; |
tttt = tttt >> 16 - zeroExtend(spslog2_max_pic_order_cnt_lsb); |
$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); |
nextstate = CodedSlice 6; |
nextstate = CodedSlice (6); |
end |
else |
nextstate = CodedSlice 7; |
nextstate = CodedSlice (7); |
end |
6: |
begin |
340,20 → 340,20
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = CodedSlice 6; |
nextstate = CodedSlice (6); |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$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; |
numbitsused = egnumbits; |
nextstate = CodedSlice 7; |
nextstate = CodedSlice (7); |
end |
end |
else |
nextstate = CodedSlice 7; |
nextstate = CodedSlice (7); |
end |
7: |
begin |
364,20 → 364,20
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = CodedSlice 7; |
nextstate = CodedSlice (7); |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$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; |
numbitsused = egnumbits; |
nextstate = CodedSlice 8; |
nextstate = CodedSlice (8); |
end |
end |
else |
nextstate = CodedSlice 9; |
nextstate = CodedSlice (9); |
end |
8: |
begin |
388,20 → 388,20
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = CodedSlice 8; |
nextstate = CodedSlice (8); |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$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; |
numbitsused = egnumbits; |
nextstate = CodedSlice 9; |
nextstate = CodedSlice (9); |
end |
end |
else |
nextstate = CodedSlice 9; |
nextstate = CodedSlice (9); |
end |
9: |
begin |
408,23 → 408,23
if(shslice_type == 0 || shslice_type == 5) |
begin |
$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; |
if(buffer[buffersize-1] == 1) |
nextstate = CodedSlice 10; |
nextstate = CodedSlice (10); |
else |
nextstate = CodedSlice 11; |
nextstate = CodedSlice (11); |
end |
else |
nextstate = CodedSlice 11; |
nextstate = CodedSlice (11); |
end |
10: |
begin |
$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)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = CodedSlice 11; |
nextstate = CodedSlice (11); |
end |
11: |
begin |
431,87 → 431,87
if(shslice_type != 2 && shslice_type != 7) |
begin |
$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; |
if(buffer[buffersize-1] == 1) |
nextstate = CodedSlice 12; |
nextstate = CodedSlice (12); |
else |
nextstate = CodedSlice 15; |
nextstate = CodedSlice (15); |
end |
else |
nextstate = CodedSlice 15; |
nextstate = CodedSlice (15); |
end |
12: |
begin |
$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); |
if(expgolomb_unsigned(buffer)==0 || expgolomb_unsigned(buffer)==1) |
nextstate = CodedSlice 13; |
nextstate = CodedSlice (13); |
else if(expgolomb_unsigned(buffer)==2) |
nextstate = CodedSlice 14; |
nextstate = CodedSlice (14); |
else |
nextstate = CodedSlice 15; |
nextstate = CodedSlice (15); |
end |
13: |
begin |
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1; |
$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); |
nextstate = CodedSlice 12; |
nextstate = CodedSlice (12); |
end |
14: |
begin |
$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); |
nextstate = CodedSlice 12; |
nextstate = CodedSlice (12); |
end |
15: |
begin |
if(nalrefidc == 0) |
nextstate = CodedSlice 23; |
nextstate = CodedSlice (23); |
else |
begin |
if(nalunittype == 5) |
begin |
$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; |
nextstate = CodedSlice 16; |
nextstate = CodedSlice (16); |
end |
else |
nextstate = CodedSlice 17; |
nextstate = CodedSlice (17); |
end |
end |
16: |
begin |
$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; |
nextstate = CodedSlice 23; |
nextstate = CodedSlice (23); |
end |
17: |
begin |
$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; |
if(buffer[buffersize-1] == 1) |
nextstate = CodedSlice 18; |
nextstate = CodedSlice (18); |
else |
nextstate = CodedSlice 23; |
nextstate = CodedSlice (23); |
end |
18: |
begin |
$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)); |
numbitsused = expgolomb_numbits(buffer); |
if(expgolomb_unsigned(buffer)!=0) |
nextstate = CodedSlice 19; |
nextstate = CodedSlice (19); |
else |
nextstate = CodedSlice 23; |
nextstate = CodedSlice (23); |
end |
19: |
begin |
519,12 → 519,12
begin |
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1; |
$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); |
nextstate = CodedSlice 20; |
nextstate = CodedSlice (20); |
end |
else |
nextstate = CodedSlice 20; |
nextstate = CodedSlice (20); |
end |
20: |
begin |
531,12 → 531,12
if(shdmemory_management_control_operation==2) |
begin |
$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); |
nextstate = CodedSlice 21; |
nextstate = CodedSlice (21); |
end |
else |
nextstate = CodedSlice 21; |
nextstate = CodedSlice (21); |
end |
21: |
begin |
543,12 → 543,12
if(shdmemory_management_control_operation==3 || shdmemory_management_control_operation==6) |
begin |
$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); |
nextstate = CodedSlice 22; |
nextstate = CodedSlice (22); |
end |
else |
nextstate = CodedSlice 22; |
nextstate = CodedSlice (22); |
end |
22: |
begin |
555,20 → 555,20
if(shdmemory_management_control_operation==4) |
begin |
$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); |
nextstate = CodedSlice 18; |
nextstate = CodedSlice (18); |
end |
else |
nextstate = CodedSlice 18; |
nextstate = CodedSlice (18); |
end |
23: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
nextstate = CodedSlice 24; |
nextstate = CodedSlice (24); |
end |
24: |
begin |
575,35 → 575,35
if(ppsdeblocking_filter_control_present_flag==1) |
begin |
$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); |
if(expgolomb_unsigned(buffer)!=1) |
nextstate = CodedSlice 25; |
nextstate = CodedSlice (25); |
else |
nextstate = CodedSlice 27; |
nextstate = CodedSlice (27); |
end |
else |
nextstate = CodedSlice 27; |
nextstate = CodedSlice (27); |
end |
25: |
begin |
tempint = unpack(expgolomb_signed(buffer) << 1); |
$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); |
nextstate = CodedSlice 26; |
nextstate = CodedSlice (26); |
end |
26: |
begin |
tempint = unpack(expgolomb_signed(buffer) << 1); |
$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); |
nextstate = CodedSlice 27; |
nextstate = CodedSlice (27); |
end |
27: |
begin |
nextstate = SliceData 0; |
nextstate = SliceData (0); |
end |
default: $display( "ERROR EntropyDec: CodedSlice default step" ); |
endcase |
625,53 → 625,53
outputdata = buffer[buffersize-17:buffersize-24]; |
$display( "INFO EntropyDec: level_idc = %d", outputdata ); |
numbitsused = 24; |
nextstate = SPS 1; |
nextstate = SPS (1); |
end |
1: |
begin |
$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)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 2; |
nextstate = SPS (2); |
end |
2: |
begin |
$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); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 3; |
nextstate = SPS (3); |
end |
3: |
begin |
let tttt = expgolomb_unsigned(buffer); |
$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); |
numbitsused = expgolomb_numbits(buffer); |
if(tttt == 0) |
nextstate = SPS 4; |
nextstate = SPS (4); |
else if(tttt == 1) |
nextstate = SPS 5; |
nextstate = SPS (5); |
else |
nextstate = SPS 10; |
nextstate = SPS (10); |
end |
4: |
begin |
$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); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 10; |
nextstate = SPS (10); |
end |
5: |
begin |
$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]; |
numbitsused = 1; |
nextstate = SPS 6; |
nextstate = SPS (6); |
end |
6: |
begin |
680,16 → 680,16
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = SPS 6; |
nextstate = SPS (6); |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$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; |
numbitsused = egnumbits; |
nextstate = SPS 7; |
nextstate = SPS (7); |
end |
end |
7: |
699,30 → 699,30
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = SPS 7; |
nextstate = SPS (7); |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$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; |
numbitsused = egnumbits; |
nextstate = SPS 8; |
nextstate = SPS (8); |
end |
end |
8: |
begin |
$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)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 9; |
nextstate = SPS (9); |
end |
9: |
begin |
if(spsnum_ref_frames_in_pic_order_cnt_cycle == 0) |
nextstate = SPS 10; |
nextstate = SPS (10); |
else |
begin |
if(egnumbits == 0) |
730,17 → 730,17
Bufcount tempbufcount = expgolomb_numbits32(buffer); |
egnumbits <= tempbufcount; |
numbitsused = tempbufcount-1; |
nextstate = SPS 9; |
nextstate = SPS (9); |
end |
else |
begin |
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits)); |
$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; |
spsnum_ref_frames_in_pic_order_cnt_cycle <= spsnum_ref_frames_in_pic_order_cnt_cycle - 1; |
numbitsused = egnumbits; |
nextstate = SPS 9; |
nextstate = SPS (9); |
end |
end |
end |
747,82 → 747,82
10: |
begin |
$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); |
nextstate = SPS 11; |
nextstate = SPS (11); |
end |
11: |
begin |
$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; |
nextstate = SPS 12; |
nextstate = SPS (12); |
end |
12: |
begin |
$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)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SPS 13; |
nextstate = SPS (13); |
end |
13: |
begin |
$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); |
nextstate = SPS 14; |
nextstate = SPS (14); |
end |
14: |
begin |
//SPSframe_mbs_only_flag = 1 for baseline |
numbitsused = 1; |
nextstate = SPS 15; |
nextstate = SPS (15); |
end |
15: |
begin |
$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; |
nextstate = SPS 16; |
nextstate = SPS (16); |
end |
16: |
begin |
$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; |
if(buffer[buffersize-1] == 1) |
nextstate = SPS 17; |
nextstate = SPS (17); |
else |
nextstate = SPS 21; |
nextstate = SPS (21); |
end |
17: |
begin |
$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); |
nextstate = SPS 18; |
nextstate = SPS (18); |
end |
18: |
begin |
$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); |
nextstate = SPS 19; |
nextstate = SPS (19); |
end |
19: |
begin |
$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); |
nextstate = SPS 20; |
nextstate = SPS (20); |
end |
20: |
begin |
$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); |
nextstate = SPS 21; |
nextstate = SPS (21); |
end |
21: |
begin |
839,17 → 839,17
begin |
ppspic_parameter_set_id <= truncate(expgolomb_unsigned(buffer)); |
$display( "ccl2PPSpic_parameter_set_id %0d", 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.enq(PPSpic_parameter_set_id (truncate(expgolomb_unsigned(buffer)))); |
outfifo_ITB.enq(PPSpic_parameter_set_id (truncate(expgolomb_unsigned(buffer)))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 1; |
nextstate = PPS (1); |
end |
1: |
begin |
$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); |
nextstate = PPS 2; |
nextstate = PPS (2); |
if(spsseq_parameter_set_id != truncate(expgolomb_unsigned(buffer))) |
$display( "ERROR EntropyDec: seq_parameter_set_id don't match" ); |
end |
857,20 → 857,20
begin |
//PPSentropy_coding_mode_flag = 0 for baseline |
numbitsused = 1; |
nextstate = PPS 3; |
nextstate = PPS (3); |
end |
3: |
begin |
ppspic_order_present_flag <= 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; |
nextstate = PPS 4; |
nextstate = PPS (4); |
end |
4: |
begin |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 5; |
nextstate = PPS (5); |
if(expgolomb_unsigned(buffer)+1 != 1) |
$display( "ERROR EntropyDec: PPSnum_slice_groups not equal to 1" );//=1 for main |
end |
877,66 → 877,66
5: |
begin |
$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)); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = PPS 6; |
nextstate = PPS (6); |
end |
6: |
begin |
$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); |
nextstate = PPS 7; |
nextstate = PPS (7); |
end |
7: |
begin |
//PPSweighted_pred_flag = 0 for baseline; PPSweighted_bipred_idc = 0 for baseline |
numbitsused = 3; |
nextstate = PPS 8; |
nextstate = PPS (8); |
end |
8: |
begin |
$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); |
nextstate = PPS 9; |
nextstate = PPS (9); |
end |
9: |
begin |
$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); |
nextstate = PPS 10; |
nextstate = PPS (10); |
end |
10: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
nextstate = PPS 11; |
nextstate = PPS (11); |
end |
11: |
begin |
ppsdeblocking_filter_control_present_flag <= 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; |
nextstate = PPS 12; |
nextstate = PPS (12); |
end |
12: |
begin |
$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; |
nextstate = PPS 13; |
nextstate = PPS (13); |
end |
13: |
begin |
//PPSredundant_pic_cnt_present_flag = 0 for main |
numbitsused = 1; |
nextstate = PPS 14; |
nextstate = PPS (14); |
if(buffer[buffersize-1] != 0) |
$display( "ERROR EntropyDec: PPSredundant_pic_cnt_present_flag not equal to 0" );//=0 for main |
end |
949,7 → 949,7
end |
tagged AUD .step : |
begin |
outfifo.enq(AUDPrimaryPicType buffer[buffersize-1:buffersize-3]); |
outfifo.enq(AUDPrimaryPicType (buffer[buffersize-1:buffersize-3])); |
numbitsused = 3; |
nextstate = Start; |
end |
975,14 → 975,14
if( shslice_type!=2 && shslice_type!=7 ) |
begin |
$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)); |
calcnc.nNupdate_pskip( truncate(expgolomb_unsigned(buffer)) ); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SliceData 1; |
nextstate = SliceData (1); |
end |
else |
nextstate = SliceData 2; |
nextstate = SliceData (2); |
end |
1: |
begin |
990,13 → 990,13
begin |
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main |
tempreg <= tempreg-1; |
nextstate = SliceData 1; |
nextstate = SliceData (1); |
end |
else |
begin |
////$display( "ccl2SDcurrMbAddr %0d", currMbAddr ); |
////outfifo.enq(SDcurrMbAddr currMbAddr); |
nextstate = SliceData 2; |
nextstate = SliceData (2); |
end |
end |
2: |
1004,16 → 1004,16
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 ) |
begin |
calcnc.loadMb(currMbAddr); |
nextstate = MacroblockLayer 0; |
nextstate = MacroblockLayer (0); |
end |
else |
nextstate = SliceData 3; |
nextstate = SliceData (3); |
end |
3: |
begin |
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main |
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 ) |
nextstate = SliceData 0; |
nextstate = SliceData (0); |
else |
nextstate = Start; |
end |
1026,23 → 1026,23
0: |
begin |
$display( "ccl2SDMmb_type %0d", expgolomb_unsigned(buffer) ); |
outfifo.enq(SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) ); |
outfifo_ITB.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)) ); |
sdmmbtype <= mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type); |
numbitsused = expgolomb_numbits(buffer); |
if(mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) == I_PCM) |
begin |
calcnc.nNupdate_ipcm(); |
nextstate = MacroblockLayer 1; |
nextstate = MacroblockLayer (1); |
end |
else |
nextstate = MacroblockLayer 4; |
nextstate = MacroblockLayer (4); |
end |
1: |
begin |
tempreg <= 256; |
numbitsused = zeroExtend(bufcount[2:0]); |
nextstate = MacroblockLayer 2; |
nextstate = MacroblockLayer (2); |
end |
2: |
begin |
1050,15 → 1050,15
begin |
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8]; |
$display( "ccl2SDMpcm_sample_luma %0d", outputdata ); |
outfifo.enq(SDMpcm_sample_luma outputdata); |
outfifo.enq(SDMpcm_sample_luma (outputdata)); |
tempreg <= tempreg-1; |
numbitsused = 8; |
nextstate = MacroblockLayer 2; |
nextstate = MacroblockLayer (2); |
end |
else |
begin |
tempreg <= 128; |
nextstate = MacroblockLayer 3; |
nextstate = MacroblockLayer (3); |
end |
end |
3: |
1067,13 → 1067,13
begin |
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8]; |
$display( "ccl2SDMpcm_sample_chroma %0d", outputdata ); |
outfifo.enq(SDMpcm_sample_chroma outputdata); |
outfifo.enq(SDMpcm_sample_chroma (outputdata)); |
tempreg <= tempreg-1; |
numbitsused = 8; |
nextstate = MacroblockLayer 3; |
nextstate = MacroblockLayer (3); |
end |
else |
nextstate = SliceData 3; |
nextstate = SliceData (3); |
end |
4: |
begin |
1080,9 → 1080,9
if(sdmmbtype != I_NxN |
&&& mbPartPredMode(sdmmbtype,0) != Intra_16x16 |
&&& numMbPart(sdmmbtype) == 4) |
nextstate = SubMbPrediction 0; |
nextstate = SubMbPrediction (0); |
else |
nextstate = MbPrediction 0; |
nextstate = MbPrediction (0); |
end |
5: |
begin |
1104,7 → 1104,7
else |
$display( "ERROR EntropyDec: MacroblockLayer 5 sdmmbtype not I_16x16" ); |
end |
nextstate = MacroblockLayer 6; |
nextstate = MacroblockLayer (6); |
end |
6: |
begin |
1114,13 → 1114,13
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
end |
residualChroma <= 0; |
temp5bit <= 0; |
maxNumCoeff <= 16; |
nextstate = ResidualBlock 0; |
nextstate = ResidualBlock (0); |
end |
default: $display( "ERROR EntropyDec: MacroblockLayer default step" ); |
endcase |
1133,24 → 1133,24
if(mbPartPredMode(sdmmbtype,0) == Intra_16x16) |
begin |
$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); |
nextstate = MacroblockLayer 5; |
nextstate = MacroblockLayer (5); |
end |
else if(mbPartPredMode(sdmmbtype,0) == Intra_4x4) |
begin |
temp5bit <= 16; |
nextstate = MbPrediction 1; |
nextstate = MbPrediction (1); |
end |
else if(num_ref_idx_l0_active_minus1 > 0) |
begin |
temp3bit0 <= numMbPart(sdmmbtype); |
nextstate = MbPrediction 2; |
nextstate = MbPrediction (2); |
end |
else |
begin |
temp3bit0 <= numMbPart(sdmmbtype); |
nextstate = MbPrediction 3; |
nextstate = MbPrediction (3); |
end |
end |
1: |
1158,9 → 1158,9
if(temp5bit == 0) |
begin |
$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); |
nextstate = MacroblockLayer 5; |
nextstate = MacroblockLayer (5); |
end |
else |
begin |
1169,16 → 1169,16
begin |
Bit#(4) tttt = buffer[buffersize-1:buffersize-4]; |
$display( "ccl2SDMMrem_intra4x4_pred_mode %0d", tttt ); |
outfifo.enq(SDMMrem_intra4x4_pred_mode tttt); |
outfifo.enq(SDMMrem_intra4x4_pred_mode (tttt)); |
numbitsused = 4; |
end |
else |
begin |
outfifo.enq(SDMMrem_intra4x4_pred_mode 4'b1000); |
outfifo.enq(SDMMrem_intra4x4_pred_mode (4'b1000)); |
numbitsused = 1; |
end |
temp5bit <= temp5bit-1; |
nextstate = MbPrediction 1; |
nextstate = MbPrediction (1); |
end |
end |
2: |
1186,24 → 1186,24
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$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; |
end |
else |
begin |
$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); |
end |
if(temp3bit0 == 1) |
begin |
temp3bit0 <= numMbPart(sdmmbtype); |
nextstate = MbPrediction 3; |
nextstate = MbPrediction (3); |
end |
else |
begin |
temp3bit0 <= temp3bit0-1; |
nextstate = MbPrediction 2; |
nextstate = MbPrediction (2); |
end |
end |
3: |
1210,21 → 1210,21
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
nextstate = MbPrediction 4; |
nextstate = MbPrediction (4); |
end |
4: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
temp3bit0 <= temp3bit0-1; |
if(temp3bit0 == 1) |
nextstate = MacroblockLayer 5; |
nextstate = MacroblockLayer (5); |
else |
nextstate = MbPrediction 3; |
nextstate = MbPrediction (3); |
end |
default: $display( "ERROR EntropyDec: MbPrediction default step" ); |
endcase |
1235,38 → 1235,38
0: |
begin |
$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))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 1; |
nextstate = SubMbPrediction (1); |
end |
1: |
begin |
$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))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 2; |
nextstate = SubMbPrediction (2); |
end |
2: |
begin |
$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))); |
numbitsused = expgolomb_numbits(buffer); |
nextstate = SubMbPrediction 3; |
nextstate = SubMbPrediction (3); |
end |
3: |
begin |
$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))); |
numbitsused = expgolomb_numbits(buffer); |
if(num_ref_idx_l0_active_minus1 > 0 |
&& sdmmbtype != P_8x8ref0) |
nextstate = SubMbPrediction 4; |
nextstate = SubMbPrediction (4); |
else |
nextstate = SubMbPrediction 8; |
nextstate = SubMbPrediction (8); |
end |
4: |
begin |
1273,16 → 1273,16
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$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; |
end |
else |
begin |
$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); |
end |
nextstate = SubMbPrediction 5; |
nextstate = SubMbPrediction (5); |
end |
5: |
begin |
1289,16 → 1289,16
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$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; |
end |
else |
begin |
$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); |
end |
nextstate = SubMbPrediction 6; |
nextstate = SubMbPrediction (6); |
end |
6: |
begin |
1305,16 → 1305,16
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$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; |
end |
else |
begin |
$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); |
end |
nextstate = SubMbPrediction 7; |
nextstate = SubMbPrediction (7); |
end |
7: |
begin |
1321,96 → 1321,96
if(num_ref_idx_l0_active_minus1 == 1) |
begin |
$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; |
end |
else |
begin |
$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); |
end |
nextstate = SubMbPrediction 8; |
nextstate = SubMbPrediction (8); |
end |
8: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
nextstate = SubMbPrediction 9; |
nextstate = SubMbPrediction (9); |
end |
9: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
temp3bit0 <= temp3bit0-1; |
if(temp3bit0 == 1) |
nextstate = SubMbPrediction 10; |
nextstate = SubMbPrediction (10); |
else |
nextstate = SubMbPrediction 8; |
nextstate = SubMbPrediction (8); |
end |
10: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
nextstate = SubMbPrediction 11; |
nextstate = SubMbPrediction (11); |
end |
11: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
temp3bit1 <= temp3bit1-1; |
if(temp3bit1 == 1) |
nextstate = SubMbPrediction 12; |
nextstate = SubMbPrediction (12); |
else |
nextstate = SubMbPrediction 10; |
nextstate = SubMbPrediction (10); |
end |
12: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
nextstate = SubMbPrediction 13; |
nextstate = SubMbPrediction (13); |
end |
13: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
temp3bit2 <= temp3bit2-1; |
if(temp3bit2 == 1) |
nextstate = SubMbPrediction 14; |
nextstate = SubMbPrediction (14); |
else |
nextstate = SubMbPrediction 12; |
nextstate = SubMbPrediction (12); |
end |
14: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
nextstate = SubMbPrediction 15; |
nextstate = SubMbPrediction (15); |
end |
15: |
begin |
tempint = unpack(expgolomb_signed(buffer)); |
$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); |
temp3bit3 <= temp3bit3-1; |
if(temp3bit3 == 1) |
nextstate = MacroblockLayer 5; |
nextstate = MacroblockLayer (5); |
else |
nextstate = SubMbPrediction 14; |
nextstate = SubMbPrediction (14); |
end |
default: $display( "ERROR EntropyDec: SubMbPrediction default step" ); |
endcase |
1431,26 → 1431,26
else |
tempreg <= zeroExtend(6'b111111); |
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) |
begin |
calcnc.nNupdate_luma(truncate(temp5bit),0); |
outfifo_ITB.enq(SDMRcoeffLevelZeros maxNumCoeff); |
nextstate = ResidualBlock 5; |
outfifo_ITB.enq(SDMRcoeffLevelZeros (maxNumCoeff)); |
nextstate = ResidualBlock (5); |
end |
else if(residualChroma==1 && maxNumCoeff==4 && (sdmcodedBlockPatternChroma & 3)==0) |
begin |
outfifo_ITB.enq(SDMRcoeffLevelZeros 4); |
nextstate = ResidualBlock 5; |
outfifo_ITB.enq(SDMRcoeffLevelZeros (4)); |
nextstate = ResidualBlock (5); |
end |
else if(residualChroma==1 && maxNumCoeff!=4 && (sdmcodedBlockPatternChroma & 2)==0) |
begin |
calcnc.nNupdate_chroma(truncate(temp5bit),0); |
outfifo_ITB.enq(SDMRcoeffLevelZeros 15); |
nextstate = ResidualBlock 5; |
outfifo_ITB.enq(SDMRcoeffLevelZeros (15)); |
nextstate = ResidualBlock (5); |
end |
else |
nextstate = ResidualBlock 1; |
nextstate = ResidualBlock (1); |
//$display( "TRACE EntropyDec: ResidualBlock 0 temp5bit = %0d", temp5bit); |
end |
1: |
1470,7 → 1470,7
temp3bit1 <= 1;//suffixLength |
else |
temp3bit1 <= 0;//suffixLength |
nextstate = ResidualBlock 2; |
nextstate = ResidualBlock (2); |
//$display( "TRACE EntropyDec: ResidualBlock 1 nC = %0d", tempreg); |
$display( "ccl2SDMRtotal_coeff %0d", totalCoeffTemp ); |
$display( "ccl2SDMRtrailing_ones %0d", trailingOnesTemp ); |
1533,14 → 1533,14
temp5bit2 <= 0; |
zerosLeft <= 0; |
if(totalCoeff < maxNumCoeff) |
nextstate = ResidualBlock 3; |
nextstate = ResidualBlock (3); |
else |
nextstate = ResidualBlock 5; |
nextstate = ResidualBlock (5); |
end |
else |
begin |
temp5bit2 <= temp5bit2 + 1; |
nextstate = ResidualBlock 2; |
nextstate = ResidualBlock (2); |
end |
end |
3: |
1559,7 → 1559,7
$display( "ccl2SDMRcoeffLevelZeros %0d", maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) ); |
outfifo_ITB.enq(SDMRcoeffLevelZeros (maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft))); |
end |
nextstate = ResidualBlock 5; |
nextstate = ResidualBlock (5); |
end |
5: |
begin |
1588,7 → 1588,7
begin |
if(residualChroma==0) |
begin |
nextstate = ResidualBlock 0; |
nextstate = ResidualBlock (0); |
if(mbPartPredMode(sdmmbtype,0)==Intra_16x16 && maxNumCoeff==16) |
maxNumCoeff <= 15; |
else if(temp5bit==15) |
1602,7 → 1602,7
end |
else if(maxNumCoeff==4) |
begin |
nextstate = ResidualBlock 0; |
nextstate = ResidualBlock (0); |
if(temp5bit==1) |
begin |
temp5bit <= 0; |
1616,17 → 1616,17
if(temp5bit==7) |
begin |
temp5bit <= 0; |
nextstate = SliceData 3; |
nextstate = SliceData (3); |
end |
else |
begin |
nextstate = ResidualBlock 0; |
nextstate = ResidualBlock (0); |
temp5bit <= temp5bit+1; |
end |
end |
end |
else |
nextstate = ResidualBlock 5; |
nextstate = ResidualBlock (5); |
end |
default: $display( "ERROR EntropyDec: ResidualBlock default step" ); |
endcase |
/trunk/src/mkInterpolator.bsv
784,7 → 784,7
rule switching( work1Done && (work2Done || reqregWork2==Invalid) && !work8x8Done); |
work1Done <= False; |
work2Done <= False; |
reqregWork2 <= (Valid reqfifoWork1.first()); |
reqregWork2 <= (Valid (reqfifoWork1.first())); |
workFileFlag <= 1-workFileFlag; |
reqfifoWork1.deq(); |
$display( "Trace interpolator: switching %h %h", outBlockNum, outPixelNum); |
797,7 → 797,7
resultReady <= replicate(0); |
work1Done <= False; |
work2Done <= False; |
reqregWork2 <= (Valid reqfifoWork1.first()); |
reqregWork2 <= (Valid (reqfifoWork1.first())); |
workFileFlag <= 1-workFileFlag; |
reqfifoWork1.deq(); |
$display( "Trace interpolator: switching8x8 %h %h", outBlockNum, outPixelNum); |
/trunk/src/mkCalc_nC.bsv
49,7 → 49,7
rule sendReq ( waiting == 1 && reqCount > 0 ); |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2}; |
memReqQ.enq(LoadReq temp ); |
memReqQ.enq(LoadReq (temp) ); |
reqCount <= reqCount-1; |
endrule |
|
133,7 → 133,7
respCount <= 2; |
Bit#(PicWidthSz) temp2 = truncate(currMbHor); |
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2}; |
memReqQ.enq(LoadReq temp ); |
memReqQ.enq(LoadReq (temp) ); |
//$display( "ERROR EntropyDec: mkCalc_nC loadMb incomplete" ); |
end |
end |
/trunk/src/mkFrameBuffer.bsv
64,7 → 64,7
rule loading1 ( loadReqQ1.first() matches tagged FBLoadReq .addrt ); |
if(addrt<frameBufferSize) |
begin |
loadRespQ1.enq( FBLoadResp rfile2.load1(addrt) ); |
loadRespQ1.enq( FBLoadResp (rfile2.load1(addrt)) ); |
loadReqQ1.deq(); |
end |
else |
74,7 → 74,7
rule loading2 ( loadReqQ2.first() matches tagged FBLoadReq .addrt ); |
if(addrt<frameBufferSize) |
begin |
loadRespQ2.enq( FBLoadResp rfile2.load2(addrt) ); |
loadRespQ2.enq( FBLoadResp (rfile2.load2(addrt)) ); |
loadReqQ2.deq(); |
end |
else |
/trunk/src/mkNalUnwrap.bsv
79,7 → 79,7
end |
else if(zerocount==0) |
begin |
outfifo.enq(RbspByte bufferc); |
outfifo.enq(RbspByte (bufferc)); |
$display("ccl1rbspbyte %h", bufferc); |
bufferc <= bufferb; |
bufferb <= buffera; |
89,7 → 89,7
else |
begin |
zerocount <= zerocount-1; |
outfifo.enq(RbspByte 0); |
outfifo.enq(RbspByte (0)); |
$display("ccl1rbspbyte 00"); |
end |
endrule |
106,13 → 106,13
else if(zerocount==0) |
begin |
bufcount <= 2; |
outfifo.enq(RbspByte bufferc); |
outfifo.enq(RbspByte (bufferc)); |
$display("ccl1rbspbyte %h", bufferc); |
end |
else |
begin |
zerocount <= zerocount-1; |
outfifo.enq(RbspByte 0); |
outfifo.enq(RbspByte (0)); |
$display("ccl1rbspbyte 00"); |
end |
end |
120,7 → 120,7
begin |
bufcount <= 1; |
if(!(bufferb==0 && buffera==0)) |
outfifo.enq(RbspByte bufferb); |
outfifo.enq(RbspByte (bufferb)); |
$display("ccl1rbspbyte %h", bufferb); |
end |
1: |
127,7 → 127,7
begin |
bufcount <= 0; |
if(!(buffera==0)) |
outfifo.enq(RbspByte buffera); |
outfifo.enq(RbspByte (buffera)); |
$display("ccl1rbspbyte %h", buffera); |
end |
0: |
/trunk/src/mkBufferControl.bsv
92,7 → 92,7
begin |
state <= RemoveFound; |
if(state==RemoveOutput) |
returnList.enq(Valid tpl_2(temp)); |
returnList.enq(Valid (tpl_2(temp))); |
end |
if(tempCount>=picCount) |
$display( "ERROR BufferControl: ShortTermPicList removing not found"); |
139,7 → 139,7
Tuple2#(Bit#(16),Bit#(5)) temp <- rfile.sub(tempPic); |
if(tpl_1(temp)==tempNum) |
begin |
returnList.enq(Valid tpl_2(temp)); |
returnList.enq(Valid (tpl_2(temp))); |
state <= Idle; |
end |
tempPic <= shortTermPicListPrev(tempPic); |
153,7 → 153,7
if(tempCount<picCount) |
begin |
Tuple2#(Bit#(16),Bit#(5)) temp <- rfile.sub(tempPic); |
returnList.enq(Valid tpl_2(temp)); |
returnList.enq(Valid (tpl_2(temp))); |
tempPic <= shortTermPicListPrev(tempPic); |
tempCount <= tempCount+1; |
end |
290,7 → 290,7
begin |
Maybe#(Bit#(5)) temp <- rfile.sub(tempPic); |
if(temp matches tagged Valid .data) |
returnList.enq(Valid data); |
returnList.enq(Valid (data)); |
tempPic <= tempPic+1; |
end |
else |
311,7 → 311,7
let rData <- rfile.sub(frameNum); |
if(rData matches tagged Invalid) |
picCount <= picCount+1; |
rfile.upd(frameNum,Valid slot); |
rfile.upd(frameNum,Valid (slot)); |
//$display( "TRACE BufferControl: LongTermPicList insert %h %h %h", picCount, frameNum, slot); |
endmethod |
|
882,7 → 882,7
if(loadRespQ1.first() matches tagged FBLoadResp .xdata) |
begin |
loadRespQ1.deq(); |
outfifo.enq(YUV xdata); |
outfifo.enq(YUV (xdata)); |
if(outRespCount == {1'b0,frameinmb,6'b000000}+{2'b00,frameinmb,5'b00000}-1) |
outputframedone <= True; |
outRespCount <= outRespCount+1; |
949,7 → 949,7
else if(inLoadOutOfBounds.first() == 2'b11) |
inLoadRespQ.enq(IPLoadResp ({data[31:24],data[31:24],data[31:24],data[31:24]})); |
else |
inLoadRespQ.enq(IPLoadResp data); |
inLoadRespQ.enq(IPLoadResp (data)); |
inLoadOutOfBounds.deq(); |
//$display( "Trace BufferControl: interResp %h %h", inLoadOutOfBounds.first(), data); |
endrule |
/trunk/src/mkInverseTrans.bsv
503,7 → 503,7
if(stage1Zeros) |
work2Vector <= Zeros; |
else |
work2Vector <= (Values workVectorTemp); |
work2Vector <= (Values (workVectorTemp)); |
stage1Zeros <= False; |
stage1Done <= False; |
workVector <= replicate(0); |
655,7 → 655,7
for(Integer ii=0; ii<4; ii=ii+1) |
work2VectorNew[tempIndex+fromInteger(ii*4)] = resultVector[ii]; |
end |
work2Vector <= (Values work2VectorNew); |
work2Vector <= (Values (work2VectorNew)); |
if(stage2Step == 7) |
stage2Done <= True; |
stage2Step <= stage2Step+1; |
671,7 → 671,7
Vector#(4,Bit#(10)) outputVector = replicate(0); |
for(Integer ii=0; ii<4; ii=ii+1) |
outputVector[ii] = truncate((xdata[{stage3Step,2'b00}+fromInteger(ii)]+32) >> 6); |
outfifo.enq(ITBresidual outputVector); |
outfifo.enq(ITBresidual (outputVector)); |
Int#(10) tempint = unpack(outputVector[0]); |
$display("ccl3IBTresidual %0d", tempint); |
tempint = unpack(outputVector[1]); |
/trunk/src/mkMemED.bsv
37,7 → 37,7
endrule |
|
rule reading ( reqQ.first() matches tagged LoadReq .addrt ); |
respQ.enq( LoadResp rfile.sub(addrt) ); |
respQ.enq( LoadResp (rfile.sub(addrt)) ); |
reqQ.deq(); |
endrule |
|
/trunk/src/mkInputGen.bsv
25,7 → 25,7
|
rule output_byte (index < `INPUT_SIZE); |
//$display( "ccl0inputbyte %x", rfile.sub(index) ); |
outfifo.enq(DataByte rfile.sub(index)); |
outfifo.enq(DataByte (rfile.sub(index))); |
index <= index+1; |
endrule |
|