comparison libmpcodecs/vd_raw.c @ 6667:15efad628385

yuv handling simplified (using new mpi fields)
author alex
date Sun, 07 Jul 2002 16:25:36 +0000
parents 01ada897cc89
children 28677d779205
comparison
equal deleted inserted replaced
6666:349138a7b414 6667:15efad628385
62 62
63 if(mpi->flags&MP_IMGFLAG_PLANAR){ 63 if(mpi->flags&MP_IMGFLAG_PLANAR){
64 // TODO !!! 64 // TODO !!!
65 mpi->planes[0]=data; 65 mpi->planes[0]=data;
66 mpi->stride[0]=mpi->width; 66 mpi->stride[0]=mpi->width;
67 if(mpi->bpp == 12 && mpi->flags&MP_IMGFLAG_YUV) { 67 if(mpi->flags&MP_IMGFLAG_YUV) {
68 // Support for some common Planar YUV formats 68 // Support for some common Planar YUV formats
69 /* YV12,I420,IYUV */ 69 /* YV12,I420,IYUV */
70 int cb=2, cr=1; 70 int cb=2, cr=1;
71 if(mpi->flags&MP_IMGFLAG_SWAPPED) { 71 if(mpi->flags&MP_IMGFLAG_SWAPPED) {
72 cb=1; cr=2; 72 cb=1; cr=2;
73 } 73 }
74 mpi->planes[cb]=data+mpi->width*mpi->height; 74 mpi->planes[cb]=mpi->planes[0]+mpi->width*mpi->height;
75 mpi->stride[cb]=mpi->width/2; 75 mpi->stride[cb]=mpi->chroma_width;
76 mpi->planes[cr]=data+5*mpi->width*mpi->height/4; 76 mpi->planes[cr]=mpi->planes[cb]+mpi->chroma_width*mpi->chroma_height;
77 mpi->stride[cr]=mpi->width/2; 77 mpi->stride[cr]=mpi->chroma_width;
78 } 78 }
79 else if (mpi->bpp==9 && mpi->flags&MP_IMGFLAG_YUV) {
80 /* YVU9 ! */
81 mpi->stride[1]=mpi->stride[2]=mpi->width/4;
82 mpi->planes[2]=mpi->planes[0]+mpi->width*mpi->height;
83 mpi->planes[1]=mpi->planes[2]+(mpi->width>>2)*(mpi->height>>2);
84 }
85 } else { 79 } else {
86 mpi->planes[0]=data; 80 mpi->planes[0]=data;
87 mpi->stride[0]=mpi->width*(mpi->bpp/8); 81 mpi->stride[0]=mpi->width*(mpi->bpp/8);
88 // .AVI files has uncompressed lines 4-byte aligned: 82 // .AVI files has uncompressed lines 4-byte aligned:
89 if(sh->format==0 || sh->format==3) mpi->stride[0]=(mpi->stride[0]+3)&(~3); 83 if(sh->format==0 || sh->format==3) mpi->stride[0]=(mpi->stride[0]+3)&(~3);
93 } 87 }
94 } 88 }
95 89
96 return mpi; 90 return mpi;
97 } 91 }
98