Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
GSoC
GSoC2018
macOS
vlc
Commits
218efb93
Commit
218efb93
authored
Jun 02, 2008
by
dionoea
Browse files
Chroma modules now exactly implement the "video filter2" capability.
parent
a519cacc
Changes
13
Hide whitespace changes
Inline
Side-by-side
include/vlc_filter.h
View file @
218efb93
...
...
@@ -60,7 +60,6 @@ struct filter_t
config_chain_t
*
p_cfg
;
picture_t
*
(
*
pf_video_filter
)
(
filter_t
*
,
picture_t
*
);
void
(
*
pf_video_filter_io
)
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
/* Used by video filters with a preallocated output buffer (ie chroma conversion modules) */
block_t
*
(
*
pf_audio_filter
)
(
filter_t
*
,
block_t
*
);
void
(
*
pf_video_blend
)
(
filter_t
*
,
picture_t
*
,
picture_t
*
,
picture_t
*
,
...
...
@@ -93,4 +92,37 @@ struct filter_t
filter_owner_sys_t
*
p_owner
;
};
/**
* Create a picture_t *(*)( filter_t *, picture_t * ) compatible wrapper
* using a void (*)( filter_t *, picture_t *, picture_t * ) function
*
* Currently used by the chroma video filters
*/
#define VIDEO_FILTER_WRAPPER( name ) \
static picture_t *name ## _Filter ( filter_t *p_filter, \
picture_t *p_pic ) \
{ \
picture_t *p_outpic = p_filter->pf_vout_buffer_new( p_filter ); \
if( !p_outpic ) \
{ \
msg_Warn( p_filter, "can't get output picture" ); \
if( p_pic->pf_release ) \
p_pic->pf_release( p_pic ); \
return NULL; \
} \
\
name( p_filter, p_pic, p_outpic ); \
\
p_outpic->date = p_pic->date; \
p_outpic->b_force = p_pic->b_force; \
p_outpic->i_nb_fields = p_pic->i_nb_fields; \
p_outpic->b_progressive = p_pic->b_progressive; \
p_outpic->b_top_field_first = p_pic->b_top_field_first; \
\
if( p_pic->pf_release ) \
p_pic->pf_release( p_pic ); \
return p_outpic; \
}
#endif
/* _VLC_FILTER_H */
modules/video_chroma/chain.c
View file @
218efb93
...
...
@@ -46,7 +46,7 @@ static void Chain ( filter_t *, picture_t *, picture_t * );
*****************************************************************************/
vlc_module_begin
();
set_description
(
N_
(
"Chroma conversions using a chain of chroma conversion modules"
)
);
set_capability
(
"
chroma
"
,
1
);
set_capability
(
"
video filter2
"
,
1
);
set_callbacks
(
Activate
,
Destroy
);
vlc_module_end
();
...
...
modules/video_chroma/grey_yuv.c
View file @
218efb93
...
...
@@ -45,12 +45,15 @@ static int Activate ( vlc_object_t * );
static
void
GREY_I420
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
GREY_YUY2
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
GREY_I420_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
GREY_YUY2_Filter
(
filter_t
*
,
picture_t
*
);
/*****************************************************************************
* Module descriptor.
*****************************************************************************/
vlc_module_begin
();
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
set_callbacks
(
Activate
,
NULL
);
vlc_module_end
();
...
...
@@ -77,10 +80,10 @@ static int Activate( vlc_object_t *p_this )
switch
(
p_filter
->
fmt_out
.
video
.
i_chroma
)
{
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
):
p_filter
->
pf_video_filter
_io
=
GREY_I420
;
p_filter
->
pf_video_filter
=
GREY_I420
_Filter
;
break
;
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
GREY_YUY2
;
p_filter
->
pf_video_filter
=
GREY_YUY2
_Filter
;
break
;
default:
return
-
1
;
...
...
@@ -94,6 +97,9 @@ static int Activate( vlc_object_t *p_this )
return
0
;
}
VIDEO_FILTER_WRAPPER
(
GREY_I420
)
VIDEO_FILTER_WRAPPER
(
GREY_YUY2
)
/* Following functions are local */
/*****************************************************************************
...
...
modules/video_chroma/i420_rgb.c
View file @
218efb93
...
...
@@ -71,16 +71,16 @@ vlc_module_begin();
#if defined (MODULE_NAME_IS_i420_rgb)
set_description
(
N_
(
"I420,IYUV,YV12 to "
"RGB2,RV15,RV16,RV24,RV32 conversions"
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
#elif defined (MODULE_NAME_IS_i420_rgb_mmx)
set_description
(
N_
(
"MMX I420,IYUV,YV12 to "
"RV15,RV16,RV24,RV32 conversions"
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
MMX
);
#elif defined (MODULE_NAME_IS_i420_rgb_sse2)
set_description
(
N_
(
"SSE2 I420,IYUV,YV12 to "
"RV15,RV16,RV24,RV32 conversions"
)
);
set_capability
(
"
chroma
"
,
120
);
set_capability
(
"
video filter2
"
,
120
);
add_requirement
(
SSE2
);
#endif
set_callbacks
(
Activate
,
Deactivate
);
...
...
@@ -113,7 +113,7 @@ static int Activate( vlc_object_t *p_this )
{
#if defined (MODULE_NAME_IS_i420_rgb)
case
VLC_FOURCC
(
'R'
,
'G'
,
'B'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
I420_RGB8
;
p_filter
->
pf_video_filter
=
I420_RGB8
_Filter
;
break
;
#endif
case
VLC_FOURCC
(
'R'
,
'V'
,
'1'
,
'5'
):
...
...
@@ -126,7 +126,7 @@ static int Activate( vlc_object_t *p_this )
{
/* R5G5B6 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is R5G5B5"
);
p_filter
->
pf_video_filter
_io
=
I420_R5G5B5
;
p_filter
->
pf_video_filter
=
I420_R5G5B5
_Filter
;
}
else
if
(
(
p_filter
->
fmt_out
.
video
.
i_rmask
==
0xf800
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x07e0
...
...
@@ -134,13 +134,13 @@ static int Activate( vlc_object_t *p_this )
{
/* R5G6B5 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is R5G6B5"
);
p_filter
->
pf_video_filter
_io
=
I420_R5G6B5
;
p_filter
->
pf_video_filter
=
I420_R5G6B5
_Filter
;
}
else
return
VLC_EGENERIC
;
#else
// generic C chroma converter */
p_filter
->
pf_video_filter
_io
=
I420_RGB16
;
p_filter
->
pf_video_filter
=
I420_RGB16
_Filter
;
#endif
break
;
...
...
@@ -158,7 +158,7 @@ static int Activate( vlc_object_t *p_this )
{
/* A8R8G8B8 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is A8R8G8B8"
);
p_filter
->
pf_video_filter
_io
=
I420_A8R8G8B8
;
p_filter
->
pf_video_filter
=
I420_A8R8G8B8
_Filter
;
}
else
if
(
p_filter
->
fmt_out
.
video
.
i_rmask
==
0xff000000
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x00ff0000
...
...
@@ -166,7 +166,7 @@ static int Activate( vlc_object_t *p_this )
{
/* R8G8B8A8 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is R8G8B8A8"
);
p_filter
->
pf_video_filter
_io
=
I420_R8G8B8A8
;
p_filter
->
pf_video_filter
=
I420_R8G8B8A8
_Filter
;
}
else
if
(
p_filter
->
fmt_out
.
video
.
i_rmask
==
0x0000ff00
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x00ff0000
...
...
@@ -174,7 +174,7 @@ static int Activate( vlc_object_t *p_this )
{
/* B8G8R8A8 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is B8G8R8A8"
);
p_filter
->
pf_video_filter
_io
=
I420_B8G8R8A8
;
p_filter
->
pf_video_filter
=
I420_B8G8R8A8
_Filter
;
}
else
if
(
p_filter
->
fmt_out
.
video
.
i_rmask
==
0x000000ff
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x0000ff00
...
...
@@ -182,13 +182,13 @@ static int Activate( vlc_object_t *p_this )
{
/* A8B8G8R8 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is A8B8G8R8"
);
p_filter
->
pf_video_filter
_io
=
I420_A8B8G8R8
;
p_filter
->
pf_video_filter
=
I420_A8B8G8R8
_Filter
;
}
else
return
VLC_EGENERIC
;
#else
/* generic C chroma converter */
p_filter
->
pf_video_filter
_io
=
I420_RGB32
;
p_filter
->
pf_video_filter
=
I420_RGB32
_Filter
;
#endif
break
;
...
...
@@ -294,6 +294,19 @@ static void Deactivate( vlc_object_t *p_this )
free
(
p_filter
->
p_sys
);
}
#if defined (MODULE_NAME_IS_i420_rgb)
VIDEO_FILTER_WRAPPER
(
I420_RGB8
)
VIDEO_FILTER_WRAPPER
(
I420_RGB16
)
VIDEO_FILTER_WRAPPER
(
I420_RGB32
)
#else
VIDEO_FILTER_WRAPPER
(
I420_R5G5B5
)
VIDEO_FILTER_WRAPPER
(
I420_R5G6B5
)
VIDEO_FILTER_WRAPPER
(
I420_A8R8G8B8
)
VIDEO_FILTER_WRAPPER
(
I420_R8G8B8A8
)
VIDEO_FILTER_WRAPPER
(
I420_B8G8R8A8
)
VIDEO_FILTER_WRAPPER
(
I420_A8B8G8R8
)
#endif
#if defined (MODULE_NAME_IS_i420_rgb)
/*****************************************************************************
* SetGammaTable: return intensity table transformed by gamma curve.
...
...
modules/video_chroma/i420_rgb.h
View file @
218efb93
...
...
@@ -60,6 +60,10 @@ void I420_RGB8 ( filter_t *, picture_t *, picture_t * );
void
I420_RGB16_dither
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_RGB16
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_RGB32
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I420_RGB8_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_RGB16_dither_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_RGB16_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_RGB32_Filter
(
filter_t
*
,
picture_t
*
);
#else // if defined(MODULE_NAME_IS_i420_rgb_mmx)
void
I420_R5G5B5
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_R5G6B5
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
...
...
@@ -67,6 +71,12 @@ void I420_A8R8G8B8 ( filter_t *, picture_t *, picture_t * );
void
I420_R8G8B8A8
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_B8G8R8A8
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_A8B8G8R8
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I420_R5G5B5_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_R5G6B5_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_A8R8G8B8_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_R8G8B8A8_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_B8G8R8A8_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_A8B8G8R8_Filter
(
filter_t
*
,
picture_t
*
);
#endif
/*****************************************************************************
...
...
modules/video_chroma/i420_ymga.c
View file @
218efb93
...
...
@@ -43,6 +43,7 @@
*****************************************************************************/
static
int
Activate
(
vlc_object_t
*
);
static
void
I420_YMGA
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I420_YMGA_Filter
(
filter_t
*
,
picture_t
*
);
/*****************************************************************************
* Module descriptor
...
...
@@ -50,10 +51,10 @@ static void I420_YMGA ( filter_t *, picture_t *, picture_t * );
vlc_module_begin
();
#if defined (MODULE_NAME_IS_i420_ymga)
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
#elif defined (MODULE_NAME_IS_i420_ymga_mmx)
set_description
(
N_
(
"MMX conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
MMX
);
#endif
set_callbacks
(
Activate
,
NULL
);
...
...
@@ -82,7 +83,7 @@ static int Activate( vlc_object_t *p_this )
switch
(
p_filter
->
fmt_out
.
video
.
i_chroma
)
{
case
VLC_FOURCC
(
'Y'
,
'M'
,
'G'
,
'A'
):
p_filter
->
pf_video_filter
_io
=
I420_YMGA
;
p_filter
->
pf_video_filter
=
I420_YMGA
_Filter
;
break
;
default:
...
...
@@ -99,6 +100,8 @@ static int Activate( vlc_object_t *p_this )
/* Following functions are local */
VIDEO_FILTER_WRAPPER
(
I420_YMGA
)
/*****************************************************************************
* I420_YMGA: planar YUV 4:2:0 to Matrox's planar/packed YUV 4:2:0
*****************************************************************************/
...
...
modules/video_chroma/i420_yuy2.c
View file @
218efb93
...
...
@@ -61,12 +61,18 @@ static int Activate ( vlc_object_t * );
static
void
I420_YUY2
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I420_YVYU
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I420_UYVY
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I420_YUY2_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_YVYU_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_UYVY_Filter
(
filter_t
*
,
picture_t
*
);
#if !defined (MODULE_NAME_IS_i420_yuy2_altivec)
static
void
I420_IUYV
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I420_cyuv
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I420_IUYV_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I420_cyuv_Filter
(
filter_t
*
,
picture_t
*
);
#endif
#if defined (MODULE_NAME_IS_i420_yuy2)
static
void
I420_Y211
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I420_Y211_Filter
(
filter_t
*
,
picture_t
*
);
#endif
#ifdef MODULE_NAME_IS_i420_yuy2_mmx
...
...
@@ -81,19 +87,19 @@ static const uint64_t i_80w = 0x0000000080808080ULL;
vlc_module_begin
();
#if defined (MODULE_NAME_IS_i420_yuy2)
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
#elif defined (MODULE_NAME_IS_i420_yuy2_mmx)
set_description
(
N_
(
"MMX conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
MMX
);
#elif defined (MODULE_NAME_IS_i420_yuy2_sse2)
set_description
(
N_
(
"SSE2 conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
120
);
set_capability
(
"
video filter2
"
,
120
);
add_requirement
(
SSE2
);
#elif defined (MODULE_NAME_IS_i420_yuy2_altivec)
set_description
(
_
(
"AltiVec conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
ALTIVEC
);
#endif
set_callbacks
(
Activate
,
NULL
);
...
...
@@ -123,31 +129,31 @@ static int Activate( vlc_object_t *p_this )
{
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
I420_YUY2
;
p_filter
->
pf_video_filter
=
I420_YUY2
_Filter
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
p_filter
->
pf_video_filter
_io
=
I420_YVYU
;
p_filter
->
pf_video_filter
=
I420_YVYU
_Filter
;
break
;
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
I420_UYVY
;
p_filter
->
pf_video_filter
=
I420_UYVY
_Filter
;
break
;
#if !defined (MODULE_NAME_IS_i420_yuy2_altivec)
case
VLC_FOURCC
(
'I'
,
'U'
,
'Y'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
I420_IUYV
;
p_filter
->
pf_video_filter
=
I420_IUYV
_Filter
;
break
;
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
p_filter
->
pf_video_filter
_io
=
I420_cyuv
;
p_filter
->
pf_video_filter
=
I420_cyuv
_Filter
;
break
;
#endif
#if defined (MODULE_NAME_IS_i420_yuy2)
case
VLC_FOURCC
(
'Y'
,
'2'
,
'1'
,
'1'
):
p_filter
->
pf_video_filter
_io
=
I420_Y211
;
p_filter
->
pf_video_filter
=
I420_Y211
_Filter
;
break
;
#endif
...
...
@@ -174,6 +180,17 @@ static inline unsigned long long read_cycles(void)
#endif
/* Following functions are local */
VIDEO_FILTER_WRAPPER
(
I420_YUY2
)
VIDEO_FILTER_WRAPPER
(
I420_YVYU
)
VIDEO_FILTER_WRAPPER
(
I420_UYVY
)
#if !defined (MODULE_NAME_IS_i420_yuy2_altivec)
VIDEO_FILTER_WRAPPER
(
I420_IUYV
)
#endif
#if defined (MODULE_NAME_IS_i420_yuy2)
VIDEO_FILTER_WRAPPER
(
I420_Y211
)
#endif
/*****************************************************************************
* I420_YUY2: planar YUV 4:2:0 to packed YUYV 4:2:2
*****************************************************************************/
...
...
modules/video_chroma/i422_i420.c
View file @
218efb93
...
...
@@ -46,13 +46,16 @@ static int Activate ( vlc_object_t * );
static
void
I422_I420
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_YV12
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_YUVA
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I422_I420_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I422_YV12_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I422_YUVA_Filter
(
filter_t
*
,
picture_t
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
vlc_module_begin
();
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
60
);
set_capability
(
"
video filter2
"
,
60
);
set_callbacks
(
Activate
,
NULL
);
vlc_module_end
();
...
...
@@ -80,15 +83,15 @@ static int Activate( vlc_object_t *p_this )
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
):
case
VLC_FOURCC
(
'I'
,
'Y'
,
'U'
,
'V'
):
case
VLC_FOURCC
(
'J'
,
'4'
,
'2'
,
'0'
):
p_filter
->
pf_video_filter
_io
=
I422_I420
;
p_filter
->
pf_video_filter
=
I422_I420
_Filter
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'1'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
I422_YV12
;
p_filter
->
pf_video_filter
=
I422_YV12
_Filter
;
break
;
case
VLC_FOURCC
(
'Y'
,
'U'
,
'V'
,
'A'
):
p_filter
->
pf_video_filter
_io
=
I422_YUVA
;
p_filter
->
pf_video_filter
=
I422_YUVA
_Filter
;
break
;
default:
...
...
@@ -103,6 +106,9 @@ static int Activate( vlc_object_t *p_this )
}
/* Following functions are local */
VIDEO_FILTER_WRAPPER
(
I422_I420
)
VIDEO_FILTER_WRAPPER
(
I422_YV12
)
VIDEO_FILTER_WRAPPER
(
I422_YUVA
)
/*****************************************************************************
* I422_I420: planar YUV 4:2:2 to planar I420 4:2:0 Y:U:V
...
...
modules/video_chroma/i422_yuy2.c
View file @
218efb93
...
...
@@ -49,14 +49,19 @@
*****************************************************************************/
static
int
Activate
(
vlc_object_t
*
);
static
void
I422_YUY2
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_YVYU
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_UYVY
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_IUYV
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_cyuv
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_YUY2
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_YVYU
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_UYVY
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_IUYV
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_cyuv
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I422_YUY2_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I422_YVYU_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I422_UYVY_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I422_IUYV_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
I422_cyuv_Filter
(
filter_t
*
,
picture_t
*
);
#if defined (MODULE_NAME_IS_i422_yuy2)
static
void
I422_Y211
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_Y211
(
filter_t
*
,
picture
_t
*
,
picture_t
*
);
static
void
I422_Y211
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I422_Y211_Filter
(
filter
_t
*
,
picture_t
*
);
#endif
/*****************************************************************************
...
...
@@ -65,14 +70,14 @@ static void I422_Y211 ( filter_t *, picture_t *, picture_t * );
vlc_module_begin
();
#if defined (MODULE_NAME_IS_i422_yuy2)
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
#elif defined (MODULE_NAME_IS_i422_yuy2_mmx)
set_description
(
N_
(
"MMX conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
MMX
);
#elif defined (MODULE_NAME_IS_i422_yuy2_sse2)
set_description
(
N_
(
"SSE2 conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
120
);
set_capability
(
"
video filter2
"
,
120
);
add_requirement
(
SSE2
);
#endif
set_callbacks
(
Activate
,
NULL
);
...
...
@@ -100,30 +105,30 @@ static int Activate( vlc_object_t *p_this )
{
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
I422_YUY2
;
p_filter
->
pf_video_filter
=
I422_YUY2
_Filter
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
p_filter
->
pf_video_filter
_io
=
I422_YVYU
;
p_filter
->
pf_video_filter
=
I422_YVYU
_Filter
;
break
;
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
I422_UYVY
;
p_filter
->
pf_video_filter
=
I422_UYVY
_Filter
;
break
;
case
VLC_FOURCC
(
'I'
,
'U'
,
'Y'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
I422_IUYV
;
p_filter
->
pf_video_filter
=
I422_IUYV
_Filter
;
break
;
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
p_filter
->
pf_video_filter
_io
=
I422_cyuv
;
p_filter
->
pf_video_filter
=
I422_cyuv
_Filter
;
break
;
#if defined (MODULE_NAME_IS_i422_yuy2)
case
VLC_FOURCC
(
'Y'
,
'2'
,
'1'
,
'1'
):
p_filter
->
pf_video_filter
_io
=
I422_Y211
;
p_filter
->
pf_video_filter
=
I422_Y211
_Filter
;
break
;
#endif
...
...
@@ -140,6 +145,15 @@ static int Activate( vlc_object_t *p_this )
/* Following functions are local */
VIDEO_FILTER_WRAPPER
(
I422_YUY2
)
VIDEO_FILTER_WRAPPER
(
I422_YVYU
)
VIDEO_FILTER_WRAPPER
(
I422_UYVY
)
VIDEO_FILTER_WRAPPER
(
I422_IUYV
)
VIDEO_FILTER_WRAPPER
(
I422_cyuv
)
#if defined (MODULE_NAME_IS_i422_yuy2)
VIDEO_FILTER_WRAPPER
(
I422_Y211
)
#endif
/*****************************************************************************
* I422_YUY2: planar YUV 4:2:2 to packed YUY2 4:2:2
*****************************************************************************/
...
...
modules/video_chroma/yuy2_i420.c
View file @
218efb93
...
...
@@ -47,12 +47,17 @@ static void YVYU_I420 ( filter_t *, picture_t *, picture_t * );
static
void
UYVY_I420
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
cyuv_I420
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
YUY2_I420_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
YVYU_I420_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
UYVY_I420_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
cyuv_I420_Filter
(
filter_t
*
,
picture_t
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
vlc_module_begin
();
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
set_callbacks
(
Activate
,
NULL
);
vlc_module_end
();
...
...
@@ -78,21 +83,21 @@ static int Activate( vlc_object_t *p_this )
{
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
YUY2_I420
;
p_filter
->
pf_video_filter
=
YUY2_I420
_Filter
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
p_filter
->
pf_video_filter
_io
=
YVYU_I420
;
p_filter
->
pf_video_filter
=
YVYU_I420
_Filter
;
break
;
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
UYVY_I420
;
p_filter
->
pf_video_filter
=
UYVY_I420
_Filter
;
break
;
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
p_filter
->
pf_video_filter
_io
=
cyuv_I420
;
p_filter
->
pf_video_filter
=
cyuv_I420
_Filter
;
break
;
default:
...
...
@@ -107,6 +112,10 @@ static int Activate( vlc_object_t *p_this )
}
/* Following functions are local */
VIDEO_FILTER_WRAPPER
(
YUY2_I420
)
VIDEO_FILTER_WRAPPER
(
YVYU_I420
)
VIDEO_FILTER_WRAPPER
(
UYVY_I420
)
VIDEO_FILTER_WRAPPER
(
cyuv_I420
)
/*****************************************************************************
* YUY2_I420: packed YUY2 4:2:2 to planar YUV 4:2:0
...
...
modules/video_chroma/yuy2_i422.c
View file @
218efb93
...
...
@@ -46,13 +46,17 @@ static void YUY2_I422 ( filter_t *, picture_t *, picture_t * );
static
void
YVYU_I422
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
UYVY_I422
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
cyuv_I422
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
YUY2_I422_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
YVYU_I422_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
UYVY_I422_Filter
(
filter_t
*
,
picture_t
*
);
static
picture_t
*
cyuv_I422_Filter
(
filter_t
*
,
picture_t
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
vlc_module_begin
();
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
set_callbacks
(
Activate
,
NULL
);
vlc_module_end
();
...
...
@@ -78,21 +82,21 @@ static int Activate( vlc_object_t *p_this )
{
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
YUY2_I422
;
p_filter
->
pf_video_filter
=
YUY2_I422
_Filter
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
p_filter
->
pf_video_filter
_io
=
YVYU_I422
;
p_filter
->
pf_video_filter
=
YVYU_I422
_Filter
;
break
;
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
UYVY_I422
;
p_filter
->
pf_video_filter
=
UYVY_I422
_Filter
;
break
;