mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-19 05:40:56 +00:00
avcodec/smacker: Don't zero-initialize unnecessarily
With the possible exception of the "last" values when decoding video, only the part that is actually initialized with values derived from the bitstream is used afterwards, so it is unnecessary to zero everything at the beginning. This is also no problem for the "last" values at all, because they are reset for every frame anyway. While at it, use sizeof(variable) instead of sizeof(type). Performance increased slightly: For GCC, from 2068389 decicycles per call to smka_decode_frame() when decoding the sample from ticket #2425 to 2053758 decicycles; for Clang, from 1534188 to 1523153 decicycles. Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
2db38ae734
commit
77c9507253
@ -197,14 +197,15 @@ static int smacker_decode_header_tree(SmackVContext *smk, GetBitContext *gb, int
|
||||
for (int i = 0; i < 2; i++) {
|
||||
h[i].length = 256;
|
||||
h[i].current = 0;
|
||||
h[i].bits = av_mallocz(256 * sizeof(h[i].bits[0]));
|
||||
h[i].lengths = av_mallocz(256 * sizeof(h[i].lengths[0]));
|
||||
h[i].values = av_mallocz(256 * sizeof(h[i].values[0]));
|
||||
h[i].bits = av_malloc(256 * sizeof(h[i].bits[0]));
|
||||
h[i].lengths = av_malloc(256 * sizeof(h[i].lengths[0]));
|
||||
h[i].values = av_malloc(256 * sizeof(h[i].values[0]));
|
||||
if (!h[i].bits || !h[i].lengths || !h[i].values) {
|
||||
err = AVERROR(ENOMEM);
|
||||
goto error;
|
||||
}
|
||||
if (!get_bits1(gb)) {
|
||||
h[i].values[0] = 0;
|
||||
av_log(smk->avctx, AV_LOG_ERROR, "Skipping %s bytes tree\n",
|
||||
i ? "high" : "low");
|
||||
continue;
|
||||
@ -242,7 +243,7 @@ static int smacker_decode_header_tree(SmackVContext *smk, GetBitContext *gb, int
|
||||
|
||||
huff.length = (size + 3) >> 2;
|
||||
huff.current = 0;
|
||||
huff.values = av_mallocz_array(huff.length + 3, sizeof(huff.values[0]));
|
||||
huff.values = av_malloc_array(huff.length + 3, sizeof(huff.values[0]));
|
||||
if (!huff.values) {
|
||||
err = AVERROR(ENOMEM);
|
||||
goto error;
|
||||
@ -645,9 +646,9 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data,
|
||||
for(i = 0; i < (1 << (bits + stereo)); i++) {
|
||||
h[i].length = 256;
|
||||
h[i].current = 0;
|
||||
h[i].bits = av_mallocz(256 * 4);
|
||||
h[i].lengths = av_mallocz(256 * sizeof(int));
|
||||
h[i].values = av_mallocz(256 * sizeof(int));
|
||||
h[i].bits = av_malloc(256 * sizeof(h[i].bits));
|
||||
h[i].lengths = av_malloc(256 * sizeof(h[i].lengths));
|
||||
h[i].values = av_malloc(256 * sizeof(h[i].values));
|
||||
if (!h[i].bits || !h[i].lengths || !h[i].values) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto error;
|
||||
|
Loading…
Reference in New Issue
Block a user