if (p->width <= 1 || p->height <= 1)
return -EINVAL;
-
+ printk(KERN_ERR "foucc: %x \n", p->fourcc);
switch (p->fourcc) {
case BC_PIX_FMT_NV12:
pixel_fmt = PVRSRV_PIXEL_FORMAT_NV12;
case BC_PIX_FMT_YUYV:
pixel_fmt = PVRSRV_PIXEL_FORMAT_FOURCC_ORG_YUYV;
break;
+ case BC_PIX_FMT_YV12:
+ pixel_fmt = PVRSRV_PIXEL_FORMAT_YV12;
+ break;
default:
return -EINVAL;
break;
memset(psDevInfo->psSystemBuffer, 0, sizeof(BC_VIDEO_BUFFER) * p->count);
size = p->height * stride;
- if (pixel_fmt == PVRSRV_PIXEL_FORMAT_NV12)
+ if (pixel_fmt == PVRSRV_PIXEL_FORMAT_NV12 ||
+ pixel_fmt == PVRSRV_PIXEL_FORMAT_YV12)
size += (stride >> 1) * (p->height >> 1) << 1;
for (i = 0; i < p->count; i++) {
}
bufferInfo = &(devinfo->sBufferInfo);
- if (bufferInfo->pixelformat != PVRSRV_PIXEL_FORMAT_NV12) {
+ if (bufferInfo->pixelformat != PVRSRV_PIXEL_FORMAT_NV12 &&
+ bufferInfo->pixelformat != PVRSRV_PIXEL_FORMAT_YV12) {
printk(KERN_ERR DRVNAME
- " : BC_Video_ioctl_alloc_buffer only support NV12 format.\n");
+ " : BC_Video_ioctl_alloc_buffer only support NV12/YV12 format.\n");
return -EINVAL;
}
ui32Size = bufferInfo->ui32Height * bufferInfo->ui32ByteStride;
#define BC_PIX_FMT_UYVY BC_FOURCC('U', 'Y', 'V', 'Y') /*YUV 4:2:2 */
#define BC_PIX_FMT_YUYV BC_FOURCC('Y', 'U', 'Y', 'V') /*YUV 4:2:2 */
#define BC_PIX_FMT_RGB565 BC_FOURCC('R', 'G', 'B', 'P') /*RGB 5:6:5 */
+#define BC_PIX_FMT_YV12 BC_FOURCC('Y', 'V', '1', '2') /*YUV 4:2:0*/
+
int FillBuffer(unsigned int uiBufferIndex);