[FFmpeg-cvslog] vorbisdec: read the previous window flag for long windows

Justin Ruggles git at videolan.org
Sun Mar 4 04:47:42 CET 2012


ffmpeg | branch: master | Justin Ruggles <justin.ruggles at gmail.com> | Fri Feb 24 18:04:05 2012 -0500| [737ca4482bd68d6dc52a1811f5de8e4952ad7036] | committer: Justin Ruggles

vorbisdec: read the previous window flag for long windows

When reading sequentially, we are using the actual flag from the previous
frame, but when seeking we do not know what the previous window flag was, so
we need to read it from the bitstream.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=737ca4482bd68d6dc52a1811f5de8e4952ad7036
---

 libavcodec/vorbisdec.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
index d3f6faf..c83d49d 100644
--- a/libavcodec/vorbisdec.c
+++ b/libavcodec/vorbisdec.c
@@ -1510,8 +1510,10 @@ static int vorbis_parse_audio_packet(vorbis_context *vc)
     blockflag = vc->modes[mode_number].blockflag;
     blocksize = vc->blocksize[blockflag];
     vlen = blocksize / 2;
-    if (blockflag)
-        skip_bits(gb, 2); // previous_window, next_window
+    if (blockflag) {
+        previous_window = get_bits(gb, 1);
+        skip_bits1(gb); // next_window
+    }
 
     memset(ch_res_ptr,   0, sizeof(float) * vc->audio_channels * vlen); //FIXME can this be removed ?
     memset(ch_floor_ptr, 0, sizeof(float) * vc->audio_channels * vlen); //FIXME can this be removed ?



More information about the ffmpeg-cvslog mailing list