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
da87f0fe
Commit
da87f0fe
authored
Jan 26, 2010
by
JP Dinger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor libvlc_video_{get,set}_{marquee,logo}_{int,string}.
parent
3a6c32a6
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
182 additions
and
238 deletions
+182
-238
include/vlc/libvlc_media_player.h
include/vlc/libvlc_media_player.h
+10
-15
src/control/video.c
src/control/video.c
+172
-223
No files found.
include/vlc/libvlc_media_player.h
View file @
da87f0fe
...
...
@@ -81,10 +81,11 @@ typedef struct libvlc_rectangle_t
}
libvlc_rectangle_t
;
/**
* Marq
int
options definition
* Marq options definition
*/
typedef
enum
libvlc_video_marquee_
int_
option_t
{
typedef
enum
libvlc_video_marquee_option_t
{
libvlc_marquee_Enable
=
0
,
libvlc_marquee_Text
,
/** string argument */
libvlc_marquee_Color
,
libvlc_marquee_Opacity
,
libvlc_marquee_Position
,
...
...
@@ -93,15 +94,7 @@ typedef enum libvlc_video_marquee_int_option_t {
libvlc_marquee_Timeout
,
libvlc_marquee_X
,
libvlc_marquee_Y
}
libvlc_video_marquee_int_option_t
;
/**
* Marq string options definition
*/
typedef
enum
libvlc_video_marquee_string_option_t
{
libvlc_marquee_Text
=
0
}
libvlc_video_marquee_string_option_t
;
}
libvlc_video_marquee_option_t
;
/**
* Create an empty Media Player object
...
...
@@ -807,7 +800,7 @@ VLC_PUBLIC_API void libvlc_video_set_deinterlace( libvlc_media_player_t *,
libvlc_exception_t
*
);
/**
* Get an integer option value
* Get an integer
marquee
option value
*
* \param p_mi libvlc media player
* \param option marq option to get \see libvlc_video_marquee_int_option_t
...
...
@@ -817,7 +810,7 @@ VLC_PUBLIC_API int libvlc_video_get_marquee_int( libvlc_media_player_t *,
unsigned
,
libvlc_exception_t
*
);
/**
* Get a string option value
* Get a string
marquee
option value
*
* \param p_mi libvlc media player
* \param option marq option to get \see libvlc_video_marquee_string_option_t
...
...
@@ -827,7 +820,7 @@ VLC_PUBLIC_API char *libvlc_video_get_marquee_string( libvlc_media_player_t *,
unsigned
,
libvlc_exception_t
*
);
/**
* Enable, disable or set an integer marq option
* Enable, disable or set an integer marq
uee
option
*
* Setting libvlc_marquee_Enable has the side effect of enabling (arg !0)
* or disabling (arg 0) the marq filter.
...
...
@@ -841,7 +834,7 @@ VLC_PUBLIC_API void libvlc_video_set_marquee_int( libvlc_media_player_t *,
unsigned
,
int
,
libvlc_exception_t
*
);
/**
* Set a marq string option
* Set a marq
uee
string option
*
* \param p_mi libvlc media player
* \param option marq option to set \see libvlc_video_marquee_string_option_t
...
...
@@ -851,6 +844,7 @@ VLC_PUBLIC_API void libvlc_video_set_marquee_int( libvlc_media_player_t *,
VLC_PUBLIC_API
void
libvlc_video_set_marquee_string
(
libvlc_media_player_t
*
,
unsigned
,
const
char
*
,
libvlc_exception_t
*
);
/** option values for libvlc_video_{get,set}_logo_{int,string} */
enum
libvlc_video_logo_option_t
{
libvlc_logo_enable
,
libvlc_logo_file
,
/**< string argument, "file,d,t;file,d,t;..." */
...
...
@@ -898,6 +892,7 @@ VLC_PUBLIC_API void libvlc_video_set_logo_int( libvlc_media_player_t *p_mi,
VLC_PUBLIC_API
void
libvlc_video_set_logo_string
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
const
char
*
psz_value
,
libvlc_exception_t
*
p_e
);
/** @} video */
/** \defgroup libvlc_audio libvlc_audio
...
...
src/control/video.c
View file @
da87f0fe
...
...
@@ -572,215 +572,228 @@ void libvlc_video_set_deinterlace( libvlc_media_player_t *p_mi, int b_enable,
vlc_object_release
(
p_vout
);
}
/*****************************************************************************
* Marquee: FIXME: That implementation has no persistent state and requires
* a vout
*****************************************************************************/
static
const
char
*
get_marquee_int_option_identifier
(
unsigned
option
)
{
static
const
char
tab
[][
16
]
=
{
"marq"
,
"marq-color"
,
"marq-opacity"
,
"marq-position"
,
"marq-refresh"
,
"marq-size"
,
"marq-timeout"
,
"marq-x"
,
"marq-y"
,
};
if
(
option
>=
sizeof
(
tab
)
/
sizeof
(
tab
[
0
]
)
)
return
NULL
;
return
tab
[
option
];
}
/* ************** */
/* module helpers */
/* ************** */
static
const
char
*
get_marquee_string_option_identifier
(
unsigned
option
)
static
vlc_object_t
*
get_object
(
libvlc_media_player_t
*
p_mi
,
const
char
*
name
,
libvlc_exception_t
*
p_e
)
{
static
const
char
tab
[][
16
]
=
vlc_object_t
*
object
=
NULL
;
vout_thread_t
*
vout
=
GetVout
(
p_mi
,
p_e
);
libvlc_exception_clear
(
p_e
);
if
(
vout
)
{
"marq-marquee"
,
};
if
(
option
>=
sizeof
(
tab
)
/
sizeof
(
tab
[
0
]
)
)
return
NULL
;
return
tab
[
option
];
object
=
vlc_object_find_name
(
vout
,
name
,
FIND_CHILD
);
vlc_object_release
(
vout
);
}
if
(
!
object
)
{
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"%s not enabled"
,
name
);
}
return
object
;
}
static
vlc_object_t
*
get_marquee_object
(
libvlc_media_player_t
*
p_mi
)
{
libvlc_exception_t
e
;
libvlc_exception_init
(
&
e
);
vout_thread_t
*
vout
=
GetVout
(
p_mi
,
&
e
);
libvlc_exception_clear
(
&
e
);
if
(
!
vout
)
return
NULL
;
vlc_object_t
*
object
=
vlc_object_find_name
(
vout
,
"marq"
,
FIND_CHILD
);
vlc_object_release
(
vout
);
return
object
;
}
typedef
const
struct
{
const
char
name
[
20
];
/* probably will become a const char * sometime */
unsigned
type
;
}
opt_t
;
/*****************************************************************************
* libvlc_video_get_marquee_int : get a marq option value
*****************************************************************************/
int
libvlc_video_get_marquee_int
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
libvlc_exception_t
*
p_e
)
static
void
set_int
(
libvlc_media_player_t
*
p_mi
,
const
char
*
name
,
const
opt_t
*
opt
,
int
value
,
libvlc_exception_t
*
p_e
)
{
const
char
*
identifier
=
get_marquee_int_option_identifier
(
option
);
if
(
!
identifier
)
if
(
!
opt
)
return
;
if
(
!
opt
->
type
)
/* the enabler */
{
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Unknown marquee option"
);
return
0
;
vout_thread_t
*
vout
=
GetVout
(
p_mi
,
p_e
);
libvlc_exception_clear
(
p_e
);
if
(
vout
)
{
vout_EnableFilter
(
vout
,
opt
->
name
,
value
,
false
);
vlc_object_release
(
vout
);
}
return
;
}
vlc_object_t
*
marquee
=
get_marquee_object
(
p_mi
);
/* Handle the libvlc_marquee_Enable separately */
if
(
option
==
libvlc_marquee_Enable
)
vlc_object_t
*
object
=
get_object
(
p_mi
,
name
,
p_e
);
if
(
!
object
)
return
;
switch
(
opt
->
type
)
{
bool
isEnabled
=
marquee
!=
NULL
;
vlc_object_release
(
marquee
);
return
isEnabled
;
case
VLC_VAR_INTEGER
:
var_SetInteger
(
object
,
opt
->
name
,
value
);
break
;
default:
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Invalid argument for %s in %s"
,
name
,
"set int"
);
break
;
}
vlc_object_release
(
object
);
}
static
int
get_int
(
libvlc_media_player_t
*
p_mi
,
const
char
*
name
,
const
opt_t
*
opt
,
libvlc_exception_t
*
p_e
)
{
if
(
!
opt
)
return
0
;
/* Generic case */
if
(
!
identifier
)
vlc_object_t
*
object
=
get_object
(
p_mi
,
name
,
p_e
);
if
(
!
object
)
return
0
;
int
ret
;
switch
(
opt
->
type
)
{
case
0
:
/* the enabler */
ret
=
NULL
!=
object
;
break
;
case
VLC_VAR_INTEGER
:
ret
=
var_GetInteger
(
object
,
opt
->
name
);
break
;
default:
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Marquee not enabled"
);
return
0
;
libvlc_printerr
(
"Invalid argument for %s in %s"
,
name
,
"get int"
);
ret
=
0
;
break
;
}
#warning This and the next function may crash due to type checking!
int
ret
=
var_GetInteger
(
marquee
,
identifier
);
vlc_object_release
(
marquee
);
vlc_object_release
(
object
);
return
ret
;
}
/*****************************************************************************
* libvlc_video_get_marquee_string : get a marq option value
*****************************************************************************/
char
*
libvlc_video_get_marquee_string
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
libvlc_exception_t
*
p_e
)
static
void
set_string
(
libvlc_media_player_t
*
p_mi
,
const
char
*
name
,
const
opt_t
*
opt
,
const
char
*
psz_value
,
libvlc_exception_t
*
p_e
)
{
const
char
*
identifier
=
get_marquee_string_option_identifier
(
option
);
if
(
!
identifier
)
if
(
!
opt
)
return
;
vlc_object_t
*
object
=
get_object
(
p_mi
,
name
,
p_e
);
if
(
!
object
)
return
;
switch
(
opt
->
type
)
{
case
VLC_VAR_STRING
:
var_SetString
(
object
,
opt
->
name
,
psz_value
);
break
;
default:
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"
Unknown marquee option
"
);
return
NULL
;
libvlc_printerr
(
"
Invalid argument for %s in %s"
,
name
,
"set string
"
);
break
;
}
vlc_object_release
(
object
);
}
vlc_object_t
*
marquee
=
get_marquee_object
(
p_mi
);
if
(
!
marquee
)
static
char
*
get_string
(
libvlc_media_player_t
*
p_mi
,
const
char
*
name
,
const
opt_t
*
opt
,
libvlc_exception_t
*
p_e
)
{
if
(
!
opt
)
return
NULL
;
vlc_object_t
*
object
=
get_object
(
p_mi
,
name
,
p_e
);
if
(
!
object
)
return
NULL
;
char
*
ret
;
switch
(
opt
->
type
)
{
case
VLC_VAR_STRING
:
ret
=
var_GetString
(
object
,
opt
->
name
);
break
;
default:
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Marquee not enabled"
);
return
NULL
;
libvlc_printerr
(
"Invalid argument for %s in %s"
,
name
,
"get string"
);
ret
=
NULL
;
break
;
}
char
*
ret
=
var_GetString
(
marquee
,
identifier
);
vlc_object_release
(
marquee
);
vlc_object_release
(
object
);
return
ret
;
}
/*****************************************************************************
* libvlc_video_set_marquee_int: enable, disable or set an int option
* Marquee: FIXME: That implementation has no persistent state and requires
* a vout
*****************************************************************************/
void
libvlc_video_set_marquee_int
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
int
value
,
libvlc_exception_t
*
p_e
)
{
const
char
*
identifier
=
get_marquee_int_option_identifier
(
option
);
if
(
!
identifier
)
{
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Unknown marquee option"
);
return
;
}
/* Handle the libvlc_marquee_Enable separately */
if
(
option
==
libvlc_marquee_Enable
)
{
libvlc_exception_t
e
;
libvlc_exception_init
(
&
e
);
vout_thread_t
*
vout
=
GetVout
(
p_mi
,
&
e
);
libvlc_exception_clear
(
&
e
);
if
(
vout
)
{
vout_EnableFilter
(
vout
,
identifier
,
value
,
false
);
vlc_object_release
(
vout
);
}
return
;
}
static
const
opt_t
*
marq_option_bynumber
(
unsigned
option
,
libvlc_exception_t
*
p_e
)
{
opt_t
optlist
[]
=
{
{
"marq"
,
0
},
{
"marq-marquee"
,
VLC_VAR_STRING
},
{
"marq-color"
,
VLC_VAR_INTEGER
},
{
"marq-opacity"
,
VLC_VAR_INTEGER
},
{
"marq-position"
,
VLC_VAR_INTEGER
},
{
"marq-refresh"
,
VLC_VAR_INTEGER
},
{
"marq-size"
,
VLC_VAR_INTEGER
},
{
"marq-timeout"
,
VLC_VAR_INTEGER
},
{
"marq-x"
,
VLC_VAR_INTEGER
},
{
"marq-y"
,
VLC_VAR_INTEGER
},
};
enum
{
num_opts
=
sizeof
(
optlist
)
/
sizeof
(
*
optlist
)
};
vlc_object_t
*
marquee
=
get_marquee_object
(
p_mi
)
;
if
(
!
marquee
)
opt_t
*
r
=
option
<
num_opts
?
optlist
+
option
:
NULL
;
if
(
!
r
)
{
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Marquee not enabled"
);
return
;
libvlc_printerr
(
"Unknown marquee option"
);
}
var_SetInteger
(
marquee
,
identifier
,
value
);
vlc_object_release
(
marquee
);
return
r
;
}
static
vlc_object_t
*
get_object
(
libvlc_media_player_t
*
,
const
char
*
,
libvlc_exception_t
*
);
/*****************************************************************************
* libvlc_video_
set_marquee_string: set a string option
* libvlc_video_
get_marquee_int : get a marq option value
*****************************************************************************/
void
libvlc_video_set_marquee_string
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
const
char
*
value
,
libvlc_exception_t
*
p_e
)
int
libvlc_video_get_marquee_int
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
libvlc_exception_t
*
p_e
)
{
const
char
*
identifier
=
get_marquee_string_option_identifier
(
option
);
if
(
!
identifier
)
{
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Unknown marquee option"
);
return
;
}
vlc_object_t
*
marquee
=
get_marquee_object
(
p_mi
);
if
(
!
marquee
)
{
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Marquee not enabled"
);
return
;
}
var_SetString
(
marquee
,
identifier
,
value
);
vlc_object_release
(
marquee
);
return
get_int
(
p_mi
,
"marq"
,
marq_option_bynumber
(
option
,
p_e
),
p_e
);
}
/*****************************************************************************
* libvlc_video_get_marquee_string : get a marq option value
*****************************************************************************/
char
*
libvlc_video_get_marquee_string
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
libvlc_exception_t
*
p_e
)
{
return
get_string
(
p_mi
,
"marq"
,
marq_option_bynumber
(
option
,
p_e
),
p_e
);
}
/* logo module support */
/*****************************************************************************
* libvlc_video_set_marquee_int: enable, disable or set an int option
*****************************************************************************/
void
libvlc_video_set_marquee_int
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
int
value
,
libvlc_exception_t
*
p_e
)
{
set_int
(
p_mi
,
"marq"
,
marq_option_bynumber
(
option
,
p_e
),
value
,
p_e
);
}
static
vlc_object_t
*
get_logo_object
(
libvlc_media_player_t
*
p_mi
,
libvlc_exception_t
*
p_e
)
/*****************************************************************************
* libvlc_video_set_marquee_string: set a string option
*****************************************************************************/
void
libvlc_video_set_marquee_string
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
const
char
*
value
,
libvlc_exception_t
*
p_e
)
{
vlc_object_t
*
object
=
NULL
;
vout_thread_t
*
vout
=
GetVout
(
p_mi
,
p_e
);
libvlc_exception_clear
(
p_e
);
if
(
vout
)
{
object
=
vlc_object_find_name
(
vout
,
"logo"
,
FIND_CHILD
);
vlc_object_release
(
vout
);
}
if
(
!
object
)
{
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Logo not enabled"
);
}
return
object
;
set_string
(
p_mi
,
"marq"
,
marq_option_bynumber
(
option
,
p_e
),
value
,
p_e
);
}
typedef
const
struct
vlogo_opt
{
const
char
name
[
16
];
unsigned
type
;
}
vlogo_opt_t
;
/* logo module support */
static
vlogo_
opt_t
*
static
opt_t
*
logo_option_bynumber
(
unsigned
option
,
libvlc_exception_t
*
p_e
)
{
# define CFG_PREFIX "logo-"
vlogo_opt_t
vlogo_optlist
[]
=
/* depends on libvlc_video_logo_option_t */
opt_t
vlogo_optlist
[]
=
/* depends on libvlc_video_logo_option_t */
{
{
"logo"
,
0
},
{
"logo-file"
,
VLC_VAR_STRING
},
...
...
@@ -791,14 +804,13 @@ logo_option_bynumber( unsigned option, libvlc_exception_t *p_e )
{
"logo-opacity"
,
VLC_VAR_INTEGER
},
{
"logo-position"
,
VLC_VAR_INTEGER
},
};
# undef CFG_PREFIX
enum
{
num_vlogo_opts
=
sizeof
(
vlogo_optlist
)
/
sizeof
(
*
vlogo_optlist
)
};
vlogo_
opt_t
*
r
=
option
<
num_vlogo_opts
?
vlogo_optlist
+
option
:
NULL
;
opt_t
*
r
=
option
<
num_vlogo_opts
?
vlogo_optlist
+
option
:
NULL
;
if
(
!
r
)
{
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Unknown
marquee
option"
);
libvlc_printerr
(
"Unknown
logo
option"
);
}
return
r
;
}
...
...
@@ -808,22 +820,7 @@ void libvlc_video_set_logo_string( libvlc_media_player_t *p_mi,
unsigned
option
,
const
char
*
psz_value
,
libvlc_exception_t
*
p_e
)
{
vlogo_opt_t
*
opt
=
logo_option_bynumber
(
option
,
p_e
);
if
(
!
opt
)
return
;
vlc_object_t
*
logo
=
get_logo_object
(
p_mi
,
p_e
);
if
(
!
logo
)
return
;
switch
(
opt
->
type
)
{
case
VLC_VAR_STRING
:
var_SetString
(
logo
,
opt
->
name
,
psz_value
);
break
;
default:
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Invalid argument"
);
break
;
}
vlc_object_release
(
logo
);
set_string
(
p_mi
,
"logo"
,
logo_option_bynumber
(
option
,
p_e
),
psz_value
,
p_e
);
}
...
...
@@ -831,62 +828,14 @@ void libvlc_video_set_logo_int( libvlc_media_player_t *p_mi,
unsigned
option
,
int
value
,
libvlc_exception_t
*
p_e
)
{
vlogo_opt_t
*
opt
=
logo_option_bynumber
(
option
,
p_e
);
if
(
!
opt
)
return
;
if
(
!
opt
->
type
)
/* libvlc_logo_enable */
{
vout_thread_t
*
vout
=
GetVout
(
p_mi
,
p_e
);
libvlc_exception_clear
(
p_e
);
if
(
vout
)
{
vout_EnableFilter
(
vout
,
opt
->
name
,
value
,
false
);
vlc_object_release
(
vout
);
}
return
;
}
vlc_object_t
*
logo
=
get_logo_object
(
p_mi
,
p_e
);
if
(
!
logo
)
return
;
switch
(
opt
->
type
)
{
case
VLC_VAR_INTEGER
:
var_SetInteger
(
logo
,
opt
->
name
,
value
);
break
;
default:
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Invalid argument"
);
break
;
}
vlc_object_release
(
logo
);
set_int
(
p_mi
,
"logo"
,
logo_option_bynumber
(
option
,
p_e
),
value
,
p_e
);
}
int
libvlc_video_get_logo_int
(
libvlc_media_player_t
*
p_mi
,
unsigned
option
,
libvlc_exception_t
*
p_e
)
{
vlogo_opt_t
*
opt
=
logo_option_bynumber
(
option
,
p_e
);
if
(
!
opt
)
return
0
;
return
get_int
(
p_mi
,
"logo"
,
logo_option_bynumber
(
option
,
p_e
)
,
p_e
);
}
vlc_object_t
*
logo
=
get_logo_object
(
p_mi
,
p_e
);
if
(
!
logo
)
return
0
;
int
ret
;
switch
(
opt
->
type
)
{
case
0
:
/* libvlc_logo_enable */
ret
=
NULL
!=
logo
;
break
;
case
VLC_VAR_INTEGER
:
ret
=
var_GetInteger
(
logo
,
opt
->
name
);
break
;
default:
libvlc_exception_raise
(
p_e
);
libvlc_printerr
(
"Invalid argument"
);
ret
=
0
;
break
;
}
vlc_object_release
(
logo
);
return
ret
;
}
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