mirror of https://git.videolan.org/git/ffmpeg.git
ffplay: use frame->pts if available for setting the audio clock
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
1822519d2a
commit
9eafdd518c
19
ffplay.c
19
ffplay.c
|
@ -2091,6 +2091,12 @@ static int audio_decode_frame(VideoState *is)
|
||||||
flush_complete = 1;
|
flush_complete = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is->frame->pts == AV_NOPTS_VALUE && pkt_temp->pts != AV_NOPTS_VALUE)
|
||||||
|
is->frame->pts = av_rescale_q(pkt_temp->pts, is->audio_st->time_base, dec->time_base);
|
||||||
|
if (pkt_temp->pts != AV_NOPTS_VALUE)
|
||||||
|
pkt_temp->pts += (double) is->frame->nb_samples / is->frame->sample_rate / av_q2d(is->audio_st->time_base);
|
||||||
|
|
||||||
data_size = av_samples_get_buffer_size(NULL, av_frame_get_channels(is->frame),
|
data_size = av_samples_get_buffer_size(NULL, av_frame_get_channels(is->frame),
|
||||||
is->frame->nb_samples,
|
is->frame->nb_samples,
|
||||||
is->frame->format, 1);
|
is->frame->format, 1);
|
||||||
|
@ -2154,8 +2160,11 @@ static int audio_decode_frame(VideoState *is)
|
||||||
}
|
}
|
||||||
|
|
||||||
audio_clock0 = is->audio_clock;
|
audio_clock0 = is->audio_clock;
|
||||||
is->audio_clock += (double)data_size /
|
/* update the audio clock with the pts */
|
||||||
(av_frame_get_channels(is->frame) * is->frame->sample_rate * av_get_bytes_per_sample(is->frame->format));
|
if (is->frame->pts != AV_NOPTS_VALUE) {
|
||||||
|
is->audio_clock = is->frame->pts * av_q2d(dec->time_base) + (double) is->frame->nb_samples / is->frame->sample_rate;
|
||||||
|
is->audio_clock_serial = is->audio_pkt_temp_serial;
|
||||||
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
{
|
{
|
||||||
static double last_clock;
|
static double last_clock;
|
||||||
|
@ -2190,12 +2199,6 @@ static int audio_decode_frame(VideoState *is)
|
||||||
}
|
}
|
||||||
|
|
||||||
*pkt_temp = *pkt;
|
*pkt_temp = *pkt;
|
||||||
|
|
||||||
/* if update the audio clock with the pts */
|
|
||||||
if (pkt->pts != AV_NOPTS_VALUE) {
|
|
||||||
is->audio_clock = av_q2d(is->audio_st->time_base)*pkt->pts;
|
|
||||||
is->audio_clock_serial = is->audio_pkt_temp_serial;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue