mirror of
https://github.com/game-stop/veejay.git
synced 2026-01-04 14:10:02 +01:00
new fx context for colorspace conversion in fx
git-svn-id: svn://code.dyne.org/veejay/trunk@862 eb8d1916-c9e9-0310-b8de-cf0c9472ead5
This commit is contained in:
@@ -77,6 +77,9 @@ void yuv_init_lib()
|
||||
put( PIX_FMT_YUV420P, IMG_YUV420P );
|
||||
put( PIX_FMT_YUV422P, IMG_YUV422P );
|
||||
put( PIX_FMT_YUV444P, IMG_YUV444P );
|
||||
put( PIX_FMT_YUVJ420P, IMG_YUV420P ); //@ pfff dont care
|
||||
put( PIX_FMT_YUVJ422P, IMG_YUV422P );
|
||||
put( PIX_FMT_YUVJ422P, IMG_YUV444P );
|
||||
put( PIX_FMT_RGB24, IMG_RGB24 );
|
||||
put( PIX_FMT_BGR24, IMG_BGR24 );
|
||||
put( PIX_FMT_RGB32, IMG_ARGB32 );
|
||||
@@ -99,17 +102,17 @@ VJFrame *yuv_yuv_template( uint8_t *Y, uint8_t *U, uint8_t *V, int w, int h, int
|
||||
{
|
||||
case PIX_FMT_YUV422P:
|
||||
case PIX_FMT_YUVJ422P:
|
||||
f->uv_width = w/2;
|
||||
f->uv_width = w>>1;
|
||||
f->uv_height= f->height;
|
||||
f->stride[0] = w;
|
||||
f->stride[1] = f->stride[2] = f->stride[0]/2;
|
||||
f->stride[1] = f->stride[2] = f->stride[0]>>1;
|
||||
break;
|
||||
case PIX_FMT_YUV420P:
|
||||
case PIX_FMT_YUVJ420P:
|
||||
f->uv_width = w/2;
|
||||
f->uv_height=f->height/2;
|
||||
f->uv_width = w>>1;
|
||||
f->uv_height=f->height>>1;
|
||||
f->stride[0] = w;
|
||||
f->stride[1] = f->stride[2] = f->stride[0]/2;
|
||||
f->stride[1] = f->stride[2] = f->stride[0]>>1;
|
||||
break;
|
||||
case PIX_FMT_YUV444P:
|
||||
case PIX_FMT_YUVJ444P:
|
||||
@@ -238,6 +241,24 @@ void yuv_convert_any( VJFrame *src, VJFrame *dst, int src_fmt, int dst_fmt )
|
||||
sws_freeContext( ctx );
|
||||
}
|
||||
|
||||
void *yuv_fx_context_create( VJFrame *src, VJFrame *dst, int src_fmt, int dst_fmt )
|
||||
{
|
||||
struct SwsContext *ctx = sws_getContext( src->width,src->height,src_fmt, dst->width,dst->height,dst_fmt,
|
||||
sws_context_flags_, NULL,NULL,NULL );
|
||||
return (void*) ctx;
|
||||
}
|
||||
|
||||
void yuv_fx_context_process( void *ctx, VJFrame *src, VJFrame *dst )
|
||||
{
|
||||
sws_scale( ctx, src->data, src->stride,0,src->height,dst->data,dst->stride );
|
||||
}
|
||||
|
||||
void yuv_fx_context_destroy( void *ctx )
|
||||
{
|
||||
struct SwsContext *stx = (struct SwsContext*) ctx;
|
||||
sws_freeContext( stx );
|
||||
}
|
||||
|
||||
|
||||
void yuv_convert_any3( VJFrame *src, int src_stride[3], VJFrame *dst, int src_fmt, int dst_fmt )
|
||||
{
|
||||
|
||||
@@ -128,4 +128,11 @@ char *yuv_get_scaler_name(int id);
|
||||
|
||||
void yuv_convert_any_ac( VJFrame *src, VJFrame *dst, int src_fmt, int dst_fmt );
|
||||
|
||||
void *yuv_fx_context_create( VJFrame *src, VJFrame *dst, int src_fmt, int dst_fmt );
|
||||
|
||||
void yuv_fx_context_process( void *ctx, VJFrame *src, VJFrame *dst );
|
||||
|
||||
void yuv_fx_context_destroy( void *ctx );
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user