Superframe index: Parse correct number of frame sizes
If there are N frames in a superframe, the superframe
index will enumerate the sizes of only the first
(N - 1) frames. The code assumed that all N frame
sizes are coded.
The size of the final frame in the superframe is
calculated as follows:
(data_size - index_size - sum_of_N-1_frame_sizes)
Change-Id: Ia53ae27455a4f024eec311bf7356a00e8e0d449a
diff --git a/av1/decoder/decoder.c b/av1/decoder/decoder.c
index 6c85d75..e75ecc6 100644
--- a/av1/decoder/decoder.c
+++ b/av1/decoder/decoder.c
@@ -553,10 +553,10 @@
const uint8_t *x = &data[data_sz - index_sz + 1];
// Frames has a maximum of 8 and mag has a maximum of 4.
- uint8_t clear_buffer[32];
- assert(sizeof(clear_buffer) >= frames * mag);
+ uint8_t clear_buffer[28];
+ assert(sizeof(clear_buffer) >= (frames - 1) * mag);
if (decrypt_cb) {
- decrypt_cb(decrypt_state, x, clear_buffer, frames * mag);
+ decrypt_cb(decrypt_state, x, clear_buffer, (frames - 1) * mag);
x = clear_buffer;
}