问题
i am a little confused about the NV12 format. i am looking the this page to understand the format.
What i currently understand is that if you have an image or video of 640 x 480
diminsion then the Y plane will be having 640 x 480
bytes and U and V both planes have 640/2 x 480/2
. It does not mean that U plane have 640/2 x 480/2
and V plane have 640/2 x 480/2
both have only 640/2 x 480/2
bytes. so the total number of bytes in out buffer array will be.
2 is multiplied with (640/2) * (480/2)
because uv plane will take two bytes.
byte [] myArray new byte[(640 * 480) + (2 * (640/2) * (480/2)) ];
so the question is that i am understanding it in a right way? and am i making the byte array in the format that specify the NV12 format.
回答1:
The NV12 format is subsampled as 4:2:0
The total size of a frame is W x H x 3 / 2
Where W is width and H is height.
1 frame in vga resolution is 460800 bytes, where
- Y-part is 640x480 bytes
- Cb-part is 640*480/4=76800 bytes
- Cr-part is 640*480/4=76800 bytes
Hope this answers your question...
来源:https://stackoverflow.com/questions/17487048/nv12-format-and-uv-plane