aboutsummaryrefslogtreecommitdiffstats
path: root/libavdevice
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2012-03-02 11:54:45 +0100
committerNicolas George <nicolas.george@normalesup.org>2012-03-05 16:57:28 +0100
commit456d65a5c6a9013adabbe0f21c920a6f04b9e6e9 (patch)
tree677d7bc9a5c9eb6229fa9d4f4fd86e85d9bf3834 /libavdevice
parent9bbe6ed1e0b80249124b8c040544cc30e753bb76 (diff)
downloadffmpeg-456d65a5c6a9013adabbe0f21c920a6f04b9e6e9.tar.gz
alsa: fix timefilter usage.
The period argument is supposed to be the number of samples since the last update.
Diffstat (limited to 'libavdevice')
-rw-r--r--libavdevice/alsa-audio-dec.c3
-rw-r--r--libavdevice/alsa-audio.h1
2 files changed, 3 insertions, 1 deletions
diff --git a/libavdevice/alsa-audio-dec.c b/libavdevice/alsa-audio-dec.c
index 62bf42d272..e0e0954430 100644
--- a/libavdevice/alsa-audio-dec.c
+++ b/libavdevice/alsa-audio-dec.c
@@ -123,7 +123,8 @@ static int audio_read_packet(AVFormatContext *s1, AVPacket *pkt)
dts = av_gettime();
snd_pcm_delay(s->h, &delay);
dts -= av_rescale(delay + res, 1000000, s->sample_rate);
- pkt->pts = ff_timefilter_update(s->timefilter, dts, res);
+ pkt->pts = ff_timefilter_update(s->timefilter, dts, s->last_period);
+ s->last_period = res;
pkt->size = res * s->frame_size;
diff --git a/libavdevice/alsa-audio.h b/libavdevice/alsa-audio.h
index e453a2011b..6719384d84 100644
--- a/libavdevice/alsa-audio.h
+++ b/libavdevice/alsa-audio.h
@@ -52,6 +52,7 @@ typedef struct {
int period_size; ///< preferred size for reads and writes, in frames
int sample_rate; ///< sample rate set by user
int channels; ///< number of channels set by user
+ int last_period;
TimeFilter *timefilter;
void (*reorder_func)(const void *, void *, int);
void *reorder_buf;