Parts of previous chunk were getting written in next chunk. This causes
inconsistent output if put_bits caches 64 bits instead of 32.
---
libavformat/gif.c | 2 +-
tests/ref/lavf/gif | 6 +++---
tests/ref/seek/lavf-gif | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/libavformat/gif.c b/libavformat/gif.c
index e7fa37c..a45ed9a 100644
--- a/libavformat/gif.c
+++ b/libavformat/gif.c
@@ -239,8 +239,8 @@ static int gif_image_write_image(AVIOContext *pb,
if (left <= GIF_CHUNKS) {
put_bits(&p, 9, 0x101); /* end of stream */
- flush_put_bits(&p);
}
+ flush_put_bits(&p);
if (put_bits_ptr(&p) - p.buf > 0) {
avio_w8(pb, put_bits_ptr(&p) - p.buf); /* byte count of the packet
*/
avio_write(pb, p.buf, put_bits_ptr(&p) - p.buf); /* the actual
buffer */
diff --git a/tests/ref/lavf/gif b/tests/ref/lavf/gif
index 4a4ebfb..785e22d 100644
--- a/tests/ref/lavf/gif
+++ b/tests/ref/lavf/gif
@@ -1,3 +1,3 @@
-e6089fd4ef3b9df44090ab3650bdd810 *./tests/data/lavf/lavf.gif
-2906401 ./tests/data/lavf/lavf.gif
-./tests/data/lavf/lavf.gif CRC=0xe5605ff6
+f0a9568a8962ec066433cad2181e5b76 *./tests/data/lavf/lavf.gif
+2915901 ./tests/data/lavf/lavf.gif
+./tests/data/lavf/lavf.gif CRC=0xed403ded
diff --git a/tests/ref/seek/lavf-gif b/tests/ref/seek/lavf-gif
index 883f187..4d711b6 100644
--- a/tests/ref/seek/lavf-gif
+++ b/tests/ref/seek/lavf-gif
@@ -1,4 +1,4 @@
-ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: -1
size:2906401
+ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: -1
size:2915901
ret:-EINVAL st:-1 flags:0 ts:-1.000000
ret:-EINVAL st:-1 flags:1 ts: 1.894167
ret:-EINVAL st: 0 flags:0 ts: 0.800000
--
2.9.3
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel