summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2020-01-05 14:43:07 +0000
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2020-01-06 00:06:03 +0000
commita2d35111546cd08339ad0e3e786dda6c6eb1ebe7 (patch)
tree4455f9ba6b9f770c7f3cb0df4447e970acdd1469
parent60d599e2173508e1c4cc614ede6d239b2e15142d (diff)
downloadffmpeg-a2d35111546cd08339ad0e3e786dda6c6eb1ebe7.tar.gz
lavc/ffv1: Properly check that the 4th and 5th quant tables are zeroes
Currently, the decoder checks the 128th value of the 4th quant table during while deriving the context on each sample, in order to speed itself up. This is due to relying on the behavior of FFmpeg's FFV1 encoder, in which if that value is zero, the entire 4th and 5th quant tables are assumed to be entirely zero. This does not match the FFV1 spec, which has no such restriction, and after some discussion, it was decided to fix FFmpeg to abide by the spec, rather than change the spec. We will now check whether the 4th and 5th quant tables are zero properly, by checking the 128th valye of both tables (which means they are zero due to the way they're coded in the bitstream). For further context, the FFV1 issue in question is located at: https://github.com/FFmpeg/FFV1/issues/169 Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
-rw-r--r--libavcodec/ffv1_template.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libavcodec/ffv1_template.c b/libavcodec/ffv1_template.c
index f2ab93313a..c5f61b0182 100644
--- a/libavcodec/ffv1_template.c
+++ b/libavcodec/ffv1_template.c
@@ -37,7 +37,7 @@ static inline int RENAME(get_context)(PlaneContext *p, TYPE *src,
const int RT = last[1];
const int L = src[-1];
- if (p->quant_table[3][127]) {
+ if (p->quant_table[3][127] || p->quant_table[4][127]) {
const int TT = last2[0];
const int LL = src[-2];
return p->quant_table[0][(L - LT) & 0xFF] +