mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-23 15:53:08 +00:00
ALSA: fix use of period_size.
period_size is in frames, while the demuxer assumed it was in bytes, resulting in short reads.
This commit is contained in:
parent
46edd3a01b
commit
392acaedcb
@ -127,11 +127,11 @@ static int audio_read_packet(AVFormatContext *s1, AVPacket *pkt)
|
||||
snd_htimestamp_t timestamp;
|
||||
snd_pcm_uframes_t ts_delay;
|
||||
|
||||
if (av_new_packet(pkt, s->period_size) < 0) {
|
||||
if (av_new_packet(pkt, s->period_size * s->frame_size) < 0) {
|
||||
return AVERROR(EIO);
|
||||
}
|
||||
|
||||
while ((res = snd_pcm_readi(s->h, pkt->data, pkt->size / s->frame_size)) < 0) {
|
||||
while ((res = snd_pcm_readi(s->h, pkt->data, s->period_size)) < 0) {
|
||||
if (res == -EAGAIN) {
|
||||
av_free_packet(pkt);
|
||||
|
||||
|
@ -45,8 +45,8 @@ typedef void (*ff_reorder_func)(const void *, void *, int);
|
||||
typedef struct {
|
||||
AVClass *class;
|
||||
snd_pcm_t *h;
|
||||
int frame_size; ///< preferred size for reads and writes
|
||||
int period_size; ///< bytes per sample * channels
|
||||
int frame_size; ///< bytes per sample * channels
|
||||
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
|
||||
void (*reorder_func)(const void *, void *, int);
|
||||
|
Loading…
Reference in New Issue
Block a user