Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
d5bf5487
Commit
d5bf5487
authored
Apr 17, 2012
by
Rafaël Carré
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
switcher: implement private options
parent
08fb37c0
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
50 additions
and
8 deletions
+50
-8
modules/stream_out/switcher.c
modules/stream_out/switcher.c
+50
-8
No files found.
modules/stream_out/switcher.c
View file @
d5bf5487
...
...
@@ -131,11 +131,13 @@ vlc_module_begin ()
QSCALE_TEXT
,
QSCALE_LONGTEXT
,
true
)
add_bool
(
SOUT_CFG_PREFIX
"mute-audio"
,
true
,
AUDIO_TEXT
,
AUDIO_LONGTEXT
,
true
)
add_string
(
SOUT_CFG_PREFIX
"options"
,
NULL
,
AV_OPTIONS_TEXT
,
AV_OPTIONS_LONGTEXT
,
true
)
vlc_module_end
()
static
const
char
*
const
ppsz_sout_options
[]
=
{
"files"
,
"sizes"
,
"aspect-ratio"
,
"port"
,
"command"
,
"gop"
,
"qscale"
,
"mute-audio"
,
NULL
"mute-audio"
,
"options"
,
NULL
};
struct
sout_stream_sys_t
...
...
@@ -153,6 +155,10 @@ struct sout_stream_sys_t
/* Command */
int
i_fd
;
int
i_cmd
,
i_old_cmd
;
#if LIBAVCODEC_VERSION_MAJOR >= 54
AVDictionary
*
options
;
#endif
};
struct
sout_stream_id_t
...
...
@@ -183,6 +189,8 @@ static int Open( vlc_object_t *p_this )
char
*
psz_files
,
*
psz_sizes
;
int
i_height
=
0
,
i_width
=
0
;
vlc_init_avcodec
();
p_sys
=
calloc
(
1
,
sizeof
(
sout_stream_sys_t
)
);
if
(
!
p_sys
)
return
VLC_ENOMEM
;
...
...
@@ -287,7 +295,15 @@ static int Open( vlc_object_t *p_this )
p_stream
->
pf_send
=
Send
;
p_stream
->
p_sys
=
p_sys
;
vlc_init_avcodec
();
#if LIBAVCODEC_VERSION_MAJOR >= 54
char
*
psz_opts
=
var_InheritString
(
p_stream
,
SOUT_CFG_PREFIX
"options"
);
if
(
psz_opts
&&
*
psz_opts
)
{
p_sys
->
options
=
vlc_av_get_options
(
psz_opts
);
}
else
{
p_sys
->
options
=
NULL
;
}
free
(
psz_opts
);
#endif
return
VLC_SUCCESS
;
}
...
...
@@ -300,6 +316,10 @@ static void Close( vlc_object_t * p_this )
sout_stream_t
*
p_stream
=
(
sout_stream_t
*
)
p_this
;
sout_stream_sys_t
*
p_sys
=
p_stream
->
p_sys
;
#if LIBAVCODEC_VERSION_MAJOR >= 54
av_dict_free
(
&
p_sys
->
options
);
#endif
free
(
p_sys
);
}
...
...
@@ -385,20 +405,32 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
id
->
ff_enc_c
->
channels
=
p_fmt
->
audio
.
i_channels
;
id
->
ff_enc_c
->
bit_rate
=
p_fmt
->
i_bitrate
;
vlc_avcodec_lock
()
;
int
ret
;
#if LIBAVCODEC_VERSION_MAJOR >= 54
if
(
avcodec_open2
(
id
->
ff_enc_c
,
id
->
ff_enc
,
NULL
/* options */
)
)
AVDictionary
*
options
=
NULL
;
if
(
p_sys
->
options
)
av_dict_copy
(
&
options
,
p_sys
->
options
,
0
);
vlc_avcodec_lock
();
ret
=
avcodec_open2
(
id
->
ff_enc_c
,
id
->
ff_enc
,
options
?
&
options
:
NULL
);
vlc_avcodec_unlock
();
AVDictionaryEntry
*
t
=
NULL
;
while
((
t
=
av_dict_get
(
options
,
""
,
t
,
AV_DICT_IGNORE_SUFFIX
)))
{
msg_Err
(
p_stream
,
"Unknown option
\"
%s
\"
"
,
t
->
key
);
}
av_dict_free
(
&
options
);
#else
if
(
avcodec_open
(
id
->
ff_enc_c
,
id
->
ff_enc
)
)
vlc_avcodec_lock
();
ret
=
avcodec_open
(
id
->
ff_enc_c
,
id
->
ff_enc
);
vlc_avcodec_unlock
();
#endif
if
(
ret
)
{
vlc_avcodec_unlock
();
msg_Err
(
p_stream
,
"cannot open encoder"
);
av_free
(
id
->
ff_enc_c
);
free
(
id
);
return
NULL
;
}
vlc_avcodec_unlock
();
id
->
p_buffer_out
=
malloc
(
AVCODEC_MAX_AUDIO_FRAME_SIZE
*
2
);
id
->
p_samples
=
calloc
(
id
->
ff_enc_c
->
frame_size
*
p_fmt
->
audio
.
i_channels
,
...
...
@@ -811,11 +843,21 @@ static mtime_t VideoCommand( sout_stream_t *p_stream, sout_stream_id_t *id )
vlc_avcodec_lock
();
int
ret
;
#if LIBAVCODEC_VERSION_MAJOR >= 54
ret
=
avcodec_open2
(
id
->
ff_enc_c
,
id
->
ff_enc
,
NULL
/* options */
);
AVDictionary
*
options
=
NULL
;
if
(
p_sys
->
options
)
av_dict_copy
(
&
options
,
p_sys
->
options
,
0
);
ret
=
avcodec_open2
(
id
->
ff_enc_c
,
id
->
ff_enc
,
options
?
&
options
:
NULL
);
#else
ret
=
avcodec_open
(
id
->
ff_enc_c
,
id
->
ff_enc
);
#endif
vlc_avcodec_unlock
();
#if LIBAVCODEC_VERSION_MAJOR >= 54
AVDictionaryEntry
*
t
=
NULL
;
while
((
t
=
av_dict_get
(
options
,
""
,
t
,
AV_DICT_IGNORE_SUFFIX
)))
{
msg_Err
(
p_stream
,
"Unknown option
\"
%s
\"
"
,
t
->
key
);
}
av_dict_free
(
&
options
);
#endif
if
(
ret
)
{
msg_Err
(
p_stream
,
"cannot open encoder"
);
...
...
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