⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mavrix_chang_log.txt

📁 优化过的xvid1.1.2源代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
									
															void get_motion_vector_interlaced(DECODER * dec, Bitstream * bs,
																			int x, int y, int k, MACROBLOCK *pMB,
																			int fcode, const int bound);
																   
															void  get_b_motion_vector(Bitstream * bs, VECTOR * mv,int fcode,
																	          const VECTOR pmv,const DECODER * const dec, const int x, const int y);
									
															void get_motion_vector(DECODER * dec, Bitstream * bs,int x,int y,
																		int k, VECTOR * ret_mv,	int fcode,const int bound); 
									
		MVMc.h MVMc.c包含的函数:  
		     											void  transfer_16to8copy(uint8_t * const dst, const int16_t * const src, uint32_t stride);
															void  transfer8x8_copy(uint8_t * const dst, const uint8_t * const src, const uint32_t stride);
															void  transfer8x4_copy(uint8_t * const dst,const uint8_t * const src, const uint32_t stride);
															
															void  interpolate8x8_halfpel_h(uint8_t * const dst,const uint8_t * const src,const uint32_t stride, const uint32_t rounding);
										   				void  interpolate8x8_halfpel_v(uint8_t * const dst, const uint8_t * const src,const uint32_t stride, const uint32_t rounding);
															void  interpolate8x8_halfpel_hv(uint8_t * const dst, const uint8_t * const src, const uint32_t stride,const uint32_t rounding);
				
				                   		void interpolate8x8_switch(uint8_t * const cur, const uint8_t * const refn, const uint32_t x,const uint32_t y,
																												  const int32_t dx, const int dy, const uint32_t stride,const uint32_t rounding);
													    void interpolate16x16_switch(uint8_t * const cur, const uint8_t * const refn,const uint32_t x,
																												  const uint32_t y, const int32_t dx,const int dy,const uint32_t stride,
																												  const uint32_t rounding);
														  
														  void interpolate8x4_halfpel_h(uint8_t * const dst,const uint8_t * const src,const uint32_t stride,const uint32_t rounding);
				              				void interpolate8x4_halfpel_v(uint8_t * const dst,const uint8_t * const src,const uint32_t stride,
																			   										const uint32_t rounding);
															void interpolate8x4_halfpel_hv(uint8_t * const dst, const uint8_t * const src, const uint32_t stride,
																														const uint32_t rounding);		
																																 
                              void interpolate8x4_switch(uint8_t * const cur,const uint8_t * const refn, const uint32_t x,const uint32_t y,
																												  const int32_t dx, const int dy, const uint32_t stride, const uint32_t rounding);

                              void interpolate16x16_quarterpel_h(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
															void interpolate16x16_quarterpel_ha(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
															void interpolate16x16_quarterpel_ha_up(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
																
															void interpolate16x16_quarterpel_v(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
															void interpolate16x16_quarterpel_va(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
															void interpolate16x16_quarterpel_va_up(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
 
 														 void interpolate16x16_quarterpel(uint8_t * const cur,uint8_t * const refn,uint8_t * const refh,uint8_t * const refv,
 														                                  uint8_t * const refhv,const uint32_t x, const uint32_t y,const int32_t dx,  const int dy,
																															const uint32_t stride,const uint32_t rounding);
						
                             void interpolate8x8_quarterpel_h(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t Rnd);																	
											   		 void interpolate8x8_quarterpel_ha(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t Rnd);
														 void interpolate8x8_quarterpel_ha_up(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t Rnd);
												
														 void interpolate8x8_quarterpel_v(uint8_t *Dst, const uint8_t *Src, int32_t W, int32_t BpS, int32_t Rnd);																	
														 void interpolate8x8_quarterpel_va(uint8_t *Dst, const uint8_t *Src, int32_t W, int32_t BpS, int32_t Rnd);
														 void interpolate8x8_quarterpel_va_up(uint8_t *Dst, const uint8_t *Src, int32_t W, int32_t BpS, int32_t Rnd);																	

       
       											 void interpolate8x8_quarterpel(uint8_t * const cur,uint8_t * const refn,uint8_t * const refh,
															  														uint8_t * const refv,uint8_t * const refhv,const uint32_t x, const uint32_t y,
															  														const int32_t dx,  const int dy,const uint32_t stride,const uint32_t rounding);														  

		 												void  transfer_16to8_add(uint8_t * const dst, const int16_t * const src,uint32_t stride);

											      void interpolate8x8_halfpel_add(uint8_t * dst, const uint8_t * src1, const uint8_t *src2, const uint32_t stride,
                                               							const uint32_t rounding, const uint32_t height);
                            void interpolate8x8_halfpel_h_add(uint8_t * const dst,const uint8_t * const src,const uint32_t stride,const uint32_t rounding);
													  void interpolate8x8_halfpel_v_add(uint8_t * const dst,const uint8_t * const src,const uint32_t stride,const uint32_t rounding);
                        	  void interpolate8x8_halfpel_hv_add(uint8_t * const dst,const uint8_t * const src,const uint32_t stride,const uint32_t rounding);
											  	  void interpolate8x8_switch_add(uint8_t * const cur,const uint8_t * const refn,const uint32_t x,
									  																				const uint32_t y,const int32_t dx,const int dy,const uint32_t stride,const uint32_t rounding);
	
												    void interpolate16x16_quarterpel_h_add(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
													  void interpolate16x16_quarterpel_ha_add(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
													  void interpolate16x16_quarterpel_ha_up_add(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
														
													  void interpolate16x16_quarterpel_v_add(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
													  void interpolate16x16_quarterpel_va_add(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
													  void interpolate16x16_quarterpel_va_up_add(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t RND);
											      void interpolate16x16_quarterpel_add(uint8_t * const cur,uint8_t * const refn,uint8_t * const refh,uint8_t * const refv,
																																uint8_t * const refhv,const uint32_t x, const uint32_t y,const int32_t dx,  const int dy,
																																const uint32_t stride,const uint32_t rounding);
														
											     void interpolate8x8_quarterpel_h_add(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t Rnd);																	
											   	 void interpolate8x8_quarterpel_ha_add(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t Rnd);
													 void interpolate8x8_quarterpel_ha_up_add(uint8_t *Dst, const uint8_t *Src, int32_t H, int32_t BpS, int32_t Rnd);
											
													 void interpolate8x8_quarterpel_v_add(uint8_t *Dst, const uint8_t *Src, int32_t W, int32_t BpS, int32_t Rnd);																	
													 void interpolate8x8_quarterpel_va_add(uint8_t *Dst, const uint8_t *Src, int32_t W, int32_t BpS, int32_t Rnd);
													 void interpolate8x8_quarterpel_va_up_add(uint8_t *Dst, const uint8_t *Src, int32_t W, int32_t BpS, int32_t Rnd);																	

													void interpolate8x8_quarterpel_add(uint8_t * const cur,uint8_t * const refn,uint8_t * const refh,
									  																					uint8_t * const refv,uint8_t * const refhv,const uint32_t x, const uint32_t y,
									  																					const int32_t dx,  const int dy,const uint32_t stride,const uint32_t rounding);
													int gmc_sanitize(int value, int quarterpel, int fcode)
													void Predict_16x16_C(const NEW_GMC_DATA * const This,uint8_t *dst, const uint8_t *src,
					           														int dststride, int srcstride, int x, int y, int rounding);
                          void Predict_1pt_16x16_C(const NEW_GMC_DATA * const This,uint8_t *Dst, const uint8_t *Src,int dststride, int srcstride, int x, int y, int rounding);
													void Predict_8x8_C(const NEW_GMC_DATA * const This,	uint8_t *uDst, const uint8_t *uSrc,uint8_t *vDst, const uint8_t *vSrc,
					 																		int dststride, int srcstride, int x, int y, int rounding);
													void Predict_1pt_8x8_C(const NEW_GMC_DATA * const This,uint8_t *uDst, const uint8_t *uSrc,uint8_t *vDst, const uint8_t *vSrc,
											 														int dststride, int srcstride, int x, int y, int rounding);
												 	void get_average_mv_C(const NEW_GMC_DATA * const Dsp, VECTOR * const mv,int x, int y, int qpel);
												  void generate_GMCparameters( int nb_pts, const int accuracy,const WARPPOINTS *const pts,const int width, const int height,NEW_GMC_DATA *const gmc);
								 
          MVMemoryalloc.h MVMemoryalloc.c包含的定义函数
                         void* xvid_malloc(size_t size,  uint8_t alignment);												 void xvid_free(void *mem_ptr);          
          MVImage.h MVImage.c包含的定义函数有:
                         void image_null(IMAGE * image);
												 void init_image(uint32_t cpu_flags);												 int32_t image_create(IMAGE * image,uint32_t edged_width,uint32_t edged_height);
												 void image_destroy(IMAGE * image,uint32_t edged_width,uint32_t edged_height);
												int image_output(IMAGE * image, uint32_t width, int height,uint32_t edged_width, uint8_t * dst, int dst_stride,
				 																uint32_t *out_len, uint32_t type);												void image_clear(IMAGE * img, int width, int height, int edged_width,int y, int u, int v);												void image_setedges(IMAGE * image, uint32_t edged_width,uint32_t edged_height, uint32_t width,
			              												uint32_t height, int bs_version);
												void  image_swap(IMAGE * image1,IMAGE * image2);												void  image_copy(IMAGE * image1,IMAGE * image2,uint32_t edged_width,uint32_t height);
				MVDecodec.h MVDecodec.c包含的定义函数有:
				               int  mavrix_mp4_dec_open(void ** pp_handle);
											 int  mavrix_mp4_dec_decode(void* p_handle, void * p_in_buf, int in_len,void * p_out_buf, int * p_out_len);

       函数的出处在函数的实现中有详细的说明
       还存在的问题:
                  1:对于NO_VOP的帧,还是解出来了,导致解的帧数增加
                  2:有些函数放的文件不妥,还需要进行移动
                  3:还需减少宏/表定义文件中宏/表的定义,将其转到只使用它的文件里
                  4: 文件和函数名,以后在修改
2007-1-17
@ blues zhang,test all the 16  bitstream examples, it's ok.
1.deleted functions of image.c: impage_input

2007-1-16
@ blues zhang,test foreman_qcif8.yuv(all asp) and carphone_qcif3.yuv(sp), decoded  files are the same as original
1.deleted functions of image process:interpolate8x8_6tap_lowpass_h_c(),etc.
2.deleted xvid.h: xvid_plg_data_t,encoder operations
3.deleted mb coding functions in mbcoding.c: CodeBlockIntra(),CodeBlockInter(),put_bvop_mbtype(),put_bvop_dbquant(),CodeVector(),CodeCoeffInter(),etc.
4.reduced.c :deleted xvid_Add_Upsampled_8x8_16To8_C()
5.deleted files: reduced.h,reduced.c,cbp.c,
6.iterpolate8x8.h: deleted functions:interpolate32x32_add_switch(),interpolate8x8_switch2(),etc.


2007-1-15
@ blues zhang,
1.delete functions about fdct:
  1)mbtransquant.c: MBTransQuantIntra()
  Evaluate_Cost
2.delete files: mbtransquant.c
3.delete files:  mbfunctions.h
4.mbcoding.c :delete function :  MBCoding()
5.bitstream.c: delete write bitstream functions
6.delete: fdct.c,fdct.h
7.simplify: idct.c,idct.h
8.delete files:simple_idct_c.c
9.delete quant functions of h263 and mpeg4
10.delete files: emms.h, emms.c
11.simplify mem_transfer.h,deleted functions responding to special architectures.
12. image.c: deleted function: image_interpolate()
13. delete file: xvid_plugin_psnr.c
14. in xvid.h: delete struct xvid_enc_create_t , "Motion" flags with "ME",xvid_enc_frame_t
15.encoder.h, deleted struct QUEUEINFO



2007-1-12
@ blues zhang,test foreman_qcif8.yuv(all asp) and carphone_qcif3.yuv(sp), decoded  files are the same as original
1.delete motion_comp.c 
2.delete motion_inlines.h
3.simplify file: estimation.h
4.delete estimation.h,
5.simplify filemotion.h
6.mbprediction.c: disabled MBPrediction()

2007-1-11
@ blues zhang ,test foreman_qcif8.yuv(all asp) and carphone_qcif3.yuv(sp), decoded  files are the same as original
1.delete files: encoder.c
2.encoder.h: 
  delete functions :  enc_create,enc_destroy,enc_encode
  delete struct: Encoder
3.estimation_bvop.c:
	disable : MotionEstimationBVOP()
4.estimation_pvop.c:
	delete: MotionEstimation
5.estimation_rd_based.c:
	delete: xvid_me_ModeDecion_Fast()
6.delete files: 
	estimation_pvop.c, estimation_bvop.c,estimation_rd_based.c,estimation_rd_based_bvop.c,vop_top_decision.c,estimation_gmc.c
7.xvid.c: deleted dev16
8. sad.h :deleted something corresponding with special hardware architects.
9. sad.c: deleted sad8_c() sad16_c(),sse8_16bit_c()
10.image.c: delete plane_sse()
11.delete file sad.c.




2007-1-9
@ blues zhang, test foreman_qcif8.yuv(all asp) and carphone_qcif3.yuv(sp), decoded  files are the same as original xvid decoder.
1.sepearate encoder and decoder. 
2.delete files:
  1) delete asm:   bitstream,dct,image,quant,utils
  2) encoder.c
  3) xvid_encraw 
  4)delete vfw , plugin,dshow and debian directions
  5)bench files
 
3. the decoding results of foreman_qcif8.yuv in debug version and release version are not the same, debug one is right. After installing vcsp6,it's ok.
4.disable xvid_encore in xvid.c
5.edit interfaces in libxvidcore.def  by removing xvid_encore,xvid_plugin_2pass1,xvid_plugin_2pass2,xvid_plugin_single,xvid_plugin_lumimasking,xvid_plugin_dump,xvid_plugin_psnr; 


   
2007-1-6, blues zhang
save decoded images as a YUV file


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -