- UID
- 161954
- 性别
- 男
|
诚心求教,XVID解码程序移植出现问题。
我是一个学生,最近在跟老师做一个dsp的项目,也就刚做了两个月,最近卡在一个地方,希望各位有经验的前辈能多多提醒。 环境:DEC6713 ccs2.20.18 我是要把XVID的解码算法移植到我所作的基于BIOS实时系统的程序里面,之前的XVID算法部分是由一个师兄弄好了的,单独在dsp上跑是成功的,但由于它是使用jtag线从主机往dsp传送数据,所以速度非常慢,我所作的基于dsp/bios的程序正式利于板子上的usb2.0的接口来传送数据,这样就快乐很多,但当我把XVID那部分程序加到我的程序里面是,却发现XVID的程序不能像以前那样运行,我跟踪了运行步骤,发现他们的运行过程都已经不一样了。 程序如下: 之前的代码是: int main(int argc, char *argv[]) { 。。。。。。。。 。。。。。。。。 useful_bytes = fread(mp4_buffer, 1, BUFFER_SIZE, in_file); 。。。。。。。。。。。。。。。。。。。。。。。。。 do { used_bytes = dec_main(mp4_ptr, out_buffer, useful_bytes, &xvid_dec_stats); if(xvid_dec_stats.type == XVID_TYPE_VOL) { /* Check if old buffer is smaller */ if(XDIM*YDIM < xvid_dec_stats.data.vol.width*xvid_dec_stats.data.vol.height) {
/* Copy new witdh and new height from the vol structure */ XDIM = xvid_dec_stats.data.vol.width; YDIM = xvid_dec_stats.data.vol.height; /* Free old output buffer*/ if(out_buffer) free(out_buffer); /* Allocate the new buffer */ out_buffer = (unsigned char*)malloc(XDIM*YDIM*4); if(out_buffer == NULL) goto free_all_memory;
fprintf(stderr, "Resized frame buffer to %dx%d\n", XDIM, YDIM); } } } } /* Update buffer pointers */ if(used_bytes > 0) { mp4_ptr += used_bytes; useful_bytes -= used_bytes;
/* Total size */ totalsize += used_bytes; }
} while (xvid_dec_stats.type <= 0 && useful_bytes > 0); 。。。。。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。。。。。。。。。。 fwrite(out_buffer, 1, XDIM*YDIM+XDIM*YDIM/2, out_file); 。。。。。。。。。。。。。。。。。。。。。。。 }
|
|
|