[FFmpeg-devel] [PATCH] TFA: fix "skip frame" TSW1 encoding.

Reimar Döffinger Reimar.Doeffinger at gmx.de
Sun Jan 22 12:42:46 CET 2012


Previously the decoder would raise an error.
The end result is the same, the time stamps on change
because regression tests create time stamps incorrectly.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
---
 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
-- 
1.7.8.3



More information about the ffmpeg-devel mailing list