Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-07-26 19:57:36 +0400
committerMichael Niedermayer <michaelni@gmx.at>2012-07-26 19:57:36 +0400
commit1a7af514deccc4efa16e8f1dc21d3313e4331ca5 (patch)
tree56a35695d6aa546520d958598988e12d10667452 /ffmpeg.c
parentc76a5365bbe3832bd0e36025416d034a6b1eaae4 (diff)
ffmpeg: move decoded_frame->pts computation together
This clarifies the code. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'ffmpeg.c')
-rw-r--r--ffmpeg.c36
1 files changed, 17 insertions, 19 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index 6f03b9308e..06de210c99 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -2417,25 +2417,6 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
return ret;
}
- /* if the decoder provides a pts, use it instead of the last packet pts.
- 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;
- decoded_frame_tb = ist->st->time_base;
- }else {
- decoded_frame->pts = ist->dts;
- decoded_frame_tb = AV_TIME_BASE_Q;
- }
-
-
#if 1
/* increment next_dts to use for the case where the input stream does not
have timestamps or there are multiple frames in the packet */
@@ -2498,6 +2479,23 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
}
}
+ /* if the decoder provides a pts, use it instead of the last packet pts.
+ 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;
+ decoded_frame_tb = ist->st->time_base;
+ }else {
+ decoded_frame->pts = ist->dts;
+ decoded_frame_tb = AV_TIME_BASE_Q;
+ }
if (decoded_frame->pts != AV_NOPTS_VALUE)
decoded_frame->pts = av_rescale_q(decoded_frame->pts,
decoded_frame_tb,