2011-07-20 62 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. 的樂趣:)