617 |
|
|
618 |
case XVID_CSP_YVYU: /* u/v swapped */ |
case XVID_CSP_YVYU: /* u/v swapped */ |
619 |
safe_packed_conv( |
safe_packed_conv( |
620 |
src[0], src_stride[0], image->y, image->v, image->y, |
src[0], src_stride[0], image->y, image->v, image->u, |
621 |
edged_width, edged_width2, width, height, (csp & XVID_CSP_VFLIP), |
edged_width, edged_width2, width, height, (csp & XVID_CSP_VFLIP), |
622 |
interlacing?yuyvi_to_yv12 :yuyv_to_yv12, |
interlacing?yuyvi_to_yv12 :yuyv_to_yv12, |
623 |
interlacing?yuyvi_to_yv12_c:yuyv_to_yv12_c, 2); |
interlacing?yuyvi_to_yv12_c:yuyv_to_yv12_c, 2); |
631 |
interlacing?uyvyi_to_yv12_c:uyvy_to_yv12_c, 2); |
interlacing?uyvyi_to_yv12_c:uyvy_to_yv12_c, 2); |
632 |
break; |
break; |
633 |
|
|
634 |
case XVID_CSP_I420: /* YCrCb == internal colorspace for MPEG */ |
case XVID_CSP_I420: /* YCbCr == YUV == internal colorspace for MPEG */ |
635 |
yv12_to_yv12(image->y, image->u, image->v, edged_width, edged_width2, |
yv12_to_yv12(image->y, image->u, image->v, edged_width, edged_width2, |
636 |
src[0], src[0] + src_stride[0]*height, src[0] + src_stride[0]*height + (src_stride[0]/2)*height2, |
src[0], src[0] + src_stride[0]*height, src[0] + src_stride[0]*height + (src_stride[0]/2)*height2, |
637 |
src_stride[0], src_stride[0]/2, width, height, (csp & XVID_CSP_VFLIP)); |
src_stride[0], src_stride[0]/2, width, height, (csp & XVID_CSP_VFLIP)); |
638 |
break; |
break; |
639 |
|
|
640 |
case XVID_CSP_YV12: /* YCbCr == U and V plane swapped */ |
case XVID_CSP_YV12: /* YCrCb == YVA == U and V plane swapped */ |
641 |
yv12_to_yv12(image->y, image->v, image->u, edged_width, edged_width2, |
yv12_to_yv12(image->y, image->v, image->u, edged_width, edged_width2, |
642 |
src[0], src[0] + src_stride[0]*height, src[0] + src_stride[0]*height + (src_stride[0]/2)*height2, |
src[0], src[0] + src_stride[0]*height, src[0] + src_stride[0]*height + (src_stride[0]/2)*height2, |
643 |
src_stride[0], src_stride[0]/2, width, height, (csp & XVID_CSP_VFLIP)); |
src_stride[0], src_stride[0]/2, width, height, (csp & XVID_CSP_VFLIP)); |
644 |
break; |
break; |
645 |
|
|
646 |
case XVID_CSP_USER : /* YCrCb with arbitrary pointers and different strides for Y and UV */ |
case XVID_CSP_PLANAR: /* YCbCr with arbitrary pointers and different strides for Y and UV */ |
647 |
yv12_to_yv12(image->y, image->u, image->v, edged_width, edged_width2, |
yv12_to_yv12(image->y, image->u, image->v, edged_width, edged_width2, |
648 |
src[0], src[1], src[2], src_stride[0], src_stride[1], /* v: dst_stride[2] not yet supported */ |
src[0], src[1], src[2], src_stride[0], src_stride[1], /* v: dst_stride[2] not yet supported */ |
649 |
width, height, (csp & XVID_CSP_VFLIP)); |
width, height, (csp & XVID_CSP_VFLIP)); |
807 |
interlacing?yv12_to_uyvyi_c:yv12_to_uyvy_c, 2); |
interlacing?yv12_to_uyvyi_c:yv12_to_uyvy_c, 2); |
808 |
return 0; |
return 0; |
809 |
|
|
810 |
case XVID_CSP_I420: /* YCrCb == internal colorspace for MPEG */ |
case XVID_CSP_I420: /* YCbCr == YUV == internal colorspace for MPEG */ |
811 |
yv12_to_yv12(dst[0], dst[0] + dst_stride[0]*height, dst[0] + dst_stride[0]*height + (dst_stride[0]/2)*height2, |
yv12_to_yv12(dst[0], dst[0] + dst_stride[0]*height, dst[0] + dst_stride[0]*height + (dst_stride[0]/2)*height2, |
812 |
dst_stride[0], dst_stride[0]/2, |
dst_stride[0], dst_stride[0]/2, |
813 |
image->y, image->u, image->v, edged_width, edged_width2, |
image->y, image->u, image->v, edged_width, edged_width2, |
814 |
width, height, (csp & XVID_CSP_VFLIP)); |
width, height, (csp & XVID_CSP_VFLIP)); |
815 |
return 0; |
return 0; |
816 |
|
|
817 |
case XVID_CSP_YV12: /* YCbCr == U and V plane swapped */ |
case XVID_CSP_YV12: /* YCrCb == YVU == U and V plane swapped */ |
818 |
yv12_to_yv12(dst[0], dst[0] + dst_stride[0]*height, dst[0] + dst_stride[0]*height + (dst_stride[0]/2)*height2, |
yv12_to_yv12(dst[0], dst[0] + dst_stride[0]*height, dst[0] + dst_stride[0]*height + (dst_stride[0]/2)*height2, |
819 |
dst_stride[0], dst_stride[0]/2, |
dst_stride[0], dst_stride[0]/2, |
820 |
image->y, image->v, image->u, edged_width, edged_width2, |
image->y, image->v, image->u, edged_width, edged_width2, |
821 |
width, height, (csp & XVID_CSP_VFLIP)); |
width, height, (csp & XVID_CSP_VFLIP)); |
822 |
return 0; |
return 0; |
823 |
|
|
824 |
case XVID_CSP_USER : /* YCrCb with arbitrary pointers and different strides for Y and UV */ |
case XVID_CSP_PLANAR: /* YCbCr with arbitrary pointers and different strides for Y and UV */ |
825 |
yv12_to_yv12(dst[0], dst[1], dst[2], |
yv12_to_yv12(dst[0], dst[1], dst[2], |
826 |
dst_stride[0], dst_stride[1], /* v: dst_stride[2] not yet supported */ |
dst_stride[0], dst_stride[1], /* v: dst_stride[2] not yet supported */ |
827 |
image->y, image->u, image->v, edged_width, edged_width2, |
image->y, image->u, image->v, edged_width, edged_width2, |