diff options
author | wm4 <wm4@nowhere> | 2013-08-22 18:56:19 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-08-22 21:19:34 +0200 |
commit | 0440561c99e4f34e4a743d7d17f8fa933a49d362 (patch) | |
tree | 8435a4fd083794144f0c0815a9059ed7f7a5ca53 | |
parent | 2a172a98fd91d97309a4504849d9044c9c8a763f (diff) | |
download | mpv-0440561c99e4f34e4a743d7d17f8fa933a49d362.tar.bz2 mpv-0440561c99e4f34e4a743d7d17f8fa933a49d362.tar.xz |
demux_raw: read multiple frames per packet
The rawaudio demuxer read one frame per packet, basically a few bytes,
which caused insane overhead. (I found this when I couldn't play raw
audio without dropouts when using -v, which printed a line per packet
read.)
Fix this and read 1 second of audio per packet. This is a regression
since cfa5712 (merging of demux_rawaudio and demux_rawvideo).
-rw-r--r-- | demux/demux_raw.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/demux/demux_raw.c b/demux/demux_raw.c index 532a2b5cce..c00723a290 100644 --- a/demux/demux_raw.c +++ b/demux/demux_raw.c @@ -35,6 +35,7 @@ struct priv { int frame_size; + int read_frames; double frame_rate; }; @@ -107,6 +108,7 @@ static int demux_rawaudio_open(demuxer_t *demuxer, enum demux_check check) *p = (struct priv) { .frame_size = samplesize * sh_audio->channels.num, .frame_rate = samplerate, + .read_frames = samplerate, }; return 0; @@ -191,6 +193,7 @@ static int demux_rawvideo_open(demuxer_t *demuxer, enum demux_check check) *p = (struct priv) { .frame_size = imgsize, .frame_rate = fps, + .read_frames = 1, }; return 0; @@ -203,7 +206,7 @@ static int raw_fill_buffer(demuxer_t *demuxer) if (demuxer->stream->eof) return 0; - struct demux_packet *dp = new_demux_packet(p->frame_size); + struct demux_packet *dp = new_demux_packet(p->frame_size * p->read_frames); dp->pos = stream_tell(demuxer->stream) - demuxer->movi_start; dp->pts = (dp->pos / p->frame_size) / p->frame_rate; |