diff --git a/libavcodec/mjpegenc_huffman.c b/libavcodec/mjpegenc_huffman.c index 2556959132..7fd63a2569 100644 --- a/libavcodec/mjpegenc_huffman.c +++ b/libavcodec/mjpegenc_huffman.c @@ -43,14 +43,6 @@ typedef struct PackageMergerList { int items[257 * 16]; ///< chain of all individual values that make up items A, B, A, B, C, A, B, C, D, C, D, D, E } PackageMergerList; -/** - * Used to store optimal huffman encoding results - */ -typedef struct HuffTable { - int code; ///< code is the input value - int length; ///< length of the encoding -} HuffTable; - /** * Comparison function for two PTables by prob * @@ -65,20 +57,6 @@ static int compare_by_prob(const void *a, const void *b) return a_val.prob - b_val.prob; } -/** - * Comparison function for two HuffTables by length - * - * @param a First HuffTable to compare - * @param b Second HuffTable to compare - * @return < 0 for less than, 0 for equals, > 0 for greater than - */ -static int compare_by_length(const void *a, const void *b) -{ - HuffTable a_val = *(HuffTable *) a; - HuffTable b_val = *(HuffTable *) b; - return a_val.length - b_val.length; -} - /** * Computes the length of the Huffman encoding for each distinct input value. * Uses package merge algorithm as follows: @@ -92,15 +70,16 @@ static int compare_by_length(const void *a, const void *b) * 8. the length of the huffman code for symbol s will be equal to the number of times the symbol occurs in the select elements * Go to guru.multimedia.cx/small-tasks-for-ffmpeg/ for more details * - * All probabilities should be positive integers. The output is sorted by code, - * not by length. + * All probabilities should be nonnegative integers. * - * @param prob_table input array of a PTable for each distinct input value - * @param distincts output array of a HuffTable that will be populated by this function - * @param size size of the prob_table array - * @param max_length max length of an encoding + * @param prob_table[in,out] array of a PTable for each distinct input value, + * will be sorted according to ascending probability + * @param counts[out] the number of values of a given length + * @param size number of elements of the prob_table array + * @param max_length max length of a code */ -static void mjpegenc_huffman_compute_bits(PTable *prob_table, HuffTable *distincts, +static void mjpegenc_huffman_compute_bits(PTable *prob_table, + uint8_t counts[/* max_length + 1 */], int size, int max_length) { PackageMergerList list_a, list_b, *to = &list_a, *from = &list_b, *temp; @@ -159,14 +138,9 @@ static void mjpegenc_huffman_compute_bits(PTable *prob_table, HuffTable *distinc } // we don't want to return the 256 bit count (it was just in here to prevent // all 1s encoding) - j = 0; - for (i = 0; i < 256; i++) { - if (nbits[i] > 0) { - distincts[j].code = i; - distincts[j].length = nbits[i]; - j++; - } - } + memset(counts, 0, sizeof(counts[0]) * (max_length + 1)); + for (int i = 0; i < 256; ++i) + counts[nbits[i]]++; } void ff_mjpeg_encode_huffman_init(MJpegEncHuffmanContext *s) @@ -186,7 +160,6 @@ void ff_mjpeg_encode_huffman_close(MJpegEncHuffmanContext *s, uint8_t bits[17], uint8_t val[], int max_nval) { PTable val_counts[257]; - HuffTable distincts[256]; av_assert1(max_nval <= FF_ARRAY_ELEMS(val_counts) - 1); @@ -201,12 +174,13 @@ void ff_mjpeg_encode_huffman_close(MJpegEncHuffmanContext *s, uint8_t bits[17], } val_counts[nval].value = 256; val_counts[nval].prob = 0; - mjpegenc_huffman_compute_bits(val_counts, distincts, nval + 1, 16); - AV_QSORT(distincts, nval, HuffTable, compare_by_length); - memset(bits, 0, sizeof(bits[0]) * 17); - for (int i = 0; i < nval; i++) { - val[i] = distincts[i].code; - bits[distincts[i].length]++; - } + mjpegenc_huffman_compute_bits(val_counts, bits, nval + 1, 16); + + // val_counts[0] is the fake element we added earlier. + av_assert1(val_counts[0].prob == 0 && val_counts[0].value == 256); + // The following loop puts the values with higher occurence first, + // ensuring that they get the shorter codes. + for (int i = 0; i < nval; ++i) + val[i] = val_counts[nval - i].value; } diff --git a/libavcodec/tests/mjpegenc_huffman.c b/libavcodec/tests/mjpegenc_huffman.c index 4f94dd99dc..9cc5d9b506 100644 --- a/libavcodec/tests/mjpegenc_huffman.c +++ b/libavcodec/tests/mjpegenc_huffman.c @@ -34,10 +34,9 @@ static int check_lengths(int L, const int *probs, int nprobs, int expected_length, const uint8_t expected_len_counts[/* L + 1 */]) { - HuffTable lengths[256]; PTable val_counts[256]; - uint8_t len_counts[17] = { 0 }; - int actual_length = 0, i, j, k, prob, length; + uint8_t len_counts[17]; + int actual_length = 0, i; int ret = 0; av_assert0(nprobs <= 256); av_assert0(L < FF_ARRAY_ELEMS(len_counts)); @@ -46,20 +45,12 @@ static int check_lengths(int L, const int *probs, int nprobs, val_counts[i] = (PTable){.value = i, .prob = probs[i]}; } - mjpegenc_huffman_compute_bits(val_counts, lengths, nprobs, L); + mjpegenc_huffman_compute_bits(val_counts, len_counts, nprobs, L); - for (int i = 0; i < nprobs; ++i) { - if (lengths[i].length > L) { - fprintf(stderr, - "Len %d of element %d of Huffman table with %d elements exceeds max length %d\n", - lengths[i].length, i, nprobs, L); - return 1; - } - len_counts[lengths[i].length]++; - } // Test that the lengths can be made part of a complete, prefix-free tree: - unsigned code = 0; + unsigned code = 0, count = 0; for (int i = 1; i <= L; ++i) { + count += len_counts[i]; code <<= 1; code += len_counts[i]; } @@ -67,22 +58,36 @@ static int check_lengths(int L, const int *probs, int nprobs, fprintf(stderr, "Huffman tree overdetermined/invalid\n"); ret = 1; } - - for (i = 0; i < nprobs; i++) { - // Find the value's prob and length - for (j = 0; j < nprobs; j++) - if (val_counts[j].value == i) break; - for (k = 0; k < nprobs; k++) - if (lengths[k].code == i) break; - if (!(j < nprobs && k < nprobs)) return 1; - prob = val_counts[j].prob; - length = lengths[k].length; - - if (prob) { - actual_length += prob * length; + if (count != nprobs) { + fprintf(stderr, "Total count %u does not match expected value %d\n", + count, nprobs); + ret = 1; + } + // Test that the input values have been properly ordered. + for (unsigned i = 0; i < count; ++i) { + if (val_counts[i].prob != probs[val_counts[i].value]) { + fprintf(stderr, "PTable not properly reordered\n"); + ret = 1; } - - if (length > L || length < 1) return 1; + if (i && val_counts[i - 1].prob > val_counts[i].prob) { + fprintf(stderr, "PTable not order ascendingly: [%u] = %d > [%u] = %d\n", + i - 1, val_counts[i - 1].prob, i, val_counts[i].prob); + ret = 1; + } + unsigned j; + for (j = 0; j < count; ++j) + if (val_counts[j].value == i) + break; + if (j >= count) { + fprintf(stderr, "Element %u missing after sorting\n", i); + ret = 1; + } + } + for (int len = L, j = 0; len; --len) { + int prob = 0; + for (int end = j + len_counts[len]; j < end; ++j) + prob += val_counts[j].prob; + actual_length += prob * len; } // Check that the total length is optimal if (actual_length != expected_length) ret = 1; @@ -141,7 +146,10 @@ static const uint8_t len_counts_sat[] = { // http://guru.multimedia.cx/small-tasks-for-ffmpeg/ int main(int argc, char **argv) { - int i, ret = 0; + enum { + MAX_LEN = 3, + }; + int ret = 0; // Probabilities of symbols 0..4 PTable val_counts[] = { {.value = 0, .prob = 1}, @@ -151,30 +159,33 @@ int main(int argc, char **argv) {.value = 4, .prob = 21}, }; // Expected code lengths for each symbol - static const HuffTable expected[] = { - {.code = 0, .length = 3}, - {.code = 1, .length = 3}, - {.code = 2, .length = 3}, - {.code = 3, .length = 3}, - {.code = 4, .length = 1}, + static const uint8_t expected[MAX_LEN + 1] = { + [1] = 1, [3] = 4, }; // Actual code lengths - HuffTable distincts[5]; + uint8_t len_counts[MAX_LEN + 1]; // Build optimal huffman tree using an internal function, to allow for // smaller-than-normal test cases. This mutates val_counts by sorting. - mjpegenc_huffman_compute_bits(val_counts, distincts, - FF_ARRAY_ELEMS(distincts), 3); + mjpegenc_huffman_compute_bits(val_counts, len_counts, + FF_ARRAY_ELEMS(val_counts), MAX_LEN); - for (i = 0; i < FF_ARRAY_ELEMS(distincts); i++) { - if (distincts[i].code != expected[i].code || - distincts[i].length != expected[i].length) { + for (unsigned i = 1; i < FF_ARRAY_ELEMS(len_counts); i++) { + if (len_counts[i] != expected[i]) { fprintf(stderr, "Built huffman does not equal expectations. " - "Expected: code %d probability %d, " - "Actual: code %d probability %d\n", - expected[i].code, expected[i].length, - distincts[i].code, distincts[i].length); + "Expected: %d codes of length %u, " + "Actual: %d codes of length %u\n", + (int)expected[i], i, + (int)len_counts[i], i); + ret = 1; + } + } + for (unsigned i = 1; i < FF_ARRAY_ELEMS(val_counts); ++i) { + if (val_counts[i - 1].prob > val_counts[i].prob) { + fprintf(stderr, "Probability table not ordered ascendingly. " + "val_counts[%u] == %d, val_counts[%u] == %d\n", + i - 1, val_counts[i - 1].prob, i, val_counts[i].prob); ret = 1; } } diff --git a/tests/ref/fate/jpg-icc b/tests/ref/fate/jpg-icc index ee1aca4df1..e12373e953 100644 --- a/tests/ref/fate/jpg-icc +++ b/tests/ref/fate/jpg-icc @@ -1,5 +1,5 @@ -5c83d22a628d01c095704f58328f63c9 *tests/data/fate/jpg-icc.mjpeg -11016 tests/data/fate/jpg-icc.mjpeg +4d8f3d93f55267cc90bd1d2a94cfa84f *tests/data/fate/jpg-icc.mjpeg +11011 tests/data/fate/jpg-icc.mjpeg #tb 0: 1/25 #media_type 0: video #codec_id 0: rawvideo @@ -19,7 +19,7 @@ best_effort_timestamp_time=0.000000 duration=1 duration_time=0.040000 pkt_pos=0 -pkt_size=11016 +pkt_size=11011 width=128 height=128 crop_top=0 diff --git a/tests/ref/lavf/jpg b/tests/ref/lavf/jpg index 1420d46c6c..723dce0118 100644 --- a/tests/ref/lavf/jpg +++ b/tests/ref/lavf/jpg @@ -1,3 +1,3 @@ -64885ae70c3450b50196ce687a672dbe *tests/data/images/jpg/02.jpg -26062 tests/data/images/jpg/02.jpg +c7b9382883d021b6535096f58d83c72c *tests/data/images/jpg/02.jpg +26057 tests/data/images/jpg/02.jpg tests/data/images/jpg/%02d.jpg CRC=0x1c357a3e diff --git a/tests/ref/lavf/smjpeg b/tests/ref/lavf/smjpeg index 832b8e99a6..c305cefac8 100644 --- a/tests/ref/lavf/smjpeg +++ b/tests/ref/lavf/smjpeg @@ -1,3 +1,3 @@ -659757345ce01f8a5c4c1373bd073d41 *tests/data/lavf/lavf.smjpeg -728268 tests/data/lavf/lavf.smjpeg +9278aa4b2eafa6b863fc6085b43abd8d *tests/data/lavf/lavf.smjpeg +728177 tests/data/lavf/lavf.smjpeg tests/data/lavf/lavf.smjpeg CRC=0x29d58fb8 diff --git a/tests/ref/seek/lavf-jpg b/tests/ref/seek/lavf-jpg index 78e8255fac..e069b85139 100644 --- a/tests/ref/seek/lavf-jpg +++ b/tests/ref/seek/lavf-jpg @@ -1,4 +1,4 @@ -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: -1 size: 25633 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: -1 size: 25629 ret:-EINVAL st:-1 flags:0 ts:-1.000000 ret:-EINVAL st:-1 flags:1 ts: 1.894167 ret:-EINVAL st: 0 flags:0 ts: 0.800000 @@ -6,7 +6,7 @@ ret:-EINVAL st: 0 flags:1 ts:-0.320000 ret:-EINVAL st:-1 flags:0 ts: 2.576668 ret:-EINVAL st:-1 flags:1 ts: 1.470835 ret: 0 st: 0 flags:0 ts: 0.360000 -ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos: -1 size: 25312 +ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.360000 pos: -1 size: 25304 ret:-EINVAL st: 0 flags:1 ts:-0.760000 ret:-EINVAL st:-1 flags:0 ts: 2.153336 ret:-EINVAL st:-1 flags:1 ts: 1.047503 @@ -18,7 +18,7 @@ ret:-EINVAL st: 0 flags:0 ts:-0.480000 ret:-EINVAL st: 0 flags:1 ts: 2.400000 ret:-EINVAL st:-1 flags:0 ts: 1.306672 ret: 0 st:-1 flags:1 ts: 0.200839 -ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: -1 size: 25799 +ret: 0 st: 0 flags:1 dts: 0.200000 pts: 0.200000 pos: -1 size: 25798 ret:-EINVAL st: 0 flags:0 ts:-0.920000 ret:-EINVAL st: 0 flags:1 ts: 2.000000 ret:-EINVAL st:-1 flags:0 ts: 0.883340 @@ -26,5 +26,5 @@ ret:-EINVAL st:-1 flags:1 ts:-0.222493 ret:-EINVAL st: 0 flags:0 ts: 2.680000 ret:-EINVAL st: 0 flags:1 ts: 1.560000 ret: 0 st:-1 flags:0 ts: 0.460008 -ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: -1 size: 25489 +ret: 0 st: 0 flags:1 dts: 0.480000 pts: 0.480000 pos: -1 size: 25488 ret:-EINVAL st:-1 flags:1 ts:-0.645825 diff --git a/tests/ref/vsynth/vsynth1-mjpeg-422 b/tests/ref/vsynth/vsynth1-mjpeg-422 index 095f2b2497..83e8640d5a 100644 --- a/tests/ref/vsynth/vsynth1-mjpeg-422 +++ b/tests/ref/vsynth/vsynth1-mjpeg-422 @@ -1,4 +1,4 @@ -eb0f7dc02efd5f4ab7ea3c73617801a3 *tests/data/fate/vsynth1-mjpeg-422.avi -1611674 tests/data/fate/vsynth1-mjpeg-422.avi +c3f2891bf340dc5bafde50feb236a55d *tests/data/fate/vsynth1-mjpeg-422.avi +1611442 tests/data/fate/vsynth1-mjpeg-422.avi bc62d53cce32a595a0c6e9c318e4ce3e *tests/data/fate/vsynth1-mjpeg-422.out.rawvideo stddev: 7.45 PSNR: 30.69 MAXDIFF: 63 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth1-mjpeg-444 b/tests/ref/vsynth/vsynth1-mjpeg-444 index 77609c5a45..6f5915e308 100644 --- a/tests/ref/vsynth/vsynth1-mjpeg-444 +++ b/tests/ref/vsynth/vsynth1-mjpeg-444 @@ -1,4 +1,4 @@ -bfde676dad356228f77aa319f046db8a *tests/data/fate/vsynth1-mjpeg-444.avi -1831606 tests/data/fate/vsynth1-mjpeg-444.avi +6df1ef3c72846b43b7bbaaed6272e433 *tests/data/fate/vsynth1-mjpeg-444.avi +1831046 tests/data/fate/vsynth1-mjpeg-444.avi c51ee467d03242dfc1e4536b0485d00f *tests/data/fate/vsynth1-mjpeg-444.out.rawvideo stddev: 7.37 PSNR: 30.77 MAXDIFF: 63 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth1-mjpeg-huffman b/tests/ref/vsynth/vsynth1-mjpeg-huffman index 7591c5b393..1154ac0353 100644 --- a/tests/ref/vsynth/vsynth1-mjpeg-huffman +++ b/tests/ref/vsynth/vsynth1-mjpeg-huffman @@ -1,4 +1,4 @@ -827f4da674de95b4227aadda8dbdaa77 *tests/data/fate/vsynth1-mjpeg-huffman.avi -1391436 tests/data/fate/vsynth1-mjpeg-huffman.avi +f42cd955597ade05b81c7e4b0fc35e5a *tests/data/fate/vsynth1-mjpeg-huffman.avi +1391116 tests/data/fate/vsynth1-mjpeg-huffman.avi f46e58458ea57495a494650f7153829d *tests/data/fate/vsynth1-mjpeg-huffman.out.rawvideo stddev: 7.87 PSNR: 30.21 MAXDIFF: 63 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth1-mjpeg-trell-huffman b/tests/ref/vsynth/vsynth1-mjpeg-trell-huffman index f54b3663f1..d1660ff4fe 100644 --- a/tests/ref/vsynth/vsynth1-mjpeg-trell-huffman +++ b/tests/ref/vsynth/vsynth1-mjpeg-trell-huffman @@ -1,4 +1,4 @@ -e097a118dd37b3ab5607278d7b675ea3 *tests/data/fate/vsynth1-mjpeg-trell-huffman.avi -1361112 tests/data/fate/vsynth1-mjpeg-trell-huffman.avi +af1ed7a7536b2a84e8b91b2bbbfa4f9c *tests/data/fate/vsynth1-mjpeg-trell-huffman.avi +1360828 tests/data/fate/vsynth1-mjpeg-trell-huffman.avi 548de4f6098cbc3d8b65574bb93faf09 *tests/data/fate/vsynth1-mjpeg-trell-huffman.out.rawvideo stddev: 7.67 PSNR: 30.42 MAXDIFF: 62 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-mjpeg-422 b/tests/ref/vsynth/vsynth2-mjpeg-422 index 4978501f35..3df0f79e5d 100644 --- a/tests/ref/vsynth/vsynth2-mjpeg-422 +++ b/tests/ref/vsynth/vsynth2-mjpeg-422 @@ -1,4 +1,4 @@ -67a35df8ef714568db0362f4dce400fb *tests/data/fate/vsynth2-mjpeg-422.avi -877718 tests/data/fate/vsynth2-mjpeg-422.avi +d1e682a3468093c55b9579b5c2499b14 *tests/data/fate/vsynth2-mjpeg-422.avi +877194 tests/data/fate/vsynth2-mjpeg-422.avi 7fae296bb4290d09971a629040eac072 *tests/data/fate/vsynth2-mjpeg-422.out.rawvideo stddev: 4.69 PSNR: 34.69 MAXDIFF: 55 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-mjpeg-444 b/tests/ref/vsynth/vsynth2-mjpeg-444 index 6321301571..852b261232 100644 --- a/tests/ref/vsynth/vsynth2-mjpeg-444 +++ b/tests/ref/vsynth/vsynth2-mjpeg-444 @@ -1,4 +1,4 @@ -24e04a6e3b645b3314e522cc6b4d3fb7 *tests/data/fate/vsynth2-mjpeg-444.avi -1005214 tests/data/fate/vsynth2-mjpeg-444.avi +b8d276c9017a3018266db3e35e8592df *tests/data/fate/vsynth2-mjpeg-444.avi +1004766 tests/data/fate/vsynth2-mjpeg-444.avi fbeca59755dfb2b5e2f2c9781756d634 *tests/data/fate/vsynth2-mjpeg-444.out.rawvideo stddev: 4.57 PSNR: 34.93 MAXDIFF: 55 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-mjpeg-huffman b/tests/ref/vsynth/vsynth2-mjpeg-huffman index 17601e20f8..b447820f11 100644 --- a/tests/ref/vsynth/vsynth2-mjpeg-huffman +++ b/tests/ref/vsynth/vsynth2-mjpeg-huffman @@ -1,4 +1,4 @@ -2a959ad89469d88894d03dc9ce83e8b9 *tests/data/fate/vsynth2-mjpeg-huffman.avi -792950 tests/data/fate/vsynth2-mjpeg-huffman.avi +abca59bd27519877a448c508c046df46 *tests/data/fate/vsynth2-mjpeg-huffman.avi +792444 tests/data/fate/vsynth2-mjpeg-huffman.avi fe498d9edaa947e435e4f353c194ef3d *tests/data/fate/vsynth2-mjpeg-huffman.out.rawvideo stddev: 4.87 PSNR: 34.37 MAXDIFF: 55 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-mjpeg-trell-huffman b/tests/ref/vsynth/vsynth2-mjpeg-trell-huffman index de7a029315..b521c5a615 100644 --- a/tests/ref/vsynth/vsynth2-mjpeg-trell-huffman +++ b/tests/ref/vsynth/vsynth2-mjpeg-trell-huffman @@ -1,4 +1,4 @@ -d6a09ff8a46c297934496d8089cdd2a2 *tests/data/fate/vsynth2-mjpeg-trell-huffman.avi -734896 tests/data/fate/vsynth2-mjpeg-trell-huffman.avi +d16eaa6ece27bc10715f24509334c402 *tests/data/fate/vsynth2-mjpeg-trell-huffman.avi +734736 tests/data/fate/vsynth2-mjpeg-trell-huffman.avi 8612dfee87e32268f6f533188a097785 *tests/data/fate/vsynth2-mjpeg-trell-huffman.out.rawvideo stddev: 5.03 PSNR: 34.10 MAXDIFF: 67 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth3-mjpeg-422 b/tests/ref/vsynth/vsynth3-mjpeg-422 index cc2bbe2224..79a3c6b0ae 100644 --- a/tests/ref/vsynth/vsynth3-mjpeg-422 +++ b/tests/ref/vsynth/vsynth3-mjpeg-422 @@ -1,4 +1,4 @@ -9aa0f90dac7ef923a0be0d93ca7dc039 *tests/data/fate/vsynth3-mjpeg-422.avi -52620 tests/data/fate/vsynth3-mjpeg-422.avi +9377167f1597b9b2d0e3a8abb5244eba *tests/data/fate/vsynth3-mjpeg-422.avi +52614 tests/data/fate/vsynth3-mjpeg-422.avi 7c64ab866add1e59fe7c34feed006df1 *tests/data/fate/vsynth3-mjpeg-422.out.rawvideo stddev: 8.22 PSNR: 29.82 MAXDIFF: 58 bytes: 86700/ 86700 diff --git a/tests/ref/vsynth/vsynth3-mjpeg-444 b/tests/ref/vsynth/vsynth3-mjpeg-444 index 1149953b62..b45f147587 100644 --- a/tests/ref/vsynth/vsynth3-mjpeg-444 +++ b/tests/ref/vsynth/vsynth3-mjpeg-444 @@ -1,4 +1,4 @@ -c063ea1cddfc2a360b92f05d1811ea93 *tests/data/fate/vsynth3-mjpeg-444.avi -53954 tests/data/fate/vsynth3-mjpeg-444.avi +ff215eb039c4d2ef34b891c25ffe0fbd *tests/data/fate/vsynth3-mjpeg-444.avi +53958 tests/data/fate/vsynth3-mjpeg-444.avi 8bbbfeab8b3f6788719e1f0f77ce8612 *tests/data/fate/vsynth3-mjpeg-444.out.rawvideo stddev: 8.21 PSNR: 29.84 MAXDIFF: 58 bytes: 86700/ 86700 diff --git a/tests/ref/vsynth/vsynth3-mjpeg-huffman b/tests/ref/vsynth/vsynth3-mjpeg-huffman index 00a4cef6f0..6557375115 100644 --- a/tests/ref/vsynth/vsynth3-mjpeg-huffman +++ b/tests/ref/vsynth/vsynth3-mjpeg-huffman @@ -1,4 +1,4 @@ -62a7732fcb9288a7223671b23ce06fa0 *tests/data/fate/vsynth3-mjpeg-huffman.avi -48170 tests/data/fate/vsynth3-mjpeg-huffman.avi +52b7c3884957ac81fe1b8e1ecf40827b *tests/data/fate/vsynth3-mjpeg-huffman.avi +48152 tests/data/fate/vsynth3-mjpeg-huffman.avi a6daba607898eb6e1a172c2368084a67 *tests/data/fate/vsynth3-mjpeg-huffman.out.rawvideo stddev: 8.61 PSNR: 29.43 MAXDIFF: 58 bytes: 86700/ 86700 diff --git a/tests/ref/vsynth/vsynth3-mjpeg-trell-huffman b/tests/ref/vsynth/vsynth3-mjpeg-trell-huffman index 965a9e7792..dc7b8c9866 100644 --- a/tests/ref/vsynth/vsynth3-mjpeg-trell-huffman +++ b/tests/ref/vsynth/vsynth3-mjpeg-trell-huffman @@ -1,4 +1,4 @@ -7cbc02d85a572b5ea871c014ce27ab4c *tests/data/fate/vsynth3-mjpeg-trell-huffman.avi +fcfa06df101f91ac19793dc90c4c918c *tests/data/fate/vsynth3-mjpeg-trell-huffman.avi 47834 tests/data/fate/vsynth3-mjpeg-trell-huffman.avi 07822517628b20d54621df666ea79af3 *tests/data/fate/vsynth3-mjpeg-trell-huffman.out.rawvideo stddev: 8.27 PSNR: 29.78 MAXDIFF: 55 bytes: 86700/ 86700 diff --git a/tests/ref/vsynth/vsynth_lena-mjpeg-422 b/tests/ref/vsynth/vsynth_lena-mjpeg-422 index bb862da006..4bc815e5d7 100644 --- a/tests/ref/vsynth/vsynth_lena-mjpeg-422 +++ b/tests/ref/vsynth/vsynth_lena-mjpeg-422 @@ -1,4 +1,4 @@ -494812cc00c2d51df2d9cbc03dc9eecd *tests/data/fate/vsynth_lena-mjpeg-422.avi -707466 tests/data/fate/vsynth_lena-mjpeg-422.avi +778be0c8ee9c030aa2838bf249874082 *tests/data/fate/vsynth_lena-mjpeg-422.avi +707170 tests/data/fate/vsynth_lena-mjpeg-422.avi 16d2be35266d303dff3361e4535e8dd8 *tests/data/fate/vsynth_lena-mjpeg-422.out.rawvideo stddev: 4.18 PSNR: 35.70 MAXDIFF: 49 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth_lena-mjpeg-444 b/tests/ref/vsynth/vsynth_lena-mjpeg-444 index cef6dd9eec..a04537a094 100644 --- a/tests/ref/vsynth/vsynth_lena-mjpeg-444 +++ b/tests/ref/vsynth/vsynth_lena-mjpeg-444 @@ -1,4 +1,4 @@ -52996e606d20fe34c327a206be066091 *tests/data/fate/vsynth_lena-mjpeg-444.avi -807472 tests/data/fate/vsynth_lena-mjpeg-444.avi +a48b1f2d17264bce552cfcd920df1ea9 *tests/data/fate/vsynth_lena-mjpeg-444.avi +807190 tests/data/fate/vsynth_lena-mjpeg-444.avi 0db1c1942d750b107acf2acfbe08eacb *tests/data/fate/vsynth_lena-mjpeg-444.out.rawvideo stddev: 4.05 PSNR: 35.96 MAXDIFF: 49 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth_lena-mjpeg-huffman b/tests/ref/vsynth/vsynth_lena-mjpeg-huffman index 5f5e19bb67..6445f22ca4 100644 --- a/tests/ref/vsynth/vsynth_lena-mjpeg-huffman +++ b/tests/ref/vsynth/vsynth_lena-mjpeg-huffman @@ -1,4 +1,4 @@ -d8b968d6ecaa83bb120eb0dd08c3f6df *tests/data/fate/vsynth_lena-mjpeg-huffman.avi -635642 tests/data/fate/vsynth_lena-mjpeg-huffman.avi +80bf47172b96ad68be829c4f46073299 *tests/data/fate/vsynth_lena-mjpeg-huffman.avi +635256 tests/data/fate/vsynth_lena-mjpeg-huffman.avi 095f88a721813c2a1c34b26303c1139a *tests/data/fate/vsynth_lena-mjpeg-huffman.out.rawvideo stddev: 4.33 PSNR: 35.40 MAXDIFF: 49 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth_lena-mjpeg-trell-huffman b/tests/ref/vsynth/vsynth_lena-mjpeg-trell-huffman index 2eb1658363..9bfb7be751 100644 --- a/tests/ref/vsynth/vsynth_lena-mjpeg-trell-huffman +++ b/tests/ref/vsynth/vsynth_lena-mjpeg-trell-huffman @@ -1,4 +1,4 @@ -8217aef7ee16709b2c0591a9a28d9bb8 *tests/data/fate/vsynth_lena-mjpeg-trell-huffman.avi -582648 tests/data/fate/vsynth_lena-mjpeg-trell-huffman.avi +dc66c0700d50235965fd3fabdcb9a214 *tests/data/fate/vsynth_lena-mjpeg-trell-huffman.avi +582552 tests/data/fate/vsynth_lena-mjpeg-trell-huffman.avi 8c5c05e82a959ccc8b3c4ba8e4123bbe *tests/data/fate/vsynth_lena-mjpeg-trell-huffman.out.rawvideo stddev: 4.51 PSNR: 35.04 MAXDIFF: 60 bytes: 7603200/ 7603200