Paul B Mahol: > On Sat, Oct 10, 2020 at 08:59:56PM +0200, Andreas Rheinhardt wrote: >> The SheerVideo decoder uses two VLC tables and these are in turn created >> from structures (called SheerTable) that are naturally paired. This >> commit unifies these pairs of SheerTables to arrays and unifies creating >> the VLC tables. > > patch-set should be fine if all variant of files are still decoded fine > after this set applied. > I tested all files from https://samples.ffmpeg.org/ffmpeg-bugs/trac/ticket492/ which unfortunately don't cover all variants and they decode the same. Given that the new tables have been created automatically* I am confident that I made no errors.
- Andreas *: using this small program: #include <stdio.h> #include <stdint.h> #include "sheervideodata.h" void test(const char *name, const uint8_t *table, int size) { int last = 0; int descending = 0; int counts[2][16] = { { 0 } }, count = 0; for (int i = 0; i < size; i++) { int cur = table[i]; if (descending) { if (last < cur) { printf("Table %s not according to expectations at index %d.\n", name, i); return; } } else if (last > cur) descending = 1; if (cur > 16 || cur <= 0) { printf("Element %d of table %s out of range.\n", i, name); return; } counts[descending][cur - 1]++; last = cur; } if (!descending) { printf("Still ascending.\n"); return; } if (counts[1][15]) { printf("Strange"); return; } for (int i = 0; i < 16; i++) count += counts[0][i] + counts[1][i]; if (count != size) { printf("Strange2"); return; } if (counts[0][15] > UINT16_MAX) { printf("Strange3"); return; } printf("static const SheerTable %s = {\n {", name); for (int i = 0; i < 15; i++) printf("%3d,", counts[0][i]); printf("\n "); for (int i = 0; i < 14; i++) printf("%3d,", counts[1][14 - i]); printf("%3d }, %d\n };\n\n", counts[1][0], counts[0][15]); } #define test(table, size) test(#table, table, size) int main() { test(l_r_rgb, 256); test(l_g_rgb, 256); test(l_r_rgbi, 256); test(l_g_rgbi, 256); test(l_y_ybr, 256); test(l_u_ybr, 256); test(l_y_ybyr, 256); test(l_u_ybyr, 256); test(l_y_byry, 256); test(l_u_byry, 256); test(l_y_ybr10i, 1024); test(l_y_ybr10, 1024); test(l_u_ybr10i, 1024); test(l_u_ybr10, 1024); test(l_r_rgbx, 1024); test(l_g_rgbx, 1024); test(l_y_yry10, 1024); test(l_u_yry10, 1024); test(l_y_yry10i, 1024); test(l_u_yry10i, 1024); test(l_y_ybri, 256); test(l_u_ybri, 256); test(l_y_byryi, 256); test(l_u_byryi, 256); test(l_r_rgbxi, 1024); test(l_g_rgbxi, 1024); return 0; } _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".