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
534f8d2f
Commit
534f8d2f
authored
Apr 14, 2013
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
input: query access object before creating stream object (refs #8414)
parent
5db3bf3b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
23 deletions
+21
-23
src/input/input.c
src/input/input.c
+21
-23
No files found.
src/input/input.c
View file @
534f8d2f
...
...
@@ -2410,6 +2410,8 @@ static int InputSourceInit( input_thread_t *p_input,
msg_Dbg
(
p_input
,
"trying to pre-parse %s"
,
psz_path
);
}
mtime_t
i_pts_delay
;
if
(
in
->
p_demux
)
{
/* Get infos from access_demux */
...
...
@@ -2453,10 +2455,10 @@ static int InputSourceInit( input_thread_t *p_input,
var_SetBool
(
p_input
,
"can-seek"
,
b_can_seek
);
}
else
{
/* Now try a real access */
in
->
p_access
=
access_New
(
p_input
,
p_input
,
psz_access
,
psz_demux
,
psz_path
);
if
(
in
->
p_access
==
NULL
)
{
/* Now try a real access */
access_t
*
p_access
=
access_New
(
p_input
,
p_input
,
psz_access
,
psz_demux
,
psz_path
);
if
(
p_access
==
NULL
)
{
if
(
vlc_object_alive
(
p_input
)
)
{
...
...
@@ -2475,27 +2477,33 @@ static int InputSourceInit( input_thread_t *p_input,
bool
b_can_seek
;
in
->
b_title_demux
=
false
;
if
(
access_Control
(
in
->
p_access
,
ACCESS_GET_TITLE_INFO
,
&
in
->
title
,
&
in
->
i_title
,
if
(
access_Control
(
p_access
,
ACCESS_GET_TITLE_INFO
,
&
in
->
title
,
&
in
->
i_title
,
&
in
->
i_title_offset
,
&
in
->
i_seekpoint_offset
)
)
{
TAB_INIT
(
in
->
i_title
,
in
->
title
);
}
access_Control
(
in
->
p_access
,
ACCESS_CAN_CONTROL_PACE
,
&
in
->
b_can_pace_control
);
access_Control
(
p_access
,
ACCESS_CAN_CONTROL_PACE
,
&
in
->
b_can_pace_control
);
in
->
b_can_rate_control
=
in
->
b_can_pace_control
;
in
->
b_rescale_ts
=
true
;
access_Control
(
in
->
p_access
,
ACCESS_CAN_PAUSE
,
&
in
->
b_can_pause
);
access_Control
(
p_access
,
ACCESS_CAN_PAUSE
,
&
in
->
b_can_pause
);
var_SetBool
(
p_input
,
"can-pause"
,
in
->
b_can_pause
||
!
in
->
b_can_pace_control
);
/* XXX temporary because of es_out_timeshift*/
var_SetBool
(
p_input
,
"can-rate"
,
!
in
->
b_can_pace_control
||
in
->
b_can_rate_control
);
/* XXX temporary because of es_out_timeshift*/
var_SetBool
(
p_input
,
"can-rewind"
,
!
in
->
b_rescale_ts
&&
!
in
->
b_can_pace_control
);
access_Control
(
in
->
p_access
,
ACCESS_CAN_SEEK
,
&
b_can_seek
);
access_Control
(
p_access
,
ACCESS_CAN_SEEK
,
&
b_can_seek
);
var_SetBool
(
p_input
,
"can-seek"
,
b_can_seek
);
access_Control
(
p_access
,
ACCESS_GET_PTS_DELAY
,
&
i_pts_delay
);
}
/* Access-forced demuxer (PARENTAL ADVISORY: EXPLICIT HACK) */
if
(
!*
psz_demux
&&
*
p_access
->
psz_demux
)
psz_demux
=
p_access
->
psz_demux
;
/* */
int
i_input_list
;
char
**
ppsz_input_list
;
...
...
@@ -2538,7 +2546,7 @@ static int InputSourceInit( input_thread_t *p_input,
TAB_APPEND
(
i_input_list
,
ppsz_input_list
,
NULL
);
/* Create the stream_t */
in
->
p_stream
=
stream_AccessNew
(
in
->
p_access
,
ppsz_input_list
);
in
->
p_stream
=
stream_AccessNew
(
p_access
,
ppsz_input_list
);
if
(
ppsz_input_list
)
{
for
(
int
i
=
0
;
ppsz_input_list
[
i
]
!=
NULL
;
i
++
)
...
...
@@ -2560,12 +2568,6 @@ static int InputSourceInit( input_thread_t *p_input,
var_GetBool
(
p_input
,
"input-record-native"
)
);
free
(
psz_stream_filter
);
/* Open a demuxer */
if
(
*
psz_demux
==
'\0'
&&
*
in
->
p_access
->
psz_demux
)
{
psz_demux
=
in
->
p_access
->
psz_demux
;
}
in
->
p_demux
=
demux_New
(
p_input
,
p_input
,
psz_access
,
psz_demux
,
/* Take access/stream redirections into account: */
in
->
p_stream
->
psz_path
?
in
->
p_stream
->
psz_path
:
psz_path
,
...
...
@@ -2602,6 +2604,7 @@ static int InputSourceInit( input_thread_t *p_input,
in
->
b_title_demux
=
true
;
}
}
in
->
p_access
=
p_access
;
/* <- TODO: remove this nasty pointer */
}
free
(
psz_var_demux
);
...
...
@@ -2638,12 +2641,7 @@ static int InputSourceInit( input_thread_t *p_input,
* fallback to access */
if
(
demux_Control
(
in
->
p_demux
,
DEMUX_GET_PTS_DELAY
,
&
in
->
i_pts_delay
)
)
{
/* GET_PTS_DELAY is mandatory for access_demux */
assert
(
in
->
p_access
);
access_Control
(
in
->
p_access
,
ACCESS_GET_PTS_DELAY
,
&
in
->
i_pts_delay
);
}
in
->
i_pts_delay
=
i_pts_delay
;
if
(
in
->
i_pts_delay
>
INPUT_PTS_DELAY_MAX
)
in
->
i_pts_delay
=
INPUT_PTS_DELAY_MAX
;
else
if
(
in
->
i_pts_delay
<
0
)
...
...
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