[FFmpeg-cvslog] DFA: fix "skip frame" TSW1 encoding.
Reimar Döffinger
git at videolan.org
Sat Jan 28 22:01:29 CET 2012
ffmpeg | branch: master | Reimar Döffinger <Reimar.Doeffinger at gmx.de> | Sun Jan 22 12:41:12 2012 +0100| [0b378e8aa99e24f5d1b128abaaf1572542ce86f1] | committer: Reimar Döffinger
DFA: fix "skip frame" TSW1 encoding.
Previously the decoder would raise an error.
The end result is the same, the time stamps only change
because regression tests create time stamps incorrectly.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0b378e8aa99e24f5d1b128abaaf1572542ce86f1
---
libavcodec/dfa.c | 2 ++
tests/ref/fate/dfa4 | 17 +++++++++--------
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/libavcodec/dfa.c b/libavcodec/dfa.c
index bce6260..97c0954 100644
--- a/libavcodec/dfa.c
+++ b/libavcodec/dfa.c
@@ -67,6 +67,8 @@ static int decode_tsw1(uint8_t *frame, int width, int height,
segments = bytestream_get_le32(&src);
offset = bytestream_get_le32(&src);
+ if (segments == 0 && offset == frame_end - frame)
+ return 0; // skip frame
if (frame_end - frame <= offset)
return -1;
frame += offset;
diff --git a/tests/ref/fate/dfa4 b/tests/ref/fate/dfa4
index fbf00b6..b6d5ed9 100644
--- a/tests/ref/fate/dfa4
+++ b/tests/ref/fate/dfa4
@@ -1,13 +1,14 @@
-0, 0, 921600, 0xd9e060e3
-0, 12780, 921600, 0x15e28dc7
-0, 25560, 921600, 0x78e8bfbc
-0, 38340, 921600, 0xe9407075
-0, 51120, 921600, 0xab818b8a
+0, 0, 921600, 0x00000000
+0, 12780, 921600, 0xd9e060e3
+0, 25560, 921600, 0x15e28dc7
+0, 38340, 921600, 0x78e8bfbc
+0, 51120, 921600, 0xe9407075
0, 63900, 921600, 0xab818b8a
0, 76680, 921600, 0xab818b8a
0, 89460, 921600, 0xab818b8a
0, 102240, 921600, 0xab818b8a
0, 115020, 921600, 0xab818b8a
-0, 127800, 921600, 0xad5ad11c
-0, 140580, 921600, 0xe6e50f8c
-0, 153360, 921600, 0x9f127099
+0, 127800, 921600, 0xab818b8a
+0, 140580, 921600, 0xad5ad11c
+0, 153360, 921600, 0xe6e50f8c
+0, 166140, 921600, 0x9f127099
More information about the ffmpeg-cvslog
mailing list