mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
enable yuv422p to uyvy converter
Originally committed as revision 27527 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
This commit is contained in:
parent
e10049bef5
commit
a6100f39a1
@ -65,6 +65,9 @@ void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc
|
|||||||
void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
|
void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
|
||||||
long width, long height,
|
long width, long height,
|
||||||
long lumStride, long chromStride, long dstStride);
|
long lumStride, long chromStride, long dstStride);
|
||||||
|
void (*yuv422ptouyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
|
||||||
|
long width, long height,
|
||||||
|
long lumStride, long chromStride, long dstStride);
|
||||||
void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
|
void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
|
||||||
long width, long height,
|
long width, long height,
|
||||||
long lumStride, long chromStride, long srcStride);
|
long lumStride, long chromStride, long srcStride);
|
||||||
|
@ -109,6 +109,14 @@ extern void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_
|
|||||||
long width, long height,
|
long width, long height,
|
||||||
long lumStride, long chromStride, long dstStride);
|
long lumStride, long chromStride, long dstStride);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* width should be a multiple of 16
|
||||||
|
*/
|
||||||
|
extern void (*yuv422ptouyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
|
||||||
|
long width, long height,
|
||||||
|
long lumStride, long chromStride, long dstStride);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Height should be a multiple of 2 and width should be a multiple of 2.
|
* Height should be a multiple of 2 and width should be a multiple of 2.
|
||||||
* (If this is a problem for anyone then tell me, and I will fix it.)
|
* (If this is a problem for anyone then tell me, and I will fix it.)
|
||||||
|
@ -1755,6 +1755,16 @@ static inline void RENAME(yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc,
|
|||||||
RENAME(yuvPlanartouyvy)(ysrc, usrc, vsrc, dst, width, height, lumStride, chromStride, dstStride, 2);
|
RENAME(yuvPlanartouyvy)(ysrc, usrc, vsrc, dst, width, height, lumStride, chromStride, dstStride, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Width should be a multiple of 16.
|
||||||
|
*/
|
||||||
|
static inline void RENAME(yuv422ptouyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
|
||||||
|
long width, long height,
|
||||||
|
long lumStride, long chromStride, long dstStride)
|
||||||
|
{
|
||||||
|
RENAME(yuvPlanartouyvy)(ysrc, usrc, vsrc, dst, width, height, lumStride, chromStride, dstStride, 1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Width should be a multiple of 16.
|
* Width should be a multiple of 16.
|
||||||
*/
|
*/
|
||||||
@ -2727,6 +2737,7 @@ static inline void RENAME(rgb2rgb_init)(void){
|
|||||||
yv12toyuy2 = RENAME(yv12toyuy2);
|
yv12toyuy2 = RENAME(yv12toyuy2);
|
||||||
yv12touyvy = RENAME(yv12touyvy);
|
yv12touyvy = RENAME(yv12touyvy);
|
||||||
yuv422ptoyuy2 = RENAME(yuv422ptoyuy2);
|
yuv422ptoyuy2 = RENAME(yuv422ptoyuy2);
|
||||||
|
yuv422ptouyvy = RENAME(yuv422ptouyvy);
|
||||||
yuy2toyv12 = RENAME(yuy2toyv12);
|
yuy2toyv12 = RENAME(yuy2toyv12);
|
||||||
// uyvytoyv12 = RENAME(uyvytoyv12);
|
// uyvytoyv12 = RENAME(uyvytoyv12);
|
||||||
// yvu9toyv12 = RENAME(yvu9toyv12);
|
// yvu9toyv12 = RENAME(yvu9toyv12);
|
||||||
|
@ -1648,6 +1648,24 @@ static int PlanarToUyvyWrapper(SwsContext *c, uint8_t* src[], int srcStride[], i
|
|||||||
return srcSliceH;
|
return srcSliceH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int YUV422PToYuy2Wrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
|
||||||
|
int srcSliceH, uint8_t* dstParam[], int dstStride[]){
|
||||||
|
uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY;
|
||||||
|
|
||||||
|
yuv422ptoyuy2(src[0],src[1],src[2],dst,c->srcW,srcSliceH,srcStride[0],srcStride[1],dstStride[0]);
|
||||||
|
|
||||||
|
return srcSliceH;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int YUV422PToUyvyWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
|
||||||
|
int srcSliceH, uint8_t* dstParam[], int dstStride[]){
|
||||||
|
uint8_t *dst=dstParam[0] + dstStride[0]*srcSliceY;
|
||||||
|
|
||||||
|
yuv422ptouyvy(src[0],src[1],src[2],dst,c->srcW,srcSliceH,srcStride[0],srcStride[1],dstStride[0]);
|
||||||
|
|
||||||
|
return srcSliceH;
|
||||||
|
}
|
||||||
|
|
||||||
/* {RGB,BGR}{15,16,24,32,32_1} -> {RGB,BGR}{15,16,24,32} */
|
/* {RGB,BGR}{15,16,24,32,32_1} -> {RGB,BGR}{15,16,24,32} */
|
||||||
static int rgb2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
|
static int rgb2rgbWrapper(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
|
||||||
int srcSliceH, uint8_t* dst[], int dstStride[]){
|
int srcSliceH, uint8_t* dst[], int dstStride[]){
|
||||||
@ -2233,6 +2251,14 @@ SwsContext *sws_getContext(int srcW, int srcH, int srcFormat, int dstW, int dstH
|
|||||||
&& (!needsDither || (c->flags&(SWS_FAST_BILINEAR|SWS_POINT))))
|
&& (!needsDither || (c->flags&(SWS_FAST_BILINEAR|SWS_POINT))))
|
||||||
c->swScale= rgb2rgbWrapper;
|
c->swScale= rgb2rgbWrapper;
|
||||||
|
|
||||||
|
if (srcFormat == PIX_FMT_YUV422P)
|
||||||
|
{
|
||||||
|
if (dstFormat == PIX_FMT_YUYV422)
|
||||||
|
c->swScale= YUV422PToYuy2Wrapper;
|
||||||
|
else if (dstFormat == PIX_FMT_UYVY422)
|
||||||
|
c->swScale= YUV422PToUyvyWrapper;
|
||||||
|
}
|
||||||
|
|
||||||
/* LQ converters if -sws 0 or -sws 4*/
|
/* LQ converters if -sws 0 or -sws 4*/
|
||||||
if (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)){
|
if (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)){
|
||||||
/* yv12_to_yuy2 */
|
/* yv12_to_yuy2 */
|
||||||
|
Loading…
Reference in New Issue
Block a user