2011-07-20 61 views
1

我想将yuv420P像素写入缓冲区而不是二进制文件。 假设我有亮度,Cb和Cr存储在指针中。复制yuv420缓冲区

luma = output_pixel.luma; 
cb = output_pixel.cb; 
cr = output_pixel.cr; 

int size = lenght * width; 

/* this is working */ 
fwrite(out_pixel.luma,1,size,out_file) 
fwrite(out_pixel.cb,1, size>> 2,out_file) 
fwrite(out_pixel.cr,1,size >>2 ,out_file) 

,而是如果在缓冲区中写入thorugh的memcpy它不工作,像

/* this is not working */ 
char *buffer = (char *)malloc(sizeof(size * 1.5)); 
memcpy(out_pixel.luma ,buffer,size); 
memcpy(out_pixel.cb + size,buffer,size >> 2); 
memcpy(out_pixel.cr + size + (size >> 2),buffer,size >> 2); 

PS。只是想复制一个o/p缓冲区中的像素。

+0

'的sizeof(大小* 1.5)'是错误的,这是否即使编译?你尝试过'malloc(size + 2 *(size >> 2))'而不是?正如marinara说你反驳了这个观点,另外看起来你应该加入'buffer'而不是'outpixel。*'的东西。 – user786653

回答

1

当您调用memcpy时,您的参数反转。

啊,C. 的乐趣:)