History

avcodec/intrax8: Don't pretend to need more than one int16_t[64]

Intrax8 needs only a single block.

Andreas Rheinhardt committed 1 year ago

Commit aa4a5b11 parent 25e4bae4 files · +12 −12Browse files

Unified · Split

4 files
  1. libavcodec/intrax8.c +8 −8
  2. libavcodec/intrax8.h +2 −2
  3. libavcodec/vc1dec.c +1 −1
  4. libavcodec/wmv2dec.c +1 −1
libavcodec/intrax8.c+8−8
@@ -437,7 +437,7 @@ static void x8_ac_compensation(IntraX8Context *const w, const int direction, · 436 unmodified lines
437437 const int dc_level)
438438 {
439439 int t;
440−#define B(x,y) w->block[0][w->idct_permutation[(x) + (y) * 8]]
440+#define B(x,y) w->block[w->idct_permutation[(x) + (y) * 8]]
441441 #define T(x) ((x) * dc_level + 0x8000) >> 16;
442442 switch (direction) {
443443 case 0:
@@ -530,7 +530,7 @@ static int x8_decode_intra_mb(IntraX8Context *const w, const int chroma) · 86 unmodified lines
530530 int sign;
531531
532532 av_assert2(w->orient < 12);
533− w->bdsp.clear_block(w->block[0]);
533+ w->bdsp.clear_block(w->block);
534534
535535 if (chroma)
536536 dc_mode = 2;
@@ -591,7 +591,7 @@ static int x8_decode_intra_mb(IntraX8Context *const w, const int chroma) · 54 unmodified lines
591591 if (use_quant_matrix)
592592 level = (level * quant_table[pos]) >> 8;
593593
594− w->block[0][scantable[pos]] = level;
594+ w->block[scantable[pos]] = level;
595595 } while (!final);
596596 } else { // DC only
597597 if (w->flat_dc && ((unsigned) (dc_level + 1)) < 3) { // [-1; 1]
@@ -613,9 +613,9 @@ static int x8_decode_intra_mb(IntraX8Context *const w, const int chroma) · 15 unmodified lines
613613 zeros_only = dc_level == 0;
614614 }
615615 if (!chroma)
616− w->block[0][0] = dc_level * w->quant;
616+ w->block[0] = dc_level * w->quant;
617617 else
618− w->block[0][0] = dc_level * w->quant_dc_chroma;
618+ w->block[0] = dc_level * w->quant_dc_chroma;
619619
620620 // there is !zero_only check in the original, but dc_level check is enough
621621 if ((unsigned int) (dc_level + 1) >= 3 && (w->edges & 3) != 3) {
@@ -624,7 +624,7 @@ static int x8_decode_intra_mb(IntraX8Context *const w, const int chroma) · 2 unmodified lines
624624 * -> 01'10' 10'10' 00'00' 00'01' 01'11' 11'00 => 0x6A017C */
625625 direction = (0x6A017C >> (w->orient * 2)) & 3;
626626 if (direction != 3) {
627− x8_ac_compensation(w, direction, w->block[0][0]);
627+ x8_ac_compensation(w, direction, w->block[0]);
628628 }
629629 }
630630
@@ -639,7 +639,7 @@ static int x8_decode_intra_mb(IntraX8Context *const w, const int chroma) · 8 unmodified lines
639639 if (!zeros_only)
640640 w->wdsp.idct_add(w->dest[chroma],
641641 w->frame->linesize[!!chroma],
642− w->block[0]);
642+ w->block);
643643
644644 block_placed:
645645 if (!chroma)
@@ -678,7 +678,7 @@ static void x8_init_block_index(IntraX8Context *w, AVFrame *frame) · 32 unmodified lines
678678
679679 av_cold int ff_intrax8_common_init(AVCodecContext *avctx,
680680 IntraX8Context *w,
681− int16_t (*block)[64],
681+ int16_t block[64],
682682 int mb_width, int mb_height)
683683 {
684684 static AVOnce init_static_once = AV_ONCE_INIT;
libavcodec/intrax8.h+2−2
@@ -38,7 +38,7 @@ typedef struct IntraX8Context { · 37 unmodified lines
3838 WMV2DSPContext wdsp;
3939 uint8_t idct_permutation[64];
4040 AVCodecContext *avctx;
41− int16_t (*block)[64];
41+ int16_t *block;
4242
4343 // set by the caller codec
4444 IntraX8DSPContext dsp;
@@ -82,7 +82,7 @@ typedef struct IntraX8Context { · 37 unmodified lines
8282 */
8383 int ff_intrax8_common_init(AVCodecContext *avctx,
8484 IntraX8Context *w,
85− int16_t (*block)[64],
85+ int16_t block[64],
8686 int mb_width, int mb_height);
8787
8888 /**
libavcodec/vc1dec.c+1−1
@@ -420,7 +420,7 @@ static av_cold int vc1_decode_init_alloc_tables(VC1Context *v) · 419 unmodified lines
420420 return AVERROR(ENOMEM);
421421 }
422422
423− ret = ff_intrax8_common_init(s->avctx, &v->x8, s->block,
423+ ret = ff_intrax8_common_init(s->avctx, &v->x8, s->block[0],
424424 s->mb_width, s->mb_height);
425425 if (ret < 0)
426426 return ret;
libavcodec/wmv2dec.c+1−1
@@ -581,7 +581,7 @@ static av_cold int wmv2_decode_init(AVCodecContext *avctx) · 580 unmodified lines
581581
582582 decode_ext_header(w);
583583
584− return ff_intrax8_common_init(avctx, &w->x8, s->block,
584+ return ff_intrax8_common_init(avctx, &w->x8, s->block[0],
585585 s->mb_width, s->mb_height);
586586 }
587587

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t