Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
c76a5365
Commit
c76a5365
authored
Jul 26, 2012
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ffmpeg: Fix rounding errors in decoded_frame->pts computation
Signed-off-by:
Michael Niedermayer
<
michaelni@gmx.at
>
parent
9b1fdb1c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
9 additions
and
3 deletions
+9
-3
ffmpeg.c
ffmpeg.c
+9
-3
No files found.
ffmpeg.c
View file @
c76a5365
...
...
@@ -2389,6 +2389,7 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
AVFrame
*
decoded_frame
;
AVCodecContext
*
avctx
=
ist
->
st
->
codec
;
int
i
,
ret
,
resample_changed
;
AVRational
decoded_frame_tb
;
if
(
!
ist
->
decoded_frame
&&
!
(
ist
->
decoded_frame
=
avcodec_alloc_frame
()))
return
AVERROR
(
ENOMEM
);
...
...
@@ -2420,14 +2421,19 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
the decoder could be delaying output by a packet or more. */
if
(
decoded_frame
->
pts
!=
AV_NOPTS_VALUE
)
{
ist
->
dts
=
ist
->
next_dts
=
ist
->
pts
=
ist
->
next_pts
=
av_rescale_q
(
decoded_frame
->
pts
,
avctx
->
time_base
,
AV_TIME_BASE_Q
);
decoded_frame_tb
=
avctx
->
time_base
;
}
else
if
(
decoded_frame
->
pkt_pts
!=
AV_NOPTS_VALUE
)
{
decoded_frame
->
pts
=
decoded_frame
->
pkt_pts
;
pkt
->
pts
=
AV_NOPTS_VALUE
;
decoded_frame_tb
=
ist
->
st
->
time_base
;
}
else
if
(
pkt
->
pts
!=
AV_NOPTS_VALUE
)
{
decoded_frame
->
pts
=
pkt
->
pts
;
pkt
->
pts
=
AV_NOPTS_VALUE
;
}
else
decoded_frame
->
pts
=
av_rescale_q
(
ist
->
dts
,
AV_TIME_BASE_Q
,
ist
->
st
->
time_base
);
decoded_frame_tb
=
ist
->
st
->
time_base
;
}
else
{
decoded_frame
->
pts
=
ist
->
dts
;
decoded_frame_tb
=
AV_TIME_BASE_Q
;
}
#if 1
...
...
@@ -2494,7 +2500,7 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
if
(
decoded_frame
->
pts
!=
AV_NOPTS_VALUE
)
decoded_frame
->
pts
=
av_rescale_q
(
decoded_frame
->
pts
,
ist
->
st
->
time_base
,
decoded_frame_tb
,
(
AVRational
){
1
,
ist
->
st
->
codec
->
sample_rate
});
for
(
i
=
0
;
i
<
ist
->
nb_filters
;
i
++
)
av_buffersrc_add_frame
(
ist
->
filters
[
i
]
->
filter
,
decoded_frame
,
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