rm62f
AVS rm62f 

所属分类:视频捕捉采集剪辑
开发工具:Visual C++
文件大小:1202KB
下载次数:79
上传日期:2007-09-20 11:25:19
上 传 者aqiaojiang
说明:  中国自主知识产权的视频解码标准AVS的最新官方验证代码
(China)

文件列表:
rm62f\bin\dataDec.txt (560, 2007-04-04)
rm62f\bin\decoder.cfg (501, 2006-06-19)
rm62f\bin\encoder.cfg (6687, 2007-04-04)
rm62f\bin\ldecod.exe (266240, 2007-04-03)
rm62f\bin\log.dat (2475, 2007-04-04)
rm62f\bin\log.dec (1077, 2007-04-04)
rm62f\bin\release\lencod.exe (565248, 2007-04-04)
rm62f\bin\release (0, 2007-04-04)
rm62f\bin\stat.dat (43466, 2007-04-04)
rm62f\bin (0, 2007-04-04)
rm62f\ldecod\Debug (0, 2007-04-02)
rm62f\ldecod\inc\annexb.h (1889, 2005-03-20)
rm62f\ldecod\inc\avs.h (5867, 2005-03-20)
rm62f\ldecod\inc\biaridecod.h (1385, 2006-03-29)
rm62f\ldecod\inc\block.h (3752, 2005-03-20)
rm62f\ldecod\inc\b_frame.h (1765, 2005-03-20)
rm62f\ldecod\inc\cabac.h (3143, 2006-06-19)
rm62f\ldecod\inc\context_ini.h (598, 2003-06-13)
rm62f\ldecod\inc\contributors.h (7853, 2005-03-20)
rm62f\ldecod\inc\ctx_tables.h (69095, 2005-08-12)
rm62f\ldecod\inc\defines.h (8077, 2006-03-30)
rm62f\ldecod\inc\elements.h (3506, 2006-06-19)
rm62f\ldecod\inc\global.h (27755, 2007-04-01)
rm62f\ldecod\inc\golomb_dec.h (2045, 2005-03-20)
rm62f\ldecod\inc\header.h (2049, 2005-03-20)
rm62f\ldecod\inc\image.h (1758, 2005-03-20)
rm62f\ldecod\inc\macroblock.h (4046, 2005-03-21)
rm62f\ldecod\inc\mbaff.h (333, 2005-03-20)
rm62f\ldecod\inc\mbuffer.h (4245, 2005-03-20)
rm62f\ldecod\inc\memalloc.h (2307, 2005-03-20)
rm62f\ldecod\inc\vlc.h (2924, 2005-03-20)
rm62f\ldecod\inc\wquant.h (2758, 2006-12-04)
rm62f\ldecod\inc (0, 2007-04-03)
rm62f\ldecod\Makefile (1596, 2005-03-20)
rm62f\ldecod\src\biaridecod.c (12135, 2006-03-30)
rm62f\ldecod\src\bitstream.c (9932, 2007-01-20)
rm62f\ldecod\src\block.c (38718, 2006-12-04)
rm62f\ldecod\src\block_const.c (64209, 2005-03-20)
rm62f\ldecod\src\b_frame.c (8100, 2005-03-20)
rm62f\ldecod\src\cabac.c (30816, 2006-11-14)
... ...

######################################################################## -- funtion contradiction:when MBAFF(0/3), MBAFF_NB on or off adaptive scan, loop filter are all on, encoder & decoder does not match. bins are correctly decoded, but reconstruction of picture is incorrect. rm62b_zhug_0221是最新发布rm62b版本(Note : this is different from rm62b_CE_tshv zky'ac on, because it still uses H2***_others & MVD_H2***...) ---------------------------------------------------------------------------------------------------- !!!版本: rm62d为最新x-profile版本 !!!更新: (1)根据黄山会议M1842提案,修改了CABAC中的一元码二值化方法。 (2)修改了TRACE不能完全关闭的问题。 !!!问题: ---------------------------------------------------------------------------------------------------- !!!版本: 2006.11. rm62d3 所做修改 !!!更新: 1. 在encoder端的define.h的第209行: #define MAX_SYMBOLS_PER_MB 120000 2. 在encoder端macroblock.c文件的GetBidMVD()函数中 在函数的最前面加入以下代码: for (j0=0; j0<2; j0++) { if((currMB->mb_type==I4MB&&j0==0)) { j0 += 1; continue;} //Intra for (i0=0; i0<2; i0++) { k=j0*2+i0; if(IS_P8x8(currMB) && currMB->b8pdir[k] == 2 && currMB->b8mode[k] == 0 && input->InterlaceCodingOption==MB_CODING) { img_block_y = (!img->top_field) ? (img->block_y/2-2)/2:img->block_y/4; refframe=currMB->field_mode ? (img->top_field==0 ? refFrArr_bot[img_block_y+j0][img->block_x/2+i0] : refFrArr_top[img_block_y+j0][img->block_x/2+i0] ) : refFrArr[img->block_y+j0][img->block_x/2+i0]; if (currMB->field_mode) { if (img->top_field) bw_refFrArr_top[img_block_y+j0][img->block_x/2+i0]= 1; //for pmv scale else bw_refFrArr_bot[img_block_y+j0][img->block_x/2+i0] =(refframe==-1 ? 1:0);//by oliver 0611 for pmv scale } } //i0+=max(1,step_h0); } // j0+=max(1,step_v0); } // 函数结束前加入: for (j0=0; j0<2;j0++ ) { if((currMB->mb_type==I4MB&&j0==0)) { j0 += 1; continue;} //Intra for (i0=0; i0<2;i0++ ) { k=j0*2+i0; if(IS_P8x8(currMB) && currMB->b8pdir[k] == 2 && currMB->b8mode[k] == 0 && input->InterlaceCodingOption==MB_CODING) { img_block_y = (!img->top_field) ? (img->block_y/2-2)/2:img->block_y/4; if (currMB->field_mode) { if (img->top_field) bw_refFrArr_top[img_block_y+j0][img->block_x/2+i0]= refFrArr_top[img_block_y+j0][img->block_x/2+i0] >= 0 ? 1:0; //back to set else { bw_refFrArr_bot[img_block_y+j0][img->block_x/2+i0] = 0; //back to set } } } // i0+=max(1,step_h0); } // j0+=max(1,step_v0); } // 目的是为了校正mbaff下,后向参考帧的设置! !!!问题: 1、PAFF不能解码(经过我们初步跟踪调试发现,CABAC在解码run值时异常,导致数组越界,程序出错;而在PAFF+CAVLC时能够正常解码;并且该问题在RM62b时没有出现); 2、CFG文件中的Frameskip值在大于B帧数量时,无论是CABAC还是VLC,在ALL I帧,IPPP,IBBP结构时,编码interlace或progressive序列均出现严重的编解码失配; 3、极大极小QP编码码流不能解码(异常退出); ---------------------------------------------------------------------------------------------------- !!!版本: rm62d4为2007年1月最新xprofile 软件版本 (内部版本,没有发布) !!!更新: 基于rm62d3做了如下改动: encoder: (1) 在encoder的writeMBHeader()函数中的2***4行,currSE->value2 = 1;改为currSE->value2 = 0; 在3016行,currSE->value2 = 0;改为 currSE->value2 = 1; (2) MAX_SYMBOLS_PER_MB issue (by oliver 06/12) (based on output of AVS zhuhai about the AVS-M1942 2006/12) Encoder: 1. global.h 在ImageParameters的结构体定义中 SyntaxElement MB_SyntaxElements[MAX_SYMBOLS_PER_MB] change to SyntaxElement *MB_SyntaxElements; change the difinition of MB_SyntaxElements 2. lencod.c 在init_img()函数中加上 if ((img->MB_SyntaxElements = (SyntaxElement*)calloc (((img->height*img->width/256)+1200), sizeof(SyntaxElement))) == NULL) no_mem_exit ("init_img: MB_SyntaxElements"); //by oliver 0612 目的是: allocate the memory for MB_SyntaxElements the size is (img->height*img->width/256)+1200 3. lencod.c free_img()函数的最后加上 free(img->MB_SyntaxElements); //by oliver 0612 目的是free the memory Decoder: bitstream.c的checkstartcode()函数中 if(StartCodePosition>6 && StartCodePosition<20) return 1; change to if(StartCodePosition>6 && StartCodePositiontr计算不匹配的问题。 具体修改处请见注释 HiSilicon, 2007.03.21 ---------------------------------------------------------------------------------------------------- 2007.03.22 这个版本添加了在MBAFF下的环路滤波。其中,在有modified by amanda标志的部分, 屏蔽了img->type!=B_IMG的这个限制 在added by amanda的位置,添加了一段代码。添加的代码在//end amanda标志时结尾。 ---------------------------------------------------------------------------------------------------- 2007.03.27 按照RM52i中加权预测解决方案,在RM62e中添加针对场模式和色度的加权预测,以及在directmode和skipmode时的判断条件,并修改了代码中预测状态信号量的逻辑,使之和标准文档相一致,主要修改如下: 1,add varible: secondIField and replace varible mbweightflag and allframeweight with weighting_prediction and mb_weighting_flag according to standard 2, CalculatePar() in image.c 3, encode_one_frame() in image.c 4, add WP code in LumaPrediction4x4 5, change the function "writeweightflag" to "writeMBweightflag". 6, add WP code in RDCost_for_macroblocks() for direct mode MB's weighting prediction 7, add condition in chromaPredicton4x4() for chroma weighting 8, use the weighted value in chromaResidualCoding() decoder: 1, add fieldcoding para. num judgement in sliceheader() 2, add varible: secondIField and replace varible mbweightflag and allframeweight with weighting_prediction and mb_weighting_flag according to standard 3, changed the signal status of allframeweight and add chroma weighting prediction in decode_one_macroblock() all the changes were marked with zjt. ---------------------------------------------------------------------------------------------------- !!!rm62f 发布 2007.04.04 王云飞 解决了所谓PAFF的问题: (关于所谓PAFF的问题,其实并不仅存在于PAFF,而是Field coding的PB帧会出错。config文件设置为:interlace序列,field coding或PAFF,skip frame>0。) 目前场编码和PAFF部分编解码不匹配以及CABAC解码错误等问题都已解决。 修改如下: encoder: 1.calculate_distance中判断顶场和底场的条件。 2.main第106行,加入if (input->InterlaceCodingOption == MB_CODING) input->rdopt=1; 3.getLuma8x8Neighbour中,加入判断available的条件(根据文档) decoder: 1.scale_motion_vector,删除060310添加的语句。 2.getLuma8x8Neighbour中,加入判断available的条件。 一个遗留问题:对称模式中,计算后向mv的公式,在文档中为mvBw_x = -((mvFw_x BlockDistanceBw (512 / BlockDistanceFw) + 256) >> 9), 而程序中为mvBw_x = -((mvFw_x BlockDistanceBw (256 / BlockDistanceFw) + 128) >> 8) 该问题在52i中曾被更正,但仍有一处遗漏。而62中一直保持与文档不符。 ########################################################################

近期下载者

相关文件


收藏者