From 22526c1f557a72b3285d295bd8b30c40eb65d437 Mon Sep 17 00:00:00 2001 From: Vittorio Giovara Date: Thu, 9 Apr 2015 18:12:30 +0200 Subject: Canopus HQ/HQA decoder Based on work by Kostya Shishkov . Signed-off-by: Vittorio Giovara --- libavcodec/hq_hqa.h | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 libavcodec/hq_hqa.h (limited to 'libavcodec/hq_hqa.h') diff --git a/libavcodec/hq_hqa.h b/libavcodec/hq_hqa.h new file mode 100644 index 0000000000..6bd858ddf2 --- /dev/null +++ b/libavcodec/hq_hqa.h @@ -0,0 +1,60 @@ +/* + * Canopus HQ/HQA decoder + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_HQ_HQA_H +#define AVCODEC_HQ_HQA_H + +#include + +#include "avcodec.h" +#include "get_bits.h" +#include "bytestream.h" +#include "hq_hqadsp.h" + +#define NUM_HQ_AC_ENTRIES 746 +#define NUM_HQ_PROFILES 22 +#define NUM_HQ_QUANTS 16 + +typedef struct HQContext { + AVCodecContext *avctx; + HQDSPContext hqhqadsp; + GetByteContext gbc; + + VLC hq_ac_vlc; + VLC hqa_cbp_vlc; + DECLARE_ALIGNED(16, int16_t, block)[12][64]; +} HQContext; + +typedef struct HQProfile { + const uint8_t *perm_tab; + int width, height; + int num_slices; + int tab_w, tab_h; +} HQProfile; + +extern const int32_t * const ff_hq_quants[16][2][4]; +extern const HQProfile ff_hq_profile[NUM_HQ_PROFILES]; + +extern const uint8_t ff_hq_ac_skips[NUM_HQ_AC_ENTRIES]; +extern const int16_t ff_hq_ac_syms [NUM_HQ_AC_ENTRIES]; + +int ff_hq_init_vlcs(HQContext *c); + +#endif /* AVCODEC_HQ_HQA_H */ -- cgit v1.2.3