Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
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
Commits
3f6f97f1
Commit
3f6f97f1
authored
Mar 05, 2005
by
Gildas Bazin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* include/video_output.h, ALL: changed api for vout_Request()/vout_Create() to be more flexible.
parent
286a9420
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
279 additions
and
124 deletions
+279
-124
include/video_output.h
include/video_output.h
+8
-4
modules/codec/ffmpeg/video.c
modules/codec/ffmpeg/video.c
+2
-0
modules/video_filter/adjust.c
modules/video_filter/adjust.c
+10
-3
modules/video_filter/clone.c
modules/video_filter/clone.c
+11
-6
modules/video_filter/crop.c
modules/video_filter/crop.c
+21
-6
modules/video_filter/deinterlace.c
modules/video_filter/deinterlace.c
+14
-12
modules/video_filter/distort.c
modules/video_filter/distort.c
+10
-3
modules/video_filter/invert.c
modules/video_filter/invert.c
+10
-3
modules/video_filter/logo.c
modules/video_filter/logo.c
+10
-3
modules/video_filter/motionblur.c
modules/video_filter/motionblur.c
+10
-3
modules/video_filter/motiondetect.c
modules/video_filter/motiondetect.c
+10
-3
modules/video_filter/transform.c
modules/video_filter/transform.c
+18
-9
modules/video_filter/wall.c
modules/video_filter/wall.c
+16
-5
modules/visualization/goom.c
modules/visualization/goom.c
+9
-5
modules/visualization/visual/visual.c
modules/visualization/visual/visual.c
+8
-6
src/input/decoder.c
src/input/decoder.c
+26
-6
src/video_output/video_output.c
src/video_output/video_output.c
+68
-23
src/video_output/vout_pictures.c
src/video_output/vout_pictures.c
+18
-24
No files found.
include/video_output.h
View file @
3f6f97f1
...
@@ -121,6 +121,10 @@ struct vout_thread_t
...
@@ -121,6 +121,10 @@ struct vout_thread_t
picture_heap_t
output
;
/**< direct buffers */
picture_heap_t
output
;
/**< direct buffers */
vlc_bool_t
b_direct
;
/**< rendered are like direct ? */
vlc_bool_t
b_direct
;
/**< rendered are like direct ? */
vout_chroma_t
chroma
;
/**< translation tables */
vout_chroma_t
chroma
;
/**< translation tables */
video_format_t
fmt_render
;
/* render format (from the decoder) */
video_format_t
fmt_in
;
/* input (modified render) format */
video_format_t
fmt_out
;
/* output format (for the video output) */
/**@}*/
/**@}*/
/* Picture heap */
/* Picture heap */
...
@@ -194,10 +198,10 @@ struct vout_thread_t
...
@@ -194,10 +198,10 @@ struct vout_thread_t
/*****************************************************************************
/*****************************************************************************
* Prototypes
* Prototypes
*****************************************************************************/
*****************************************************************************/
#define vout_Request(a,b,c
,d,e,f) __vout_Request(VLC_OBJECT(a),b,c,d,e,f
)
#define vout_Request(a,b,c
) __vout_Request(VLC_OBJECT(a),b,c
)
VLC_EXPORT
(
vout_thread_t
*
,
__vout_Request
,
(
vlc_object_t
*
,
vout_thread_t
*
,
unsigned
int
,
unsigned
int
,
uint32_t
,
unsigned
int
)
);
VLC_EXPORT
(
vout_thread_t
*
,
__vout_Request
,
(
vlc_object_t
*
,
vout_thread_t
*
,
video_format_t
*
)
);
#define vout_Create(a,b
,c,d,e) __vout_Create(VLC_OBJECT(a),b,c,d,e
)
#define vout_Create(a,b
) __vout_Create(VLC_OBJECT(a),b
)
VLC_EXPORT
(
vout_thread_t
*
,
__vout_Create
,
(
vlc_object_t
*
,
unsigned
int
,
unsigned
int
,
uint32_t
,
unsigned
int
)
);
VLC_EXPORT
(
vout_thread_t
*
,
__vout_Create
,
(
vlc_object_t
*
,
video_format_t
*
)
);
VLC_EXPORT
(
void
,
vout_Destroy
,
(
vout_thread_t
*
)
);
VLC_EXPORT
(
void
,
vout_Destroy
,
(
vout_thread_t
*
)
);
VLC_EXPORT
(
int
,
vout_VarCallback
,
(
vlc_object_t
*
,
const
char
*
,
vlc_value_t
,
vlc_value_t
,
void
*
)
);
VLC_EXPORT
(
int
,
vout_VarCallback
,
(
vlc_object_t
*
,
const
char
*
,
vlc_value_t
,
vlc_value_t
,
void
*
)
);
...
...
modules/codec/ffmpeg/video.c
View file @
3f6f97f1
...
@@ -169,6 +169,8 @@ static inline picture_t *ffmpeg_NewPictBuf( decoder_t *p_dec,
...
@@ -169,6 +169,8 @@ static inline picture_t *ffmpeg_NewPictBuf( decoder_t *p_dec,
p_dec
->
fmt_out
.
video
.
i_aspect
=
p_dec
->
fmt_out
.
video
.
i_aspect
=
VOUT_ASPECT_FACTOR
*
(
av_q2d
(
p_context
->
sample_aspect_ratio
)
*
VOUT_ASPECT_FACTOR
*
(
av_q2d
(
p_context
->
sample_aspect_ratio
)
*
p_context
->
width
/
p_context
->
height
);
p_context
->
width
/
p_context
->
height
);
p_dec
->
fmt_out
.
video
.
i_sar_num
=
p_context
->
sample_aspect_ratio
.
num
;
p_dec
->
fmt_out
.
video
.
i_sar_den
=
p_context
->
sample_aspect_ratio
.
den
;
#else
#else
p_dec
->
fmt_out
.
video
.
i_aspect
=
p_dec
->
fmt_out
.
video
.
i_aspect
=
VOUT_ASPECT_FACTOR
*
p_context
->
aspect_ratio
;
VOUT_ASPECT_FACTOR
*
p_context
->
aspect_ratio
;
...
...
modules/video_filter/adjust.c
View file @
3f6f97f1
...
@@ -150,6 +150,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -150,6 +150,7 @@ static int Init( vout_thread_t *p_vout )
{
{
int
i_index
;
int
i_index
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
video_format_t
fmt
=
{
0
};
I_OUTPUTPICTURES
=
0
;
I_OUTPUTPICTURES
=
0
;
...
@@ -159,12 +160,18 @@ static int Init( vout_thread_t *p_vout )
...
@@ -159,12 +160,18 @@ static int Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
render
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
render
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
render
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
/* Try to open the real video output */
/* Try to open the real video output */
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
render
.
i_width
,
p_vout
->
render
.
i_height
,
p_vout
->
render
.
i_chroma
,
p_vout
->
render
.
i_aspect
);
/* Everything failed */
/* Everything failed */
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
...
...
modules/video_filter/clone.c
View file @
3f6f97f1
...
@@ -205,6 +205,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -205,6 +205,7 @@ static int Init( vout_thread_t *p_vout )
int
i_index
,
i_vout
;
int
i_index
,
i_vout
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
char
*
psz_default_vout
;
char
*
psz_default_vout
;
video_format_t
fmt
=
{
0
};
I_OUTPUTPICTURES
=
0
;
I_OUTPUTPICTURES
=
0
;
...
@@ -214,6 +215,14 @@ static int Init( vout_thread_t *p_vout )
...
@@ -214,6 +215,14 @@ static int Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
render
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
render
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
render
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
/* Try to open the real video output */
/* Try to open the real video output */
msg_Dbg
(
p_vout
,
"spawning the real video outputs"
);
msg_Dbg
(
p_vout
,
"spawning the real video outputs"
);
...
@@ -227,9 +236,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -227,9 +236,7 @@ static int Init( vout_thread_t *p_vout )
"default"
,
8
)
)
)
"default"
,
8
)
)
)
{
{
p_vout
->
p_sys
->
pp_vout
[
i_vout
]
=
p_vout
->
p_sys
->
pp_vout
[
i_vout
]
=
vout_Create
(
p_vout
,
p_vout
->
render
.
i_width
,
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
render
.
i_height
,
p_vout
->
render
.
i_chroma
,
p_vout
->
render
.
i_aspect
);
}
}
else
else
{
{
...
@@ -237,9 +244,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -237,9 +244,7 @@ static int Init( vout_thread_t *p_vout )
config_PutPsz
(
p_vout
,
"vout"
,
config_PutPsz
(
p_vout
,
"vout"
,
p_vout
->
p_sys
->
ppsz_vout_list
[
i_vout
]
);
p_vout
->
p_sys
->
ppsz_vout_list
[
i_vout
]
);
p_vout
->
p_sys
->
pp_vout
[
i_vout
]
=
p_vout
->
p_sys
->
pp_vout
[
i_vout
]
=
vout_Create
(
p_vout
,
p_vout
->
render
.
i_width
,
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
render
.
i_height
,
p_vout
->
render
.
i_chroma
,
p_vout
->
render
.
i_aspect
);
/* Reset the default value */
/* Reset the default value */
config_PutPsz
(
p_vout
,
"vout"
,
psz_default_vout
);
config_PutPsz
(
p_vout
,
"vout"
,
psz_default_vout
);
...
...
modules/video_filter/crop.c
View file @
3f6f97f1
...
@@ -134,6 +134,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -134,6 +134,7 @@ static int Init( vout_thread_t *p_vout )
int
i_index
;
int
i_index
;
char
*
psz_var
;
char
*
psz_var
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
video_format_t
fmt
=
{
0
};
I_OUTPUTPICTURES
=
0
;
I_OUTPUTPICTURES
=
0
;
...
@@ -247,10 +248,16 @@ static int Init( vout_thread_t *p_vout )
...
@@ -247,10 +248,16 @@ static int Init( vout_thread_t *p_vout )
*
p_vout
->
output
.
i_height
/
p_vout
->
p_sys
->
i_height
*
p_vout
->
output
.
i_height
/
p_vout
->
p_sys
->
i_height
*
p_vout
->
p_sys
->
i_width
/
p_vout
->
output
.
i_width
;
*
p_vout
->
p_sys
->
i_width
/
p_vout
->
output
.
i_width
;
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
p_sys
->
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
p_sys
->
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
p_sys
->
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
p_sys
->
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
/* Try to open the real video output */
/* Try to open the real video output */
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
p_sys
->
i_width
,
p_vout
->
p_sys
->
i_height
,
p_vout
->
render
.
i_chroma
,
p_vout
->
p_sys
->
i_aspect
);
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
{
{
msg_Err
(
p_vout
,
"failed to create vout"
);
msg_Err
(
p_vout
,
"failed to create vout"
);
...
@@ -310,6 +317,8 @@ static void Destroy( vlc_object_t *p_this )
...
@@ -310,6 +317,8 @@ static void Destroy( vlc_object_t *p_this )
*****************************************************************************/
*****************************************************************************/
static
int
Manage
(
vout_thread_t
*
p_vout
)
static
int
Manage
(
vout_thread_t
*
p_vout
)
{
{
video_format_t
fmt
=
{
0
};
if
(
!
p_vout
->
p_sys
->
b_changed
)
if
(
!
p_vout
->
p_sys
->
b_changed
)
{
{
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
...
@@ -317,9 +326,15 @@ static int Manage( vout_thread_t *p_vout )
...
@@ -317,9 +326,15 @@ static int Manage( vout_thread_t *p_vout )
vout_Destroy
(
p_vout
->
p_sys
->
p_vout
);
vout_Destroy
(
p_vout
->
p_sys
->
p_vout
);
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
p_sys
->
i_width
;
p_vout
->
p_sys
->
i_width
,
p_vout
->
p_sys
->
i_height
,
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
p_sys
->
i_height
;
p_vout
->
render
.
i_chroma
,
p_vout
->
p_sys
->
i_aspect
);
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
p_sys
->
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
p_sys
->
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
{
{
msg_Err
(
p_vout
,
"failed to create vout"
);
msg_Err
(
p_vout
,
"failed to create vout"
);
...
...
modules/video_filter/deinterlace.c
View file @
3f6f97f1
...
@@ -320,9 +320,18 @@ static int Init( vout_thread_t *p_vout )
...
@@ -320,9 +320,18 @@ static int Init( vout_thread_t *p_vout )
static
vout_thread_t
*
SpawnRealVout
(
vout_thread_t
*
p_vout
)
static
vout_thread_t
*
SpawnRealVout
(
vout_thread_t
*
p_vout
)
{
{
vout_thread_t
*
p_real_vout
=
NULL
;
vout_thread_t
*
p_real_vout
=
NULL
;
video_format_t
fmt
=
{
0
};
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
output
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
output
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
output
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
output
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
output
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
switch
(
p_vout
->
render
.
i_chroma
)
switch
(
p_vout
->
render
.
i_chroma
)
{
{
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
):
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
):
...
@@ -332,28 +341,21 @@ static vout_thread_t *SpawnRealVout( vout_thread_t *p_vout )
...
@@ -332,28 +341,21 @@ static vout_thread_t *SpawnRealVout( vout_thread_t *p_vout )
{
{
case
DEINTERLACE_MEAN
:
case
DEINTERLACE_MEAN
:
case
DEINTERLACE_DISCARD
:
case
DEINTERLACE_DISCARD
:
p_real_vout
=
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
output
.
i_height
/
2
;
vout_Create
(
p_vout
,
p_real_vout
=
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
/
2
,
p_vout
->
output
.
i_chroma
,
p_vout
->
output
.
i_aspect
);
break
;
break
;
case
DEINTERLACE_BOB
:
case
DEINTERLACE_BOB
:
case
DEINTERLACE_BLEND
:
case
DEINTERLACE_BLEND
:
case
DEINTERLACE_LINEAR
:
case
DEINTERLACE_LINEAR
:
p_real_vout
=
p_real_vout
=
vout_Create
(
p_vout
,
&
fmt
);
vout_Create
(
p_vout
,
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
p_vout
->
output
.
i_chroma
,
p_vout
->
output
.
i_aspect
);
break
;
break
;
}
}
break
;
break
;
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'2'
):
case
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'2'
):
p_real_vout
=
fmt
.
i_chroma
=
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
);
vout_Create
(
p_vout
,
p_real_vout
=
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
),
p_vout
->
output
.
i_aspect
);
break
;
break
;
default:
default:
...
...
modules/video_filter/distort.c
View file @
3f6f97f1
...
@@ -165,6 +165,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -165,6 +165,7 @@ static int Init( vout_thread_t *p_vout )
{
{
int
i_index
;
int
i_index
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
video_format_t
fmt
=
{
0
};
I_OUTPUTPICTURES
=
0
;
I_OUTPUTPICTURES
=
0
;
...
@@ -174,12 +175,18 @@ static int Init( vout_thread_t *p_vout )
...
@@ -174,12 +175,18 @@ static int Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
render
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
render
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
render
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
/* Try to open the real video output */
/* Try to open the real video output */
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
render
.
i_width
,
p_vout
->
render
.
i_height
,
p_vout
->
render
.
i_chroma
,
p_vout
->
render
.
i_aspect
);
/* Everything failed */
/* Everything failed */
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
...
...
modules/video_filter/invert.c
View file @
3f6f97f1
...
@@ -111,6 +111,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -111,6 +111,7 @@ static int Init( vout_thread_t *p_vout )
{
{
int
i_index
;
int
i_index
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
video_format_t
fmt
=
{
0
};
I_OUTPUTPICTURES
=
0
;
I_OUTPUTPICTURES
=
0
;
...
@@ -120,12 +121,18 @@ static int Init( vout_thread_t *p_vout )
...
@@ -120,12 +121,18 @@ static int Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
render
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
render
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
render
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
/* Try to open the real video output */
/* Try to open the real video output */
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
render
.
i_width
,
p_vout
->
render
.
i_height
,
p_vout
->
render
.
i_chroma
,
p_vout
->
render
.
i_aspect
);
/* Everything failed */
/* Everything failed */
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
...
...
modules/video_filter/logo.c
View file @
3f6f97f1
...
@@ -211,6 +211,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -211,6 +211,7 @@ static int Init( vout_thread_t *p_vout )
vout_sys_t
*
p_sys
=
p_vout
->
p_sys
;
vout_sys_t
*
p_sys
=
p_vout
->
p_sys
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
int
i_index
;
int
i_index
;
video_format_t
fmt
=
{
0
};
I_OUTPUTPICTURES
=
0
;
I_OUTPUTPICTURES
=
0
;
...
@@ -220,6 +221,14 @@ static int Init( vout_thread_t *p_vout )
...
@@ -220,6 +221,14 @@ static int Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
render
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
render
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
render
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
/* Load the video blending filter */
/* Load the video blending filter */
p_sys
->
p_blend
=
vlc_object_create
(
p_vout
,
sizeof
(
filter_t
)
);
p_sys
->
p_blend
=
vlc_object_create
(
p_vout
,
sizeof
(
filter_t
)
);
vlc_object_attach
(
p_sys
->
p_blend
,
p_vout
);
vlc_object_attach
(
p_sys
->
p_blend
,
p_vout
);
...
@@ -280,9 +289,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -280,9 +289,7 @@ static int Init( vout_thread_t *p_vout )
/* Try to open the real video output */
/* Try to open the real video output */
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
p_sys
->
p_vout
=
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
vout_Create
(
p_vout
,
p_vout
->
render
.
i_width
,
p_vout
->
render
.
i_height
,
p_vout
->
render
.
i_chroma
,
p_vout
->
render
.
i_aspect
);
/* Everything failed */
/* Everything failed */
if
(
p_sys
->
p_vout
==
NULL
)
if
(
p_sys
->
p_vout
==
NULL
)
...
...
modules/video_filter/motionblur.c
View file @
3f6f97f1
...
@@ -129,6 +129,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -129,6 +129,7 @@ static int Init( vout_thread_t *p_vout )
{
{
int
i_index
;
int
i_index
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
video_format_t
fmt
=
{
0
};
I_OUTPUTPICTURES
=
0
;
I_OUTPUTPICTURES
=
0
;
...
@@ -153,14 +154,20 @@ static int Init( vout_thread_t *p_vout )
...
@@ -153,14 +154,20 @@ static int Init( vout_thread_t *p_vout )
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
output
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
output
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
output
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
output
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
output
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
switch
(
p_vout
->
render
.
i_chroma
)
switch
(
p_vout
->
render
.
i_chroma
)
{
{
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
(
'Y'
,
'V'
,
'1'
,
'2'
):
case
VLC_FOURCC
(
'Y'
,
'V'
,
'1'
,
'2'
):
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
p_vout
->
output
.
i_chroma
,
p_vout
->
output
.
i_aspect
);
break
;
break
;
default:
default:
break
;
break
;
...
...
modules/video_filter/motiondetect.c
View file @
3f6f97f1
...
@@ -211,6 +211,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -211,6 +211,7 @@ static int Init( vout_thread_t *p_vout )
{
{
int
i_index
;
int
i_index
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
video_format_t
fmt
=
{
0
};
I_OUTPUTPICTURES
=
0
;
I_OUTPUTPICTURES
=
0
;
...
@@ -220,12 +221,18 @@ static int Init( vout_thread_t *p_vout )
...
@@ -220,12 +221,18 @@ static int Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
render
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
render
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
render
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
/* Try to open the real video output */
/* Try to open the real video output */
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
render
.
i_width
,
p_vout
->
render
.
i_height
,
p_vout
->
render
.
i_chroma
,
p_vout
->
render
.
i_aspect
);
/* Everything failed */
/* Everything failed */
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
if
(
p_vout
->
p_sys
->
p_vout
==
NULL
)
...
...
modules/video_filter/transform.c
View file @
3f6f97f1
...
@@ -180,6 +180,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -180,6 +180,7 @@ static int Init( vout_thread_t *p_vout )
{
{
int
i_index
;
int
i_index
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
video_format_t
fmt
=
{
0
};
I_OUTPUTPICTURES
=
0
;
I_OUTPUTPICTURES
=
0
;
...
@@ -189,23 +190,31 @@ static int Init( vout_thread_t *p_vout )
...
@@ -189,23 +190,31 @@ static int Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_height
=
p_vout
->
render
.
i_height
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
render
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
render
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
render
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
/* Try to open the real video output */
/* Try to open the real video output */
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
msg_Dbg
(
p_vout
,
"spawning the real video output"
);
if
(
p_vout
->
p_sys
->
b_rotation
)
if
(
p_vout
->
p_sys
->
b_rotation
)
{
{
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
render
.
i_height
;
p_vout
->
render
.
i_height
,
p_vout
->
render
.
i_width
,
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
render
.
i_width
;
p_vout
->
render
.
i_chroma
,
fmt
.
i_aspect
=
VOUT_ASPECT_FACTOR
*
(
uint64_t
)
VOUT_ASPECT_FACTOR
(
uint64_t
)
VOUT_ASPECT_FACTOR
/
p_vout
->
render
.
i_aspect
;
*
(
uint64_t
)
VOUT_ASPECT_FACTOR
fmt
.
i_sar_num
=
VOUT_ASPECT_FACTOR
;
/
(
uint64_t
)
p_vout
->
render
.
i_aspect
);
fmt
.
i_sar_den
=
p_vout
->
render
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
}
}
else
else
{
{
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
p_vout
->
p_sys
->
p_vout
=
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
render
.
i_width
,
p_vout
->
render
.
i_height
,
p_vout
->
render
.
i_chroma
,
p_vout
->
render
.
i_aspect
);
}
}
/* Everything failed */
/* Everything failed */
...
...
modules/video_filter/wall.c
View file @
3f6f97f1
...
@@ -229,6 +229,7 @@ static int Init( vout_thread_t *p_vout )
...
@@ -229,6 +229,7 @@ static int Init( vout_thread_t *p_vout )
int
i_index
,
i_row
,
i_col
,
i_width
,
i_height
,
i_left
,
i_top
;
int
i_index
,
i_row
,
i_col
,
i_width
,
i_height
,
i_left
,
i_top
;
unsigned
int
i_target_width
,
i_target_height
;
unsigned
int
i_target_width
,
i_target_height
;
picture_t
*
p_pic
;
picture_t
*
p_pic
;
video_format_t
fmt
=
{
0
};
int
i_aspect
=
4
*
VOUT_ASPECT_FACTOR
/
3
;
int
i_aspect
=
4
*
VOUT_ASPECT_FACTOR
/
3
;
int
i_align
=
0
;
int
i_align
=
0
;
unsigned
int
i_hstart
,
i_hend
,
i_vstart
,
i_vend
;
unsigned
int
i_hstart
,
i_hend
,
i_vstart
,
i_vend
;
...
@@ -269,6 +270,14 @@ static int Init( vout_thread_t *p_vout )
...
@@ -269,6 +270,14 @@ static int Init( vout_thread_t *p_vout )
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
p_vout
->
output
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
var_Create
(
p_vout
,
"align"
,
VLC_VAR_INTEGER
);
var_Create
(
p_vout
,
"align"
,
VLC_VAR_INTEGER
);
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_vout
->
render
.
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_vout
->
render
.
i_height
;
fmt
.
i_x_offset
=
fmt
.
i_y_offset
=
0
;
fmt
.
i_chroma
=
p_vout
->
render
.
i_chroma
;
fmt
.
i_aspect
=
p_vout
->
render
.
i_aspect
;
fmt
.
i_sar_num
=
p_vout
->
render
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
w1
=
p_vout
->
output
.
i_width
/
p_vout
->
p_sys
->
i_col
;
w1
=
p_vout
->
output
.
i_width
/
p_vout
->
p_sys
->
i_col
;
w1
&=
~
1
;
w1
&=
~
1
;
h1
=
w1
*
VOUT_ASPECT_FACTOR
/
i_aspect
&~
1
;
h1
=
w1
*
VOUT_ASPECT_FACTOR
/
i_aspect
&~
1
;
...
@@ -394,12 +403,14 @@ static int Init( vout_thread_t *p_vout )
...
@@ -394,12 +403,14 @@ static int Init( vout_thread_t *p_vout )
var_SetInteger
(
p_vout
,
"video-x"
,
i_left
+
i_xpos
-
i_width
);
var_SetInteger
(
p_vout
,
"video-x"
,
i_left
+
i_xpos
-
i_width
);
var_SetInteger
(
p_vout
,
"video-y"
,
i_top
+
i_ypos
);
var_SetInteger
(
p_vout
,
"video-y"
,
i_top
+
i_ypos
);
fmt
.
i_width
=
fmt
.
i_visible_width
=
i_width
;
fmt
.
i_height
=
fmt
.
i_visible_height
=
i_height
;
fmt
.
i_aspect
=
i_aspect
*
i_target_height
/
i_height
*
i_width
/
i_target_width
;
p_vout
->
p_sys
->
pp_vout
[
p_vout
->
p_sys
->
i_vout
].
p_vout
=
p_vout
->
p_sys
->
pp_vout
[
p_vout
->
p_sys
->
i_vout
].
p_vout
=
vout_Create
(
p_vout
,
i_width
,
i_height
,
vout_Create
(
p_vout
,
&
fmt
);
p_vout
->
render
.
i_chroma
,
if
(
!
p_vout
->
p_sys
->
pp_vout
[
p_vout
->
p_sys
->
i_vout
].
p_vout
)
i_aspect
*
i_target_height
/
i_height
*
i_width
/
i_target_width
);
if
(
p_vout
->
p_sys
->
pp_vout
[
p_vout
->
p_sys
->
i_vout
].
p_vout
==
NULL
)
{
{
msg_Err
(
p_vout
,
"failed to get %ix%i vout threads"
,
msg_Err
(
p_vout
,
"failed to get %ix%i vout threads"
,
p_vout
->
p_sys
->
i_col
,
p_vout
->
p_sys
->
i_row
);
p_vout
->
p_sys
->
i_col
,
p_vout
->
p_sys
->
i_row
);
...
...
modules/visualization/goom.c
View file @
3f6f97f1
...
@@ -131,6 +131,7 @@ static int Open( vlc_object_t *p_this )
...
@@ -131,6 +131,7 @@ static int Open( vlc_object_t *p_this )
aout_filter_sys_t
*
p_sys
;
aout_filter_sys_t
*
p_sys
;
goom_thread_t
*
p_thread
;
goom_thread_t
*
p_thread
;
vlc_value_t
width
,
height
;
vlc_value_t
width
,
height
;
video_format_t
fmt
=
{
0
};
if
(
p_filter
->
input
.
i_format
!=
VLC_FOURCC
(
'f'
,
'l'
,
'3'
,
'2'
)
if
(
p_filter
->
input
.
i_format
!=
VLC_FOURCC
(
'f'
,
'l'
,
'3'
,
'2'
)
||
p_filter
->
output
.
i_format
!=
VLC_FOURCC
(
'f'
,
'l'
,
'3'
,
'2'
)
)
||
p_filter
->
output
.
i_format
!=
VLC_FOURCC
(
'f'
,
'l'
,
'3'
,
'2'
)
)
...
@@ -160,10 +161,13 @@ static int Open( vlc_object_t *p_this )
...
@@ -160,10 +161,13 @@ static int Open( vlc_object_t *p_this )
var_Create
(
p_thread
,
"goom-height"
,
VLC_VAR_INTEGER
|
VLC_VAR_DOINHERIT
);
var_Create
(
p_thread
,
"goom-height"
,
VLC_VAR_INTEGER
|
VLC_VAR_DOINHERIT
);
var_Get
(
p_thread
,
"goom-height"
,
&
height
);
var_Get
(
p_thread
,
"goom-height"
,
&
height
);
p_thread
->
p_vout
=
fmt
.
i_width
=
fmt
.
i_visible_width
=
width
.
i_int
;
vout_Request
(
p_filter
,
NULL
,
width
.
i_int
,
height
.
i_int
,
fmt
.
i_height
=
fmt
.
i_visible_height
=
height
.
i_int
;
VLC_FOURCC
(
'R'
,
'V'
,
'3'
,
'2'
),
fmt
.
i_chroma
=
VLC_FOURCC
(
'R'
,
'V'
,
'3'
,
'2'
);
VOUT_ASPECT_FACTOR
*
width
.
i_int
/
height
.
i_int
);
fmt
.
i_aspect
=
VOUT_ASPECT_FACTOR
*
width
.
i_int
/
height
.
i_int
;
fmt
.
i_sar_num
=
fmt
.
i_sar_den
=
1
;
p_thread
->
p_vout
=
vout_Request
(
p_filter
,
NULL
,
&
fmt
);
if
(
p_thread
->
p_vout
==
NULL
)
if
(
p_thread
->
p_vout
==
NULL
)
{
{
msg_Err
(
p_filter
,
"no suitable vout module"
);
msg_Err
(
p_filter
,
"no suitable vout module"
);
...
@@ -386,7 +390,7 @@ static void Close( vlc_object_t *p_this )
...
@@ -386,7 +390,7 @@ static void Close( vlc_object_t *p_this )
vlc_thread_join
(
p_sys
->
p_thread
);
vlc_thread_join
(
p_sys
->
p_thread
);
/* Free data */
/* Free data */
vout_Request
(
p_filter
,
p_sys
->
p_thread
->
p_vout
,
0
,
0
,
0
,
0
);
vout_Request
(
p_filter
,
p_sys
->
p_thread
->
p_vout
,
0
);
vlc_mutex_destroy
(
&
p_sys
->
p_thread
->
lock
);
vlc_mutex_destroy
(
&
p_sys
->
p_thread
->
lock
);
vlc_cond_destroy
(
&
p_sys
->
p_thread
->
wait
);
vlc_cond_destroy
(
&
p_sys
->
p_thread
->
wait
);
vlc_object_detach
(
p_sys
->
p_thread
);
vlc_object_detach
(
p_sys
->
p_thread
);
...
...
modules/visualization/visual/visual.c
View file @
3f6f97f1
...
@@ -132,6 +132,7 @@ static int Open( vlc_object_t *p_this )
...
@@ -132,6 +132,7 @@ static int Open( vlc_object_t *p_this )
vlc_value_t
val
;
vlc_value_t
val
;
char
*
psz_effects
,
*
psz_parser
;
char
*
psz_effects
,
*
psz_parser
;
video_format_t
fmt
=
{
0
};
if
(
(
p_filter
->
input
.
i_format
!=
VLC_FOURCC
(
'f'
,
'l'
,
'3'
,
'2'
)
&&
if
(
(
p_filter
->
input
.
i_format
!=
VLC_FOURCC
(
'f'
,
'l'
,
'3'
,
'2'
)
&&
p_filter
->
input
.
i_format
!=
VLC_FOURCC
(
'f'
,
'i'
,
'3'
,
'2'
)
)
)
p_filter
->
input
.
i_format
!=
VLC_FOURCC
(
'f'
,
'i'
,
'3'
,
'2'
)
)
)
...
@@ -246,12 +247,13 @@ static int Open( vlc_object_t *p_this )
...
@@ -246,12 +247,13 @@ static int Open( vlc_object_t *p_this )
}
}
/* Open the video output */
/* Open the video output */
p_sys
->
p_vout
=
fmt
.
i_width
=
fmt
.
i_visible_width
=
p_sys
->
i_width
;
vout_Request
(
p_filter
,
NULL
,
fmt
.
i_height
=
fmt
.
i_visible_height
=
p_sys
->
i_height
;
p_sys
->
i_width
,
p_sys
->
i_height
,
fmt
.
i_chroma
=
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
);
VLC_FOURCC
(
'I'
,
'4'
,
'2'
,
'0'
),
fmt
.
i_aspect
=
VOUT_ASPECT_FACTOR
*
p_sys
->
i_width
/
p_sys
->
i_height
;
VOUT_ASPECT_FACTOR
*
p_sys
->
i_width
/
p_sys
->
i_height
)
;
fmt
.
i_sar_num
=
fmt
.
i_sar_den
=
1
;
p_sys
->
p_vout
=
vout_Request
(
p_filter
,
NULL
,
&
fmt
);
if
(
p_sys
->
p_vout
==
NULL
)
if
(
p_sys
->
p_vout
==
NULL
)
{
{
msg_Err
(
p_filter
,
"no suitable vout module"
);
msg_Err
(
p_filter
,
"no suitable vout module"
);
...
@@ -329,7 +331,7 @@ static void Close( vlc_object_t *p_this )
...
@@ -329,7 +331,7 @@ static void Close( vlc_object_t *p_this )
if
(
p_filter
->
p_sys
->
p_vout
)
if
(
p_filter
->
p_sys
->
p_vout
)
{
{
vout_Request
(
p_filter
,
p_filter
->
p_sys
->
p_vout
,
0
,
0
,
0
,
0
);
vout_Request
(
p_filter
,
p_filter
->
p_sys
->
p_vout
,
0
);
}
}
/* Free the list */
/* Free the list */
...
...
src/input/decoder.c
View file @
3f6f97f1
...
@@ -779,7 +779,7 @@ static void DeleteDecoder( decoder_t * p_dec )
...
@@ -779,7 +779,7 @@ static void DeleteDecoder( decoder_t * p_dec )
#undef p_pic
#undef p_pic
/* We are about to die. Reattach video output to p_vlc. */
/* We are about to die. Reattach video output to p_vlc. */
vout_Request
(
p_dec
,
p_dec
->
p_owner
->
p_vout
,
0
,
0
,
0
,
0
);
vout_Request
(
p_dec
,
p_dec
->
p_owner
->
p_vout
,
0
);
}
}
if
(
p_dec
->
p_owner
->
p_sout_input
)
if
(
p_dec
->
p_owner
->
p_sout_input
)
...
@@ -885,15 +885,35 @@ static picture_t *vout_new_buffer( decoder_t *p_dec )
...
@@ -885,15 +885,35 @@ static picture_t *vout_new_buffer( decoder_t *p_dec )
return
NULL
;
return
NULL
;
}
}
if
(
!
p_dec
->
fmt_out
.
video
.
i_sar_num
||
!
p_dec
->
fmt_out
.
video
.
i_sar_den
)
{
p_dec
->
fmt_out
.
video
.
i_sar_num
=
p_dec
->
fmt_out
.
video
.
i_aspect
*
p_dec
->
fmt_out
.
video
.
i_height
;
p_dec
->
fmt_out
.
video
.
i_sar_den
=
VOUT_ASPECT_FACTOR
*
p_dec
->
fmt_out
.
video
.
i_width
;
}
vlc_reduce
(
&
p_dec
->
fmt_out
.
video
.
i_sar_num
,
&
p_dec
->
fmt_out
.
video
.
i_sar_den
,
p_dec
->
fmt_out
.
video
.
i_sar_num
,
p_dec
->
fmt_out
.
video
.
i_sar_den
,
0
);
if
(
!
p_dec
->
fmt_out
.
video
.
i_visible_width
||
!
p_dec
->
fmt_out
.
video
.
i_visible_height
)
{
p_dec
->
fmt_out
.
video
.
i_visible_width
=
p_dec
->
fmt_out
.
video
.
i_width
;
p_dec
->
fmt_out
.
video
.
i_visible_height
=
p_dec
->
fmt_out
.
video
.
i_height
;
}
p_dec
->
fmt_out
.
video
.
i_chroma
=
p_dec
->
fmt_out
.
i_codec
;
p_dec
->
fmt_out
.
video
.
i_chroma
=
p_dec
->
fmt_out
.
i_codec
;
p_sys
->
video
=
p_dec
->
fmt_out
.
video
;
p_sys
->
video
=
p_dec
->
fmt_out
.
video
;
p_sys
->
p_vout
=
vout_Request
(
p_dec
,
p_sys
->
p_vout
,
p_sys
->
p_vout
=
vout_Request
(
p_dec
,
p_sys
->
p_vout
,
p_sys
->
video
.
i_width
,
&
p_dec
->
fmt_out
.
video
);
p_sys
->
video
.
i_height
,
p_sys
->
video
.
i_chroma
,
p_sys
->
video
.
i_aspect
);
if
(
p_sys
->
p_vout
==
NULL
)
if
(
p_sys
->
p_vout
==
NULL
)
{
{
msg_Err
(
p_dec
,
"failed to create video output"
);
msg_Err
(
p_dec
,
"failed to create video output"
);
...
...
src/video_output/video_output.c
View file @
3f6f97f1
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
* $Id$
* $Id$
*
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Gildas Bazin <gbazin@videolan.org>
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* it under the terms of the GNU General Public License as published by
...
@@ -74,11 +75,10 @@ int vout_Snapshot( vout_thread_t *, picture_t * );
...
@@ -74,11 +75,10 @@ int vout_Snapshot( vout_thread_t *, picture_t * );
* This function looks for a video output thread matching the current
* This function looks for a video output thread matching the current
* properties. If not found, it spawns a new one.
* properties. If not found, it spawns a new one.
*****************************************************************************/
*****************************************************************************/
vout_thread_t
*
__vout_Request
(
vlc_object_t
*
p_this
,
vout_thread_t
*
p_vout
,
vout_thread_t
*
__vout_Request
(
vlc_object_t
*
p_this
,
vout_thread_t
*
p_vout
,
unsigned
int
i_width
,
unsigned
int
i_height
,
video_format_t
*
p_fmt
)
vlc_fourcc_t
i_chroma
,
unsigned
int
i_aspect
)
{
{
if
(
!
i_width
||
!
i_height
||
!
i_chroma
)
if
(
!
p_fmt
)
{
{
/* Reattach video output to input before bailing out */
/* Reattach video output to input before bailing out */
if
(
p_vout
)
if
(
p_vout
)
...
@@ -168,10 +168,10 @@ vout_thread_t * __vout_Request ( vlc_object_t *p_this, vout_thread_t *p_vout,
...
@@ -168,10 +168,10 @@ vout_thread_t * __vout_Request ( vlc_object_t *p_this, vout_thread_t *p_vout,
if
(
psz_filter_chain
)
free
(
psz_filter_chain
);
if
(
psz_filter_chain
)
free
(
psz_filter_chain
);
}
}
if
(
(
p_vout
->
render
.
i_width
!=
i_width
)
||
if
(
(
p_vout
->
fmt_render
.
i_width
!=
p_fmt
->
i_width
)
||
(
p_vout
->
render
.
i_height
!=
i_height
)
||
(
p_vout
->
fmt_render
.
i_height
!=
p_fmt
->
i_height
)
||
(
p_vout
->
render
.
i_chroma
!=
i_chroma
)
||
(
p_vout
->
fmt_render
.
i_chroma
!=
p_fmt
->
i_chroma
)
||
(
p_vout
->
render
.
i_aspect
!=
i_aspect
(
p_vout
->
fmt_render
.
i_aspect
!=
p_fmt
->
i_aspect
&&
!
p_vout
->
b_override_aspect
)
||
&&
!
p_vout
->
b_override_aspect
)
||
p_vout
->
b_filter_change
)
p_vout
->
b_filter_change
)
{
{
...
@@ -195,7 +195,7 @@ vout_thread_t * __vout_Request ( vlc_object_t *p_this, vout_thread_t *p_vout,
...
@@ -195,7 +195,7 @@ vout_thread_t * __vout_Request ( vlc_object_t *p_this, vout_thread_t *p_vout,
{
{
msg_Dbg
(
p_this
,
"no usable vout present, spawning one"
);
msg_Dbg
(
p_this
,
"no usable vout present, spawning one"
);
p_vout
=
vout_Create
(
p_this
,
i_width
,
i_height
,
i_chroma
,
i_aspec
t
);
p_vout
=
vout_Create
(
p_this
,
p_fm
t
);
}
}
return
p_vout
;
return
p_vout
;
...
@@ -207,9 +207,7 @@ vout_thread_t * __vout_Request ( vlc_object_t *p_this, vout_thread_t *p_vout,
...
@@ -207,9 +207,7 @@ vout_thread_t * __vout_Request ( vlc_object_t *p_this, vout_thread_t *p_vout,
* This function creates a new video output thread, and returns a pointer
* This function creates a new video output thread, and returns a pointer
* to its description. On error, it returns NULL.
* to its description. On error, it returns NULL.
*****************************************************************************/
*****************************************************************************/
vout_thread_t
*
__vout_Create
(
vlc_object_t
*
p_parent
,
vout_thread_t
*
__vout_Create
(
vlc_object_t
*
p_parent
,
video_format_t
*
p_fmt
)
unsigned
int
i_width
,
unsigned
int
i_height
,
vlc_fourcc_t
i_chroma
,
unsigned
int
i_aspect
)
{
{
vout_thread_t
*
p_vout
;
/* thread descriptor */
vout_thread_t
*
p_vout
;
/* thread descriptor */
input_thread_t
*
p_input_thread
;
input_thread_t
*
p_input_thread
;
...
@@ -217,6 +215,11 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent,
...
@@ -217,6 +215,11 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent,
char
*
psz_plugin
;
char
*
psz_plugin
;
vlc_value_t
val
,
text
;
vlc_value_t
val
,
text
;
unsigned
int
i_width
=
p_fmt
->
i_width
;
unsigned
int
i_height
=
p_fmt
->
i_height
;
vlc_fourcc_t
i_chroma
=
p_fmt
->
i_chroma
;
unsigned
int
i_aspect
=
p_fmt
->
i_aspect
;
/* Allocate descriptor */
/* Allocate descriptor */
p_vout
=
vlc_object_create
(
p_parent
,
VLC_OBJECT_VOUT
);
p_vout
=
vlc_object_create
(
p_parent
,
VLC_OBJECT_VOUT
);
if
(
p_vout
==
NULL
)
if
(
p_vout
==
NULL
)
...
@@ -241,6 +244,8 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent,
...
@@ -241,6 +244,8 @@ vout_thread_t * __vout_Create( vlc_object_t *p_parent,
/* Initialize the rendering heap */
/* Initialize the rendering heap */
I_RENDERPICTURES
=
0
;
I_RENDERPICTURES
=
0
;
p_vout
->
fmt_render
=
*
p_fmt
;
/* FIXME palette */
p_vout
->
fmt_in
=
*
p_fmt
;
/* FIXME palette */
p_vout
->
render
.
i_width
=
i_width
;
p_vout
->
render
.
i_width
=
i_width
;
p_vout
->
render
.
i_height
=
i_height
;
p_vout
->
render
.
i_height
=
i_height
;
p_vout
->
render
.
i_chroma
=
i_chroma
;
p_vout
->
render
.
i_chroma
=
i_chroma
;
...
@@ -558,19 +563,59 @@ static int InitThread( vout_thread_t *p_vout )
...
@@ -558,19 +563,59 @@ static int InitThread( vout_thread_t *p_vout )
msg_Dbg
(
p_vout
,
"got %i direct buffer(s)"
,
I_OUTPUTPICTURES
);
msg_Dbg
(
p_vout
,
"got %i direct buffer(s)"
,
I_OUTPUTPICTURES
);
AspectRatio
(
p_vout
->
render
.
i_aspect
,
&
i_aspect_x
,
&
i_aspect_y
);
AspectRatio
(
p_vout
->
fmt_render
.
i_aspect
,
&
i_aspect_x
,
&
i_aspect_y
);
msg_Dbg
(
p_vout
,
"picture in %ix%i, chroma 0x%.8x (%4.4s), aspect ratio %i:%i"
,
msg_Dbg
(
p_vout
,
"picture in %ix%i (%i,%i,%ix%i), "
p_vout
->
render
.
i_width
,
p_vout
->
render
.
i_height
,
"chroma %4.4s, ar %i:%i, sar %i:%i"
,
p_vout
->
render
.
i_chroma
,
(
char
*
)
&
p_vout
->
render
.
i_chroma
,
p_vout
->
fmt_render
.
i_width
,
p_vout
->
fmt_render
.
i_height
,
i_aspect_x
,
i_aspect_y
);
p_vout
->
fmt_render
.
i_x_offset
,
p_vout
->
fmt_render
.
i_y_offset
,
p_vout
->
fmt_render
.
i_visible_width
,
p_vout
->
fmt_render
.
i_visible_height
,
(
char
*
)
&
p_vout
->
fmt_render
.
i_chroma
,
i_aspect_x
,
i_aspect_y
,
p_vout
->
fmt_render
.
i_sar_num
,
p_vout
->
fmt_render
.
i_sar_den
);
AspectRatio
(
p_vout
->
fmt_in
.
i_aspect
,
&
i_aspect_x
,
&
i_aspect_y
);
msg_Dbg
(
p_vout
,
"picture user %ix%i (%i,%i,%ix%i), "
"chroma %4.4s, ar %i:%i, sar %i:%i"
,
p_vout
->
fmt_in
.
i_width
,
p_vout
->
fmt_in
.
i_height
,
p_vout
->
fmt_in
.
i_x_offset
,
p_vout
->
fmt_in
.
i_y_offset
,
p_vout
->
fmt_in
.
i_visible_width
,
p_vout
->
fmt_in
.
i_visible_height
,
(
char
*
)
&
p_vout
->
fmt_in
.
i_chroma
,
i_aspect_x
,
i_aspect_y
,
p_vout
->
fmt_in
.
i_sar_num
,
p_vout
->
fmt_in
.
i_sar_den
);
if
(
!
p_vout
->
fmt_out
.
i_width
||
!
p_vout
->
fmt_out
.
i_height
)
{
p_vout
->
fmt_out
.
i_width
=
p_vout
->
fmt_out
.
i_visible_width
=
p_vout
->
output
.
i_width
;
p_vout
->
fmt_out
.
i_height
=
p_vout
->
fmt_out
.
i_visible_height
=
p_vout
->
output
.
i_height
;
p_vout
->
fmt_out
.
i_x_offset
=
p_vout
->
fmt_out
.
i_y_offset
=
0
;
p_vout
->
fmt_out
.
i_aspect
=
p_vout
->
output
.
i_aspect
;
p_vout
->
fmt_out
.
i_chroma
=
p_vout
->
output
.
i_chroma
;
}
if
(
!
p_vout
->
fmt_out
.
i_sar_num
||
!
p_vout
->
fmt_out
.
i_sar_num
)
{
p_vout
->
fmt_out
.
i_sar_num
=
p_vout
->
fmt_out
.
i_aspect
*
p_vout
->
fmt_out
.
i_height
;
p_vout
->
fmt_out
.
i_sar_den
=
VOUT_ASPECT_FACTOR
*
p_vout
->
fmt_out
.
i_width
;
}
vlc_reduce
(
&
p_vout
->
fmt_out
.
i_sar_num
,
&
p_vout
->
fmt_out
.
i_sar_den
,
p_vout
->
fmt_out
.
i_sar_num
,
p_vout
->
fmt_out
.
i_sar_den
,
0
);
AspectRatio
(
p_vout
->
fmt_out
.
i_aspect
,
&
i_aspect_x
,
&
i_aspect_y
);
AspectRatio
(
p_vout
->
output
.
i_aspect
,
&
i_aspect_x
,
&
i_aspect_y
);
msg_Dbg
(
p_vout
,
"picture out %ix%i, chroma %4.4s, ar %i:%i, sar %i:%i"
,
msg_Dbg
(
p_vout
,
"picture out %ix%i, chroma 0x%.8x (%4.4s), aspect ratio %i:%i"
,
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
p_vout
->
output
.
i_width
,
p_vout
->
output
.
i_height
,
p_vout
->
output
.
i_chroma
,
(
char
*
)
&
p_vout
->
output
.
i_chroma
,
(
char
*
)
&
p_vout
->
output
.
i_chroma
,
i_aspect_x
,
i_aspect_y
);
i_aspect_x
,
i_aspect_y
,
p_vout
->
fmt_out
.
i_sar_num
,
p_vout
->
fmt_out
.
i_sar_den
);
/* Calculate shifts from system-updated masks */
/* Calculate shifts from system-updated masks */
MaskToShift
(
&
p_vout
->
output
.
i_lrshift
,
&
p_vout
->
output
.
i_rrshift
,
MaskToShift
(
&
p_vout
->
output
.
i_lrshift
,
&
p_vout
->
output
.
i_rrshift
,
...
...
src/video_output/vout_pictures.c
View file @
3f6f97f1
...
@@ -286,24 +286,18 @@ void vout_UnlinkPicture( vout_thread_t *p_vout, picture_t *p_pic )
...
@@ -286,24 +286,18 @@ void vout_UnlinkPicture( vout_thread_t *p_vout, picture_t *p_pic )
picture_t
*
vout_RenderPicture
(
vout_thread_t
*
p_vout
,
picture_t
*
p_pic
,
picture_t
*
vout_RenderPicture
(
vout_thread_t
*
p_vout
,
picture_t
*
p_pic
,
subpicture_t
*
p_subpic
)
subpicture_t
*
p_subpic
)
{
{
video_format_t
fmt
;
int
i_scale_width
,
i_scale_height
;
int
i_scale_width
,
i_scale_height
;
if
(
p_pic
==
NULL
)
if
(
p_pic
==
NULL
)
{
{
/* XXX: subtitles */
/* XXX: subtitles */
return
NULL
;
return
NULL
;
}
}
fmt
.
i_aspect
=
p_vout
->
output
.
i_aspect
;
i_scale_width
=
p_vout
->
fmt_out
.
i_visible_width
*
1000
/
fmt
.
i_chroma
=
p_vout
->
output
.
i_chroma
;
p_vout
->
fmt_in
.
i_visible_width
;
fmt
.
i_width
=
p_vout
->
output
.
i_width
;
i_scale_height
=
p_vout
->
fmt_out
.
i_visible_height
*
1000
/
fmt
.
i_height
=
p_vout
->
output
.
i_height
;
p_vout
->
fmt_in
.
i_visible_height
;
fmt
.
i_sar_num
=
p_vout
->
output
.
i_aspect
*
fmt
.
i_height
/
fmt
.
i_width
;
fmt
.
i_sar_den
=
VOUT_ASPECT_FACTOR
;
i_scale_width
=
p_vout
->
output
.
i_width
*
1000
/
p_vout
->
render
.
i_width
;
i_scale_height
=
p_vout
->
output
.
i_height
*
1000
/
p_vout
->
render
.
i_height
;
if
(
p_pic
->
i_type
==
DIRECT_PICTURE
)
if
(
p_pic
->
i_type
==
DIRECT_PICTURE
)
{
{
...
@@ -320,7 +314,7 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
...
@@ -320,7 +314,7 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
* subtitles. */
* subtitles. */
vout_CopyPicture
(
p_vout
,
PP_OUTPUTPICTURE
[
0
],
p_pic
);
vout_CopyPicture
(
p_vout
,
PP_OUTPUTPICTURE
[
0
],
p_pic
);
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
fm
t
,
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
p_vout
->
fmt_ou
t
,
PP_OUTPUTPICTURE
[
0
],
p_pic
,
p_subpic
,
PP_OUTPUTPICTURE
[
0
],
p_pic
,
p_subpic
,
i_scale_width
,
i_scale_height
);
i_scale_width
,
i_scale_height
);
...
@@ -336,8 +330,8 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
...
@@ -336,8 +330,8 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
/* Picture is in a direct buffer but isn't used by the
/* Picture is in a direct buffer but isn't used by the
* decoder. We can safely render subtitles on it and
* decoder. We can safely render subtitles on it and
* display it. */
* display it. */
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
fmt
,
p_pic
,
p_pic
,
p_sub
pic
,
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
p_vout
->
fmt_out
,
p_pic
,
p_
pic
,
i_scale_width
,
i_scale_height
);
p_subpic
,
i_scale_width
,
i_scale_height
);
return
p_pic
;
return
p_pic
;
}
}
...
@@ -355,8 +349,9 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
...
@@ -355,8 +349,9 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
return
NULL
;
return
NULL
;
vout_CopyPicture
(
p_vout
,
PP_OUTPUTPICTURE
[
0
],
p_pic
);
vout_CopyPicture
(
p_vout
,
PP_OUTPUTPICTURE
[
0
],
p_pic
);
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
fmt
,
PP_OUTPUTPICTURE
[
0
],
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
p_vout
->
fmt_out
,
p_pic
,
p_subpic
,
i_scale_width
,
i_scale_height
);
PP_OUTPUTPICTURE
[
0
],
p_pic
,
p_subpic
,
i_scale_width
,
i_scale_height
);
if
(
PP_OUTPUTPICTURE
[
0
]
->
pf_unlock
)
if
(
PP_OUTPUTPICTURE
[
0
]
->
pf_unlock
)
PP_OUTPUTPICTURE
[
0
]
->
pf_unlock
(
p_vout
,
PP_OUTPUTPICTURE
[
0
]
);
PP_OUTPUTPICTURE
[
0
]
->
pf_unlock
(
p_vout
,
PP_OUTPUTPICTURE
[
0
]
);
...
@@ -378,10 +373,10 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
...
@@ -378,10 +373,10 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
if
(
p_tmp_pic
->
i_status
==
FREE_PICTURE
)
if
(
p_tmp_pic
->
i_status
==
FREE_PICTURE
)
{
{
vout_AllocatePicture
(
VLC_OBJECT
(
p_vout
),
vout_AllocatePicture
(
VLC_OBJECT
(
p_vout
),
p_tmp_pic
,
p_vout
->
outp
ut
.
i_chroma
,
p_tmp_pic
,
p_vout
->
fmt_o
ut
.
i_chroma
,
p_vout
->
outp
ut
.
i_width
,
p_vout
->
fmt_o
ut
.
i_width
,
p_vout
->
outp
ut
.
i_height
,
p_vout
->
fmt_o
ut
.
i_height
,
p_vout
->
outp
ut
.
i_aspect
);
p_vout
->
fmt_o
ut
.
i_aspect
);
p_tmp_pic
->
i_type
=
MEMORY_PICTURE
;
p_tmp_pic
->
i_type
=
MEMORY_PICTURE
;
p_tmp_pic
->
i_status
=
RESERVED_PICTURE
;
p_tmp_pic
->
i_status
=
RESERVED_PICTURE
;
}
}
...
@@ -390,7 +385,7 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
...
@@ -390,7 +385,7 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
p_vout
->
chroma
.
pf_convert
(
p_vout
,
p_pic
,
p_tmp_pic
);
p_vout
->
chroma
.
pf_convert
(
p_vout
,
p_pic
,
p_tmp_pic
);
/* Render subpictures on the first direct buffer */
/* Render subpictures on the first direct buffer */
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
fm
t
,
p_tmp_pic
,
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
p_vout
->
fmt_ou
t
,
p_tmp_pic
,
p_tmp_pic
,
p_subpic
,
p_tmp_pic
,
p_subpic
,
i_scale_width
,
i_scale_height
);
i_scale_width
,
i_scale_height
);
...
@@ -410,9 +405,9 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
...
@@ -410,9 +405,9 @@ picture_t * vout_RenderPicture( vout_thread_t *p_vout, picture_t *p_pic,
p_vout
->
chroma
.
pf_convert
(
p_vout
,
p_pic
,
&
p_vout
->
p_picture
[
0
]
);
p_vout
->
chroma
.
pf_convert
(
p_vout
,
p_pic
,
&
p_vout
->
p_picture
[
0
]
);
/* Render subpictures on the first direct buffer */
/* Render subpictures on the first direct buffer */
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
fmt
,
&
p_vout
->
p_picture
[
0
]
,
spu_RenderSubpictures
(
p_vout
->
p_spu
,
&
p_vout
->
fmt_out
,
&
p_vout
->
p_picture
[
0
],
p_subpic
,
&
p_vout
->
p_picture
[
0
],
&
p_vout
->
p_picture
[
0
]
,
i_scale_width
,
i_scale_height
);
p_subpic
,
i_scale_width
,
i_scale_height
);
}
}
if
(
p_vout
->
p_picture
[
0
].
pf_unlock
)
if
(
p_vout
->
p_picture
[
0
].
pf_unlock
)
...
@@ -435,7 +430,6 @@ void vout_PlacePicture( vout_thread_t *p_vout,
...
@@ -435,7 +430,6 @@ void vout_PlacePicture( vout_thread_t *p_vout,
if
(
(
i_width
<=
0
)
||
(
i_height
<=
0
)
)
if
(
(
i_width
<=
0
)
||
(
i_height
<=
0
)
)
{
{
*
pi_width
=
*
pi_height
=
*
pi_x
=
*
pi_y
=
0
;
*
pi_width
=
*
pi_height
=
*
pi_x
=
*
pi_y
=
0
;
return
;
return
;
}
}
...
...
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