@@ -792,15 +792,14 @@ int ff_cavs_init_top_lines(AVSContext *h)
av_cold int ff_cavs_init(AVCodecContext *avctx)
{
AVSContext *h = avctx->priv_data;
+ uint8_t permutation[64];
ff_blockdsp_init(&h->bdsp);
ff_h264chroma_init(&h->h264chroma, 8);
- ff_idctdsp_init(&h->idsp, avctx);
ff_videodsp_init(&h->vdsp, 8);
ff_cavsdsp_init(&h->cdsp);
- ff_init_scantable_permutation(h->idsp.idct_permutation,
- h->cdsp.idct_perm);
- ff_init_scantable(h->idsp.idct_permutation, &h->scantable, ff_zigzag_direct);
+ ff_init_scantable_permutation(permutation, h->cdsp.idct_perm);
+ ff_permute_scantable(h->permutated_scantable, ff_zigzag_direct, permutation);
h->avctx = avctx;
avctx->pix_fmt = AV_PIX_FMT_YUV420P;
@@ -22,12 +22,16 @@
#ifndef AVCODEC_CAVS_H
#define AVCODEC_CAVS_H
+#include <stddef.h>
+#include <stdint.h>
+
+#include "libavutil/frame.h"
#include "libavutil/mem_internal.h"
+#include "avcodec.h"
#include "cavsdsp.h"
#include "blockdsp.h"
#include "h264chroma.h"
-#include "idctdsp.h"
#include "get_bits.h"
#include "videodsp.h"
@@ -166,7 +170,6 @@ typedef struct AVSContext {
AVCodecContext *avctx;
BlockDSPContext bdsp;
H264ChromaContext h264chroma;
- IDCTDSPContext idsp;
VideoDSPContext vdsp;
CAVSDSPContext cdsp;
GetBitContext gb;
@@ -220,7 +223,7 @@ typedef struct AVSContext {
int qp_fixed;
int pic_qp_fixed;
int cbp;
- ScanTable scantable;
+ uint8_t permutated_scantable[64];
/** intra prediction is done with un-deblocked samples
they are saved here before deblocking the MB */
@@ -521,7 +521,7 @@ static inline int dequant(AVSContext *h, int16_t *level_buf, uint8_t *run_buf,
{
int round = 1 << (shift - 1);
int pos = -1;
- const uint8_t *scantab = h->scantable.permutated;
+ const uint8_t *scantab = h->permutated_scantable;
/* inverse scan and dequantization */
while (--coeff_num >= 0) {
Namely ScanTable.permutated. The rest of the IDCTDSP-API is unused as cavs has its own idct. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/cavs.c | 7 +++---- libavcodec/cavs.h | 9 ++++++--- libavcodec/cavsdec.c | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-)