mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-11-06 05:17:42 +00:00
avcodec/ffv1dec: clamp k in get_vlc_symbol() at 20 instead of bits
Add a FATE test with such planes.
This commit is contained in:
1 parent
bd6e6f638e
commit
60d62ca406
3 files changed
+18
-3
No files matched your search
@@ -56,10 +56,12 @@ static inline int get_vlc_symbol(GetBitContext *gb, VlcState *const state,
|
||||
k++;
|
||||
i += i;
|
||||
}
|
||||
if (k > bits) {
|
||||
/* get_ur_golomb() reads at most 32 bits, 12 of which the escape limit
|
||||
* reserves for the prefix */
|
||||
if (k > 20) {
|
||||
ff_dlog(NULL, "k-overflow bias:%d error:%d drift:%d count:%d k:%d",
|
||||
state->bias, state->error_sum, state->drift, state->count, k);
|
||||
k = bits;
|
||||
k = 20;
|
||||
}
|
||||
|
||||
v = get_sr_golomb(gb, k, 12, bits);
|
||||
|
||||
+6
-1
@@ -1,9 +1,14 @@
|
||||
FATE_FFV1_FLOAT32-$(call TRANSCODE, FFV1, NUT, LAVFI_INDEV WRAPPED_AVFRAME_DECODER COLOR_FILTER FORMAT_FILTER GEQ_FILTER SCALE_FILTER) += \
|
||||
fate-ffv1-golomb-float32-26bit
|
||||
fate-ffv1-golomb-float32-26bit fate-ffv1-golomb-float32-1bit
|
||||
|
||||
fate-ffv1-golomb-float32-26bit: CMD = transcode lavfi "color=black:s=352x288:r=1:d=8,format=gbrpf32,geq=r=X+Y*W:g=X+Y*W:b=X+W*if(lt(Y\,2*(25+N+floor(N/2)+2*floor(N/7))-4)\,if(mod(Y\,2)\,290-(25+N+floor(N/2)+2*floor(N/7))+(Y-1)/2\,290-2*(25+N+floor(N/2)+2*floor(N/7))+Y/2)\,if(eq(Y\,2*(25+N+floor(N/2)+2*floor(N/7))-4)\,19\,if(lt(Y\,2*(25+N+floor(N/2)+2*floor(N/7))+16)\,Y-2*(25+N+floor(N/2)+2*floor(N/7))+3\,if(lt(Y\,286)\,Y-2*(25+N+floor(N/2)+2*floor(N/7))+4\,Y-(25+N+floor(N/2)+2*floor(N/7))+2))))" nut \
|
||||
"-c:v ffv1 -strict experimental -coder 0 -remap_mode 1 -slices 1 -g 1" "-pix_fmt gbrpf32le -vf scale"
|
||||
|
||||
# Planes with 2 distinct values are coded with 1 bit residuals while the
|
||||
# Golomb-Rice parameter k starts at 2.
|
||||
fate-ffv1-golomb-float32-1bit: CMD = transcode lavfi "color=black:s=64x48:r=1:d=1,format=gbrpf32,geq=r=1+mod(floor(X*Y/7)\,2):g=1+mod(floor(X*Y/7)\,2):b=1+mod(floor(X*Y/7)\,2)" nut \
|
||||
"-c:v ffv1 -strict experimental -coder 0 -remap_mode 1" "-pix_fmt gbrpf32le -vf scale"
|
||||
|
||||
FATE_FFMPEG += $(FATE_FFV1_FLOAT32-yes)
|
||||
fate-ffv1: $(FATE_FFV1_FLOAT32-yes)
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
eb334f7a8c79e6eb915ac7440a88ddc9 *tests/data/fate/ffv1-golomb-float32-1bit.nut
|
||||
1455 tests/data/fate/ffv1-golomb-float32-1bit.nut
|
||||
#tb 0: 1/1
|
||||
#media_type 0: video
|
||||
#codec_id 0: rawvideo
|
||||
#dimensions 0: 64x48
|
||||
#sar 0: 1/1
|
||||
0, 0, 0, 1, 36864, 0x1ad349e2
|
||||
Reference in new issue
Block a user