Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
218efb93
Commit
218efb93
authored
Jun 02, 2008
by
Antoine Cellerier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Chroma modules now exactly implement the "video filter2" capability.
parent
a519cacc
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
194 additions
and
65 deletions
+194
-65
include/vlc_filter.h
include/vlc_filter.h
+33
-1
modules/video_chroma/chain.c
modules/video_chroma/chain.c
+1
-1
modules/video_chroma/grey_yuv.c
modules/video_chroma/grey_yuv.c
+9
-3
modules/video_chroma/i420_rgb.c
modules/video_chroma/i420_rgb.c
+25
-12
modules/video_chroma/i420_rgb.h
modules/video_chroma/i420_rgb.h
+10
-0
modules/video_chroma/i420_ymga.c
modules/video_chroma/i420_ymga.c
+6
-3
modules/video_chroma/i420_yuy2.c
modules/video_chroma/i420_yuy2.c
+27
-10
modules/video_chroma/i422_i420.c
modules/video_chroma/i422_i420.c
+10
-4
modules/video_chroma/i422_yuy2.c
modules/video_chroma/i422_yuy2.c
+30
-16
modules/video_chroma/yuy2_i420.c
modules/video_chroma/yuy2_i420.c
+14
-5
modules/video_chroma/yuy2_i422.c
modules/video_chroma/yuy2_i422.c
+14
-5
src/video_output/video_output.c
src/video_output/video_output.c
+11
-3
src/video_output/vout_pictures.c
src/video_output/vout_pictures.c
+4
-2
No files found.
include/vlc_filter.h
View file @
218efb93
...
@@ -60,7 +60,6 @@ struct filter_t
...
@@ -60,7 +60,6 @@ struct filter_t
config_chain_t
*
p_cfg
;
config_chain_t
*
p_cfg
;
picture_t
*
(
*
pf_video_filter
)
(
filter_t
*
,
picture_t
*
);
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
*
);
block_t
*
(
*
pf_audio_filter
)
(
filter_t
*
,
block_t
*
);
void
(
*
pf_video_blend
)
(
filter_t
*
,
picture_t
*
,
void
(
*
pf_video_blend
)
(
filter_t
*
,
picture_t
*
,
picture_t
*
,
picture_t
*
,
picture_t
*
,
picture_t
*
,
...
@@ -93,4 +92,37 @@ struct filter_t
...
@@ -93,4 +92,37 @@ struct filter_t
filter_owner_sys_t
*
p_owner
;
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 */
#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 * );
...
@@ -46,7 +46,7 @@ static void Chain ( filter_t *, picture_t *, picture_t * );
*****************************************************************************/
*****************************************************************************/
vlc_module_begin
();
vlc_module_begin
();
set_description
(
N_
(
"Chroma conversions using a chain of chroma conversion modules"
)
);
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
);
set_callbacks
(
Activate
,
Destroy
);
vlc_module_end
();
vlc_module_end
();
...
...
modules/video_chroma/grey_yuv.c
View file @
218efb93
...
@@ -45,12 +45,15 @@ static int Activate ( vlc_object_t * );
...
@@ -45,12 +45,15 @@ static int Activate ( vlc_object_t * );
static
void
GREY_I420
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
GREY_I420
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
GREY_YUY2
(
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.
* Module descriptor.
*****************************************************************************/
*****************************************************************************/
vlc_module_begin
();
vlc_module_begin
();
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
set_callbacks
(
Activate
,
NULL
);
set_callbacks
(
Activate
,
NULL
);
vlc_module_end
();
vlc_module_end
();
...
@@ -77,10 +80,10 @@ static int Activate( vlc_object_t *p_this )
...
@@ -77,10 +80,10 @@ static int Activate( vlc_object_t *p_this )
switch
(
p_filter
->
fmt_out
.
video
.
i_chroma
)
switch
(
p_filter
->
fmt_out
.
video
.
i_chroma
)
{
{
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
):
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
):
p_filter
->
pf_video_filter
_io
=
GREY_I420
;
p_filter
->
pf_video_filter
=
GREY_I420_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
GREY_YUY2
;
p_filter
->
pf_video_filter
=
GREY_YUY2_Filter
;
break
;
break
;
default:
default:
return
-
1
;
return
-
1
;
...
@@ -94,6 +97,9 @@ static int Activate( vlc_object_t *p_this )
...
@@ -94,6 +97,9 @@ static int Activate( vlc_object_t *p_this )
return
0
;
return
0
;
}
}
VIDEO_FILTER_WRAPPER
(
GREY_I420
)
VIDEO_FILTER_WRAPPER
(
GREY_YUY2
)
/* Following functions are local */
/* Following functions are local */
/*****************************************************************************
/*****************************************************************************
...
...
modules/video_chroma/i420_rgb.c
View file @
218efb93
...
@@ -71,16 +71,16 @@ vlc_module_begin();
...
@@ -71,16 +71,16 @@ vlc_module_begin();
#if defined (MODULE_NAME_IS_i420_rgb)
#if defined (MODULE_NAME_IS_i420_rgb)
set_description
(
N_
(
"I420,IYUV,YV12 to "
set_description
(
N_
(
"I420,IYUV,YV12 to "
"RGB2,RV15,RV16,RV24,RV32 conversions"
)
);
"RGB2,RV15,RV16,RV24,RV32 conversions"
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
#elif defined (MODULE_NAME_IS_i420_rgb_mmx)
#elif defined (MODULE_NAME_IS_i420_rgb_mmx)
set_description
(
N_
(
"MMX I420,IYUV,YV12 to "
set_description
(
N_
(
"MMX I420,IYUV,YV12 to "
"RV15,RV16,RV24,RV32 conversions"
)
);
"RV15,RV16,RV24,RV32 conversions"
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
MMX
);
add_requirement
(
MMX
);
#elif defined (MODULE_NAME_IS_i420_rgb_sse2)
#elif defined (MODULE_NAME_IS_i420_rgb_sse2)
set_description
(
N_
(
"SSE2 I420,IYUV,YV12 to "
set_description
(
N_
(
"SSE2 I420,IYUV,YV12 to "
"RV15,RV16,RV24,RV32 conversions"
)
);
"RV15,RV16,RV24,RV32 conversions"
)
);
set_capability
(
"
chroma
"
,
120
);
set_capability
(
"
video filter2
"
,
120
);
add_requirement
(
SSE2
);
add_requirement
(
SSE2
);
#endif
#endif
set_callbacks
(
Activate
,
Deactivate
);
set_callbacks
(
Activate
,
Deactivate
);
...
@@ -113,7 +113,7 @@ static int Activate( vlc_object_t *p_this )
...
@@ -113,7 +113,7 @@ static int Activate( vlc_object_t *p_this )
{
{
#if defined (MODULE_NAME_IS_i420_rgb)
#if defined (MODULE_NAME_IS_i420_rgb)
case
VLC_FOURCC
(
'R'
,
'G'
,
'B'
,
'2'
):
case
VLC_FOURCC
(
'R'
,
'G'
,
'B'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
I420_RGB8
;
p_filter
->
pf_video_filter
=
I420_RGB8_Filter
;
break
;
break
;
#endif
#endif
case
VLC_FOURCC
(
'R'
,
'V'
,
'1'
,
'5'
):
case
VLC_FOURCC
(
'R'
,
'V'
,
'1'
,
'5'
):
...
@@ -126,7 +126,7 @@ static int Activate( vlc_object_t *p_this )
...
@@ -126,7 +126,7 @@ static int Activate( vlc_object_t *p_this )
{
{
/* R5G5B6 pixel format */
/* R5G5B6 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is R5G5B5"
);
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
else
if
(
(
p_filter
->
fmt_out
.
video
.
i_rmask
==
0xf800
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x07e0
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x07e0
...
@@ -134,13 +134,13 @@ static int Activate( vlc_object_t *p_this )
...
@@ -134,13 +134,13 @@ static int Activate( vlc_object_t *p_this )
{
{
/* R5G6B5 pixel format */
/* R5G6B5 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is R5G6B5"
);
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
else
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
#else
#else
// generic C chroma converter */
// generic C chroma converter */
p_filter
->
pf_video_filter
_io
=
I420_RGB16
;
p_filter
->
pf_video_filter
=
I420_RGB16_Filter
;
#endif
#endif
break
;
break
;
...
@@ -158,7 +158,7 @@ static int Activate( vlc_object_t *p_this )
...
@@ -158,7 +158,7 @@ static int Activate( vlc_object_t *p_this )
{
{
/* A8R8G8B8 pixel format */
/* A8R8G8B8 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is A8R8G8B8"
);
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
else
if
(
p_filter
->
fmt_out
.
video
.
i_rmask
==
0xff000000
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x00ff0000
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x00ff0000
...
@@ -166,7 +166,7 @@ static int Activate( vlc_object_t *p_this )
...
@@ -166,7 +166,7 @@ static int Activate( vlc_object_t *p_this )
{
{
/* R8G8B8A8 pixel format */
/* R8G8B8A8 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is R8G8B8A8"
);
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
else
if
(
p_filter
->
fmt_out
.
video
.
i_rmask
==
0x0000ff00
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x00ff0000
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x00ff0000
...
@@ -174,7 +174,7 @@ static int Activate( vlc_object_t *p_this )
...
@@ -174,7 +174,7 @@ static int Activate( vlc_object_t *p_this )
{
{
/* B8G8R8A8 pixel format */
/* B8G8R8A8 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is B8G8R8A8"
);
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
else
if
(
p_filter
->
fmt_out
.
video
.
i_rmask
==
0x000000ff
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x0000ff00
&&
p_filter
->
fmt_out
.
video
.
i_gmask
==
0x0000ff00
...
@@ -182,13 +182,13 @@ static int Activate( vlc_object_t *p_this )
...
@@ -182,13 +182,13 @@ static int Activate( vlc_object_t *p_this )
{
{
/* A8B8G8R8 pixel format */
/* A8B8G8R8 pixel format */
msg_Dbg
(
p_this
,
"RGB pixel format is A8B8G8R8"
);
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
else
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
#else
#else
/* generic C chroma converter */
/* generic C chroma converter */
p_filter
->
pf_video_filter
_io
=
I420_RGB32
;
p_filter
->
pf_video_filter
=
I420_RGB32_Filter
;
#endif
#endif
break
;
break
;
...
@@ -294,6 +294,19 @@ static void Deactivate( vlc_object_t *p_this )
...
@@ -294,6 +294,19 @@ static void Deactivate( vlc_object_t *p_this )
free
(
p_filter
->
p_sys
);
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)
#if defined (MODULE_NAME_IS_i420_rgb)
/*****************************************************************************
/*****************************************************************************
* SetGammaTable: return intensity table transformed by gamma curve.
* 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 * );
...
@@ -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_dither
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_RGB16
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_RGB16
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_RGB32
(
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)
#else // if defined(MODULE_NAME_IS_i420_rgb_mmx)
void
I420_R5G5B5
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_R5G5B5
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_R5G6B5
(
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 * );
...
@@ -67,6 +71,12 @@ void I420_A8R8G8B8 ( filter_t *, picture_t *, picture_t * );
void
I420_R8G8B8A8
(
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_B8G8R8A8
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
void
I420_A8B8G8R8
(
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
#endif
/*****************************************************************************
/*****************************************************************************
...
...
modules/video_chroma/i420_ymga.c
View file @
218efb93
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
*****************************************************************************/
*****************************************************************************/
static
int
Activate
(
vlc_object_t
*
);
static
int
Activate
(
vlc_object_t
*
);
static
void
I420_YMGA
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I420_YMGA
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I420_YMGA_Filter
(
filter_t
*
,
picture_t
*
);
/*****************************************************************************
/*****************************************************************************
* Module descriptor
* Module descriptor
...
@@ -50,10 +51,10 @@ static void I420_YMGA ( filter_t *, picture_t *, picture_t * );
...
@@ -50,10 +51,10 @@ static void I420_YMGA ( filter_t *, picture_t *, picture_t * );
vlc_module_begin
();
vlc_module_begin
();
#if defined (MODULE_NAME_IS_i420_ymga)
#if defined (MODULE_NAME_IS_i420_ymga)
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
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)
#elif defined (MODULE_NAME_IS_i420_ymga_mmx)
set_description
(
N_
(
"MMX conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_description
(
N_
(
"MMX conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
MMX
);
add_requirement
(
MMX
);
#endif
#endif
set_callbacks
(
Activate
,
NULL
);
set_callbacks
(
Activate
,
NULL
);
...
@@ -82,7 +83,7 @@ static int Activate( vlc_object_t *p_this )
...
@@ -82,7 +83,7 @@ static int Activate( vlc_object_t *p_this )
switch
(
p_filter
->
fmt_out
.
video
.
i_chroma
)
switch
(
p_filter
->
fmt_out
.
video
.
i_chroma
)
{
{
case
VLC_FOURCC
(
'Y'
,
'M'
,
'G'
,
'A'
):
case
VLC_FOURCC
(
'Y'
,
'M'
,
'G'
,
'A'
):
p_filter
->
pf_video_filter
_io
=
I420_YMGA
;
p_filter
->
pf_video_filter
=
I420_YMGA_Filter
;
break
;
break
;
default:
default:
...
@@ -99,6 +100,8 @@ static int Activate( vlc_object_t *p_this )
...
@@ -99,6 +100,8 @@ static int Activate( vlc_object_t *p_this )
/* Following functions are local */
/* 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
* 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 * );
...
@@ -61,12 +61,18 @@ static int Activate ( vlc_object_t * );
static
void
I420_YUY2
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I420_YUY2
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I420_YVYU
(
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
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)
#if !defined (MODULE_NAME_IS_i420_yuy2_altivec)
static
void
I420_IUYV
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I420_IUYV
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I420_cyuv
(
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
#endif
#if defined (MODULE_NAME_IS_i420_yuy2)
#if defined (MODULE_NAME_IS_i420_yuy2)
static
void
I420_Y211
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I420_Y211
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
picture_t
*
I420_Y211_Filter
(
filter_t
*
,
picture_t
*
);
#endif
#endif
#ifdef MODULE_NAME_IS_i420_yuy2_mmx
#ifdef MODULE_NAME_IS_i420_yuy2_mmx
...
@@ -81,19 +87,19 @@ static const uint64_t i_80w = 0x0000000080808080ULL;
...
@@ -81,19 +87,19 @@ static const uint64_t i_80w = 0x0000000080808080ULL;
vlc_module_begin
();
vlc_module_begin
();
#if defined (MODULE_NAME_IS_i420_yuy2)
#if defined (MODULE_NAME_IS_i420_yuy2)
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
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)
#elif defined (MODULE_NAME_IS_i420_yuy2_mmx)
set_description
(
N_
(
"MMX conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_description
(
N_
(
"MMX conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
MMX
);
add_requirement
(
MMX
);
#elif defined (MODULE_NAME_IS_i420_yuy2_sse2)
#elif defined (MODULE_NAME_IS_i420_yuy2_sse2)
set_description
(
N_
(
"SSE2 conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_description
(
N_
(
"SSE2 conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
120
);
set_capability
(
"
video filter2
"
,
120
);
add_requirement
(
SSE2
);
add_requirement
(
SSE2
);
#elif defined (MODULE_NAME_IS_i420_yuy2_altivec)
#elif defined (MODULE_NAME_IS_i420_yuy2_altivec)
set_description
(
set_description
(
_
(
"AltiVec conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
_
(
"AltiVec conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
ALTIVEC
);
add_requirement
(
ALTIVEC
);
#endif
#endif
set_callbacks
(
Activate
,
NULL
);
set_callbacks
(
Activate
,
NULL
);
...
@@ -123,31 +129,31 @@ static int Activate( vlc_object_t *p_this )
...
@@ -123,31 +129,31 @@ static int Activate( vlc_object_t *p_this )
{
{
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
I420_YUY2
;
p_filter
->
pf_video_filter
=
I420_YUY2_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
p_filter
->
pf_video_filter
_io
=
I420_YVYU
;
p_filter
->
pf_video_filter
=
I420_YVYU_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
I420_UYVY
;
p_filter
->
pf_video_filter
=
I420_UYVY_Filter
;
break
;
break
;
#if !defined (MODULE_NAME_IS_i420_yuy2_altivec)
#if !defined (MODULE_NAME_IS_i420_yuy2_altivec)
case
VLC_FOURCC
(
'I'
,
'U'
,
'Y'
,
'V'
):
case
VLC_FOURCC
(
'I'
,
'U'
,
'Y'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
I420_IUYV
;
p_filter
->
pf_video_filter
=
I420_IUYV_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
p_filter
->
pf_video_filter
_io
=
I420_cyuv
;
p_filter
->
pf_video_filter
=
I420_cyuv_Filter
;
break
;
break
;
#endif
#endif
#if defined (MODULE_NAME_IS_i420_yuy2)
#if defined (MODULE_NAME_IS_i420_yuy2)
case
VLC_FOURCC
(
'Y'
,
'2'
,
'1'
,
'1'
):
case
VLC_FOURCC
(
'Y'
,
'2'
,
'1'
,
'1'
):
p_filter
->
pf_video_filter
_io
=
I420_Y211
;
p_filter
->
pf_video_filter
=
I420_Y211_Filter
;
break
;
break
;
#endif
#endif
...
@@ -174,6 +180,17 @@ static inline unsigned long long read_cycles(void)
...
@@ -174,6 +180,17 @@ static inline unsigned long long read_cycles(void)
#endif
#endif
/* Following functions are local */
/* 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
* 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 * );
...
@@ -46,13 +46,16 @@ static int Activate ( vlc_object_t * );
static
void
I422_I420
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_I420
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_YV12
(
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
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
* Module descriptor
*****************************************************************************/
*****************************************************************************/
vlc_module_begin
();
vlc_module_begin
();
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
60
);
set_capability
(
"
video filter2
"
,
60
);
set_callbacks
(
Activate
,
NULL
);
set_callbacks
(
Activate
,
NULL
);
vlc_module_end
();
vlc_module_end
();
...
@@ -80,15 +83,15 @@ static int Activate( vlc_object_t *p_this )
...
@@ -80,15 +83,15 @@ static int Activate( vlc_object_t *p_this )
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
):
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
):
case
VLC_FOURCC
(
'I'
,
'Y'
,
'U'
,
'V'
):
case
VLC_FOURCC
(
'I'
,
'Y'
,
'U'
,
'V'
):
case
VLC_FOURCC
(
'J'
,
'4'
,
'2'
,
'0'
):
case
VLC_FOURCC
(
'J'
,
'4'
,
'2'
,
'0'
):
p_filter
->
pf_video_filter
_io
=
I422_I420
;
p_filter
->
pf_video_filter
=
I422_I420_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'1'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'V'
,
'1'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
I422_YV12
;
p_filter
->
pf_video_filter
=
I422_YV12_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'Y'
,
'U'
,
'V'
,
'A'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'V'
,
'A'
):
p_filter
->
pf_video_filter
_io
=
I422_YUVA
;
p_filter
->
pf_video_filter
=
I422_YUVA_Filter
;
break
;
break
;
default:
default:
...
@@ -103,6 +106,9 @@ static int Activate( vlc_object_t *p_this )
...
@@ -103,6 +106,9 @@ static int Activate( vlc_object_t *p_this )
}
}
/* Following functions are local */
/* 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
* 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
...
@@ -54,9 +54,14 @@ static void I422_YVYU ( filter_t *, picture_t *, picture_t * );
...
@@ -54,9 +54,14 @@ static void I422_YVYU ( filter_t *, picture_t *, picture_t * );
static
void
I422_UYVY
(
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_IUYV
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
I422_cyuv
(
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)
#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
#endif
/*****************************************************************************
/*****************************************************************************
...
@@ -65,14 +70,14 @@ static void I422_Y211 ( filter_t *, picture_t *, picture_t * );
...
@@ -65,14 +70,14 @@ static void I422_Y211 ( filter_t *, picture_t *, picture_t * );
vlc_module_begin
();
vlc_module_begin
();
#if defined (MODULE_NAME_IS_i422_yuy2)
#if defined (MODULE_NAME_IS_i422_yuy2)
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
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)
#elif defined (MODULE_NAME_IS_i422_yuy2_mmx)
set_description
(
N_
(
"MMX conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_description
(
N_
(
"MMX conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
100
);
set_capability
(
"
video filter2
"
,
100
);
add_requirement
(
MMX
);
add_requirement
(
MMX
);
#elif defined (MODULE_NAME_IS_i422_yuy2_sse2)
#elif defined (MODULE_NAME_IS_i422_yuy2_sse2)
set_description
(
N_
(
"SSE2 conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_description
(
N_
(
"SSE2 conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
120
);
set_capability
(
"
video filter2
"
,
120
);
add_requirement
(
SSE2
);
add_requirement
(
SSE2
);
#endif
#endif
set_callbacks
(
Activate
,
NULL
);
set_callbacks
(
Activate
,
NULL
);
...
@@ -100,30 +105,30 @@ static int Activate( vlc_object_t *p_this )
...
@@ -100,30 +105,30 @@ static int Activate( vlc_object_t *p_this )
{
{
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
I422_YUY2
;
p_filter
->
pf_video_filter
=
I422_YUY2_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
p_filter
->
pf_video_filter
_io
=
I422_YVYU
;
p_filter
->
pf_video_filter
=
I422_YVYU_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
I422_UYVY
;
p_filter
->
pf_video_filter
=
I422_UYVY_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'I'
,
'U'
,
'Y'
,
'V'
):
case
VLC_FOURCC
(
'I'
,
'U'
,
'Y'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
I422_IUYV
;
p_filter
->
pf_video_filter
=
I422_IUYV_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
p_filter
->
pf_video_filter
_io
=
I422_cyuv
;
p_filter
->
pf_video_filter
=
I422_cyuv_Filter
;
break
;
break
;
#if defined (MODULE_NAME_IS_i422_yuy2)
#if defined (MODULE_NAME_IS_i422_yuy2)
case
VLC_FOURCC
(
'Y'
,
'2'
,
'1'
,
'1'
):
case
VLC_FOURCC
(
'Y'
,
'2'
,
'1'
,
'1'
):
p_filter
->
pf_video_filter
_io
=
I422_Y211
;
p_filter
->
pf_video_filter
=
I422_Y211_Filter
;
break
;
break
;
#endif
#endif
...
@@ -140,6 +145,15 @@ static int Activate( vlc_object_t *p_this )
...
@@ -140,6 +145,15 @@ static int Activate( vlc_object_t *p_this )
/* Following functions are local */
/* 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
* 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 * );
...
@@ -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
UYVY_I420
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
cyuv_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
* Module descriptor
*****************************************************************************/
*****************************************************************************/
vlc_module_begin
();
vlc_module_begin
();
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
set_callbacks
(
Activate
,
NULL
);
set_callbacks
(
Activate
,
NULL
);
vlc_module_end
();
vlc_module_end
();
...
@@ -78,21 +83,21 @@ static int Activate( vlc_object_t *p_this )
...
@@ -78,21 +83,21 @@ static int Activate( vlc_object_t *p_this )
{
{
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
YUY2_I420
;
p_filter
->
pf_video_filter
=
YUY2_I420_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
p_filter
->
pf_video_filter
_io
=
YVYU_I420
;
p_filter
->
pf_video_filter
=
YVYU_I420_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
UYVY_I420
;
p_filter
->
pf_video_filter
=
UYVY_I420_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
p_filter
->
pf_video_filter
_io
=
cyuv_I420
;
p_filter
->
pf_video_filter
=
cyuv_I420_Filter
;
break
;
break
;
default:
default:
...
@@ -107,6 +112,10 @@ static int Activate( vlc_object_t *p_this )
...
@@ -107,6 +112,10 @@ static int Activate( vlc_object_t *p_this )
}
}
/* Following functions are local */
/* 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
* 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 * );
...
@@ -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
YVYU_I422
(
filter_t
*
,
picture_t
*
,
picture_t
*
);
static
void
UYVY_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
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
* Module descriptor
*****************************************************************************/
*****************************************************************************/
vlc_module_begin
();
vlc_module_begin
();
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_description
(
N_
(
"Conversions from "
SRC_FOURCC
" to "
DEST_FOURCC
)
);
set_capability
(
"
chroma
"
,
80
);
set_capability
(
"
video filter2
"
,
80
);
set_callbacks
(
Activate
,
NULL
);
set_callbacks
(
Activate
,
NULL
);
vlc_module_end
();
vlc_module_end
();
...
@@ -78,21 +82,21 @@ static int Activate( vlc_object_t *p_this )
...
@@ -78,21 +82,21 @@ static int Activate( vlc_object_t *p_this )
{
{
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'Y'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'U'
,
'N'
,
'V'
):
p_filter
->
pf_video_filter
_io
=
YUY2_I422
;
p_filter
->
pf_video_filter
=
YUY2_I422_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
case
VLC_FOURCC
(
'Y'
,
'V'
,
'Y'
,
'U'
):
p_filter
->
pf_video_filter
_io
=
YVYU_I422
;
p_filter
->
pf_video_filter
=
YVYU_I422_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'V'
,
'Y'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'U'
,
'Y'
,
'N'
,
'V'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'4'
,
'2'
,
'2'
):
p_filter
->
pf_video_filter
_io
=
UYVY_I422
;
p_filter
->
pf_video_filter
=
UYVY_I422_Filter
;
break
;
break
;
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
case
VLC_FOURCC
(
'c'
,
'y'
,
'u'
,
'v'
):
p_filter
->
pf_video_filter
_io
=
cyuv_I422
;
p_filter
->
pf_video_filter
=
cyuv_I422_Filter
;
break
;
break
;
default:
default:
...
@@ -108,6 +112,11 @@ static int Activate( vlc_object_t *p_this )
...
@@ -108,6 +112,11 @@ static int Activate( vlc_object_t *p_this )
/* Following functions are local */
/* Following functions are local */
VIDEO_FILTER_WRAPPER
(
YUY2_I422
)
VIDEO_FILTER_WRAPPER
(
YVYU_I422
)
VIDEO_FILTER_WRAPPER
(
UYVY_I422
)
VIDEO_FILTER_WRAPPER
(
cyuv_I422
)
/*****************************************************************************
/*****************************************************************************
* YUY2_I422: packed YUY2 4:2:2 to planar YUV 4:2:2
* YUY2_I422: packed YUY2 4:2:2 to planar YUV 4:2:2
*****************************************************************************/
*****************************************************************************/
...
...
src/video_output/video_output.c
View file @
218efb93
...
@@ -514,6 +514,13 @@ static void vout_Destructor( vlc_object_t * p_this )
...
@@ -514,6 +514,13 @@ static void vout_Destructor( vlc_object_t * p_this )
* initialization. It returns 0 on success. Note that the thread's flag are not
* initialization. It returns 0 on success. Note that the thread's flag are not
* modified inside this function.
* modified inside this function.
*****************************************************************************/
*****************************************************************************/
static
picture_t
*
get_pic
(
filter_t
*
p_filter
)
{
picture_t
*
p_pic
=
(
picture_t
*
)
p_filter
->
p_owner
;
p_filter
->
p_owner
=
NULL
;
return
p_pic
;
}
static
int
InitThread
(
vout_thread_t
*
p_vout
)
static
int
InitThread
(
vout_thread_t
*
p_vout
)
{
{
int
i
,
i_aspect_x
,
i_aspect_y
;
int
i
,
i_aspect_x
,
i_aspect_y
;
...
@@ -672,9 +679,9 @@ static int InitThread( vout_thread_t *p_vout )
...
@@ -672,9 +679,9 @@ static int InitThread( vout_thread_t *p_vout )
p_chroma
->
fmt_out
.
video
.
i_lgshift
=
p_vout
->
output
.
i_lgshift
;
p_chroma
->
fmt_out
.
video
.
i_lgshift
=
p_vout
->
output
.
i_lgshift
;
p_chroma
->
fmt_out
.
video
.
i_rbshift
=
p_vout
->
output
.
i_rbshift
;
p_chroma
->
fmt_out
.
video
.
i_rbshift
=
p_vout
->
output
.
i_rbshift
;
p_chroma
->
fmt_out
.
video
.
i_lbshift
=
p_vout
->
output
.
i_lbshift
;
p_chroma
->
fmt_out
.
video
.
i_lbshift
=
p_vout
->
output
.
i_lbshift
;
msg_Err
(
p_vout
,
"HOLA! %4.4s
\n
"
,
(
char
*
)
&
p_chroma
->
fmt_in
.
video
.
i_chroma
);
msg_Err
(
p_vout
,
"HOLA! %4.4s"
,
(
char
*
)
&
p_chroma
->
fmt_in
.
video
.
i_chroma
);
msg_Err
(
p_vout
,
"HOLA! %4.4s
\n
"
,
(
char
*
)
&
p_chroma
->
fmt_out
.
video
.
i_chroma
);
msg_Err
(
p_vout
,
"HOLA! %4.4s"
,
(
char
*
)
&
p_chroma
->
fmt_out
.
video
.
i_chroma
);
p_chroma
->
p_module
=
module_Need
(
p_chroma
,
"
chroma
"
,
NULL
,
0
);
p_chroma
->
p_module
=
module_Need
(
p_chroma
,
"
video filter2
"
,
NULL
,
0
);
if
(
p_chroma
->
p_module
==
NULL
)
if
(
p_chroma
->
p_module
==
NULL
)
{
{
...
@@ -687,6 +694,7 @@ static int InitThread( vout_thread_t *p_vout )
...
@@ -687,6 +694,7 @@ static int InitThread( vout_thread_t *p_vout )
vlc_mutex_unlock
(
&
p_vout
->
change_lock
);
vlc_mutex_unlock
(
&
p_vout
->
change_lock
);
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
p_chroma
->
pf_vout_buffer_new
=
get_pic
;
msg_Dbg
(
p_vout
,
"indirect render, mapping "
msg_Dbg
(
p_vout
,
"indirect render, mapping "
"render pictures 0-%i to system pictures %i-%i"
,
"render pictures 0-%i to system pictures %i-%i"
,
...
...
src/video_output/vout_pictures.c
View file @
218efb93
...
@@ -378,7 +378,8 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
...
@@ -378,7 +378,8 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
}
}
/* Convert image to the first direct buffer */
/* Convert image to the first direct buffer */
p_vout
->
p_chroma
->
pf_video_filter_io
(
p_vout
->
p_chroma
,
p_pic
,
p_tmp_pic
);
p_vout
->
p_chroma
->
p_owner
=
(
picture_t
*
)
p_tmp_pic
;
p_vout
->
p_chroma
->
pf_video_filter
(
p_vout
->
p_chroma
,
p_pic
);
/* Render subpictures on the first direct buffer */
/* Render subpictures on the first direct buffer */
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
p_vout
->
fmt_out
,
p_tmp_pic
,
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
p_vout
->
fmt_out
,
p_tmp_pic
,
...
@@ -398,7 +399,8 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
...
@@ -398,7 +399,8 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
return
NULL
;
return
NULL
;
/* Convert image to the first direct buffer */
/* Convert image to the first direct buffer */
p_vout
->
p_chroma
->
pf_video_filter_io
(
p_vout
->
p_chroma
,
p_pic
,
&
p_vout
->
p_picture
[
0
]
);
p_vout
->
p_chroma
->
p_owner
=
(
picture_t
*
)
&
p_vout
->
p_picture
[
0
];
p_vout
->
p_chroma
->
pf_video_filter
(
p_vout
->
p_chroma
,
p_pic
);
/* Render subpictures on the first direct buffer */
/* Render subpictures on the first direct buffer */
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
p_vout
->
fmt_out
,
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
p_vout
->
fmt_out
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment