avcodec/mjpegenc: Simplify by moving assert into ff_mjpeg_encode_huffman_close()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer 2017-02-10 00:18:34 +01:00
parent 3e1507a954
commit ce6e7a2db1
3 changed files with 19 additions and 27 deletions

View File

@ -444,22 +444,18 @@ static void ff_mjpeg_build_optimal_huffman(MJpegContext *m)
ff_mjpeg_encode_huffman_increment(ctx[table_id], code); ff_mjpeg_encode_huffman_increment(ctx[table_id], code);
} }
ret = ff_mjpeg_encode_huffman_close(&dc_luminance_ctx, ff_mjpeg_encode_huffman_close(&dc_luminance_ctx,
m->bits_dc_luminance, m->bits_dc_luminance,
m->val_dc_luminance, 12); m->val_dc_luminance, 12);
av_assert0(!ret); ff_mjpeg_encode_huffman_close(&dc_chrominance_ctx,
ret = ff_mjpeg_encode_huffman_close(&dc_chrominance_ctx, m->bits_dc_chrominance,
m->bits_dc_chrominance, m->val_dc_chrominance, 12);
m->val_dc_chrominance, 12); ff_mjpeg_encode_huffman_close(&ac_luminance_ctx,
av_assert0(!ret); m->bits_ac_luminance,
ret = ff_mjpeg_encode_huffman_close(&ac_luminance_ctx, m->val_ac_luminance, 256);
m->bits_ac_luminance, ff_mjpeg_encode_huffman_close(&ac_chrominance_ctx,
m->val_ac_luminance, 256); m->bits_ac_chrominance,
av_assert0(!ret); m->val_ac_chrominance, 256);
ret = ff_mjpeg_encode_huffman_close(&ac_chrominance_ctx,
m->bits_ac_chrominance,
m->val_ac_chrominance, 256);
av_assert0(!ret);
ff_mjpeg_build_huffman_codes(m->huff_size_dc_luminance, ff_mjpeg_build_huffman_codes(m->huff_size_dc_luminance,
m->huff_code_dc_luminance, m->huff_code_dc_luminance,

View File

@ -22,6 +22,7 @@
#include <string.h> #include <string.h>
#include <stdint.h> #include <stdint.h>
#include <stdlib.h> #include <stdlib.h>
#include "libavutil/avassert.h"
#include "libavutil/common.h" #include "libavutil/common.h"
#include "libavutil/error.h" #include "libavutil/error.h"
#include "libavutil/qsort.h" #include "libavutil/qsort.h"
@ -154,10 +155,9 @@ void ff_mjpeg_encode_huffman_init(MJpegEncHuffmanContext *s)
* @param bits output array where the ith character represents how many input values have i length encoding * @param bits output array where the ith character represents how many input values have i length encoding
* @param val output array of input values sorted by their encoded length * @param val output array of input values sorted by their encoded length
* @param max_nval maximum number of distinct input values * @param max_nval maximum number of distinct input values
* @return int Return code, 0 if succeeded.
*/ */
int ff_mjpeg_encode_huffman_close(MJpegEncHuffmanContext *s, uint8_t bits[17], void ff_mjpeg_encode_huffman_close(MJpegEncHuffmanContext *s, uint8_t bits[17],
uint8_t val[], int max_nval) uint8_t val[], int max_nval)
{ {
int i, j; int i, j;
int nval = 0; int nval = 0;
@ -167,9 +167,7 @@ int ff_mjpeg_encode_huffman_close(MJpegEncHuffmanContext *s, uint8_t bits[17],
for (i = 0; i < 256; i++) { for (i = 0; i < 256; i++) {
if (s->val_count[i]) nval++; if (s->val_count[i]) nval++;
} }
if (nval > max_nval) { av_assert0 (nval <= max_nval);
return AVERROR(EINVAL);
}
j = 0; j = 0;
for (i = 0; i < 256; i++) { for (i = 0; i < 256; i++) {
@ -189,6 +187,4 @@ int ff_mjpeg_encode_huffman_close(MJpegEncHuffmanContext *s, uint8_t bits[17],
val[i] = distincts[i].code; val[i] = distincts[i].code;
bits[distincts[i].length]++; bits[distincts[i].length]++;
} }
return 0;
} }

View File

@ -38,9 +38,9 @@ static inline void ff_mjpeg_encode_huffman_increment(MJpegEncHuffmanContext *s,
{ {
s->val_count[val]++; s->val_count[val]++;
} }
int ff_mjpeg_encode_huffman_close(MJpegEncHuffmanContext *s, void ff_mjpeg_encode_huffman_close(MJpegEncHuffmanContext *s,
uint8_t bits[17], uint8_t val[], uint8_t bits[17], uint8_t val[],
int max_nval); int max_nval);
/** /**