int p;
unsigned char *DisplayBuf;
DisplayBuf = (unsigned char *)malloc(sizeof(unsigned char)*(3 * 1280 * 720));
consumed_bytes= avcodec_decode_video(c, picture, &got_picture, pFrame, outSize);
if(consumed_bytes > 0)
{
memset(DisplayBuf,0,3 * 1280 * 720);
unsigned char *yuv420[3];
yuv420[0]=DisplayBuf;
//6.将picture中的YUV数据显示或者保存到文件
p=0;
for(i=0; i<c->height; i++)
{
memcpy(DisplayBuf+p,picture->data[0] + i * picture->linesize[0], c->width);
p+=c->width;
}
yuv420[1]=DisplayBuf+p;
for(i=0; i<c->height/2; i++)
{
memcpy(DisplayBuf+p,picture->data[1] + i * picture->linesize[1], c->width/2);
p+=c->width/2;
}
yuv420[2]=DisplayBuf+p;
for(i=0; i<c->height/2; i++)
{
memcpy(DisplayBuf+p,picture->data[2] + i * picture->linesize[2], c->width/2);
p+=c->width/2;
}
FILE* fp1;
fp1=fopen("receive.yuv","ab+"); //只供读取
fwrite(DisplayBuf,p, 1, fp1); /* 写的struct文件*/
fclose(fp1);
}
unsigned char *DisplayBuf;
DisplayBuf = (unsigned char *)malloc(sizeof(unsigned char)*(3 * 1280 * 720));
consumed_bytes= avcodec_decode_video(c, picture, &got_picture, pFrame, outSize);
if(consumed_bytes > 0)
{
memset(DisplayBuf,0,3 * 1280 * 720);
unsigned char *yuv420[3];
yuv420[0]=DisplayBuf;
//6.将picture中的YUV数据显示或者保存到文件
p=0;
for(i=0; i<c->height; i++)
{
memcpy(DisplayBuf+p,picture->data[0] + i * picture->linesize[0], c->width);
p+=c->width;
}
yuv420[1]=DisplayBuf+p;
for(i=0; i<c->height/2; i++)
{
memcpy(DisplayBuf+p,picture->data[1] + i * picture->linesize[1], c->width/2);
p+=c->width/2;
}
yuv420[2]=DisplayBuf+p;
for(i=0; i<c->height/2; i++)
{
memcpy(DisplayBuf+p,picture->data[2] + i * picture->linesize[2], c->width/2);
p+=c->width/2;
}
FILE* fp1;
fp1=fopen("receive.yuv","ab+"); //只供读取
fwrite(DisplayBuf,p, 1, fp1); /* 写的struct文件*/
fclose(fp1);
}