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
dddf319b
Commit
dddf319b
authored
Jul 05, 2014
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dshow: fix timestamp conversion (fixes #11725)
Zero is a legal REFERENCE_TIME value.
parent
f836a94d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
7 deletions
+8
-7
modules/access/dshow/dshow.cpp
modules/access/dshow/dshow.cpp
+8
-7
No files found.
modules/access/dshow/dshow.cpp
View file @
dddf319b
...
...
@@ -1885,9 +1885,7 @@ static int Demux( demux_t *p_demux )
REFERENCE_TIME
i_pts
,
i_end_date
;
HRESULT
hr
=
sample
.
p_sample
->
GetTime
(
&
i_pts
,
&
i_end_date
);
if
(
hr
!=
VFW_S_NO_STOP_TIME
&&
hr
!=
S_OK
)
i_pts
=
0
;
if
(
!
i_pts
)
if
(
hr
==
S_OK
||
hr
==
VFW_S_NO_STOP_TIME
)
{
if
(
p_stream
->
mt
.
majortype
==
MEDIATYPE_Video
||
!
p_stream
->
b_pts
)
{
...
...
@@ -1895,10 +1893,12 @@ static int Demux( demux_t *p_demux )
i_pts
=
sample
.
i_timestamp
;
p_stream
->
b_pts
=
true
;
}
i_pts
+=
(
i_pts
>=
0
)
?
+
5
:
-
5
;
i_pts
/=
10
;
/* 100-ns to µs conversion */
i_pts
+=
VLC_TS_0
;
}
i_pts
/=
10
;
/* Dshow works with 100 nano-seconds resolution */
else
i_pts
=
VLC_TS_INVALID
;
#if 0
msg_Dbg( p_demux, "Read() stream: %i, size: %i, PTS: %"PRId64,
i_stream, i_data_size, i_pts );
...
...
@@ -1909,7 +1909,8 @@ static int Demux( demux_t *p_demux )
p_block
->
i_pts
=
p_block
->
i_dts
=
i_pts
;
sample
.
p_sample
->
Release
();
es_out_Control
(
p_demux
->
out
,
ES_OUT_SET_PCR
,
i_pts
>
0
?
i_pts
:
0
);
if
(
i_pts
>
VLC_TS_INVALID
)
es_out_Control
(
p_demux
->
out
,
ES_OUT_SET_PCR
,
i_pts
);
es_out_Send
(
p_demux
->
out
,
p_stream
->
p_es
,
p_block
);
i_samples
--
;
...
...
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