aaronhwf
28th October 2007, 07:46
I want to store the decoded Y,U,V data to a file in YUV(4:2:0) format this week. then I can play it with YUVview.
my C code is as follow:
void writeY(FILE *fp,AVS_BYTE **p,int array_width,int array_height)
{
int i;
AVS_BYTE *buf=NULL;
buf=(AVS_BYTE *)malloc(array_height*array_width*sizeof(AVS_BYTE));
for(i=0;i<array_height;i++)
memcpy(buf+i*array_width,p+i,sizeof(AVS_BYTE)*array_width);
fwrite(buf,sizeof(AVS_BYTE),array_width*array_height,fp);
free(buf);
}
void writeUV(FILE *fp,AVS_BYTE **pU,AVS_BYTE **PV,int array_width,int array_height)
{
int i;
AVS_BYTE *buf=NULL;
buf=(AVS_BYTE *)malloc(array_height*array_width*sizeof(AVS_BYTE)/2);
for(i=0;i<array_height/2;i++)
{
memcpy(buf+i*array_width,pU+i,sizeof(AVS_BYTE)*array_width/2);
memcpy(buf+(2*i+1)*array_width/2,pV+i,sizeof(AVS_BYTE)*array_width/2);
}
fwrite(buf,sizeof(AVS_BYTE),array_width*array_height/2,fp);
free(buf);
}
**********************************
y0 y1 y2.................................................
**********************************
u0 u1........................v0v1......................
**********************************
But when I view the generated YUV file . It's just a sets of some colours.not the picture before Encode.
Do me a favor, thanks in advance
my C code is as follow:
void writeY(FILE *fp,AVS_BYTE **p,int array_width,int array_height)
{
int i;
AVS_BYTE *buf=NULL;
buf=(AVS_BYTE *)malloc(array_height*array_width*sizeof(AVS_BYTE));
for(i=0;i<array_height;i++)
memcpy(buf+i*array_width,p+i,sizeof(AVS_BYTE)*array_width);
fwrite(buf,sizeof(AVS_BYTE),array_width*array_height,fp);
free(buf);
}
void writeUV(FILE *fp,AVS_BYTE **pU,AVS_BYTE **PV,int array_width,int array_height)
{
int i;
AVS_BYTE *buf=NULL;
buf=(AVS_BYTE *)malloc(array_height*array_width*sizeof(AVS_BYTE)/2);
for(i=0;i<array_height/2;i++)
{
memcpy(buf+i*array_width,pU+i,sizeof(AVS_BYTE)*array_width/2);
memcpy(buf+(2*i+1)*array_width/2,pV+i,sizeof(AVS_BYTE)*array_width/2);
}
fwrite(buf,sizeof(AVS_BYTE),array_width*array_height/2,fp);
free(buf);
}
**********************************
y0 y1 y2.................................................
**********************************
u0 u1........................v0v1......................
**********************************
But when I view the generated YUV file . It's just a sets of some colours.not the picture before Encode.
Do me a favor, thanks in advance