190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/*
2f71323e297a928af368937089d3ed71239786f86Andreas Huber *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *
4f71323e297a928af368937089d3ed71239786f86Andreas Huber *  Use of this source code is governed by a BSD-style license
5f71323e297a928af368937089d3ed71239786f86Andreas Huber *  that can be found in the LICENSE file in the root of the source
6f71323e297a928af368937089d3ed71239786f86Andreas Huber *  tree. An additional intellectual property rights grant can be found
7f71323e297a928af368937089d3ed71239786f86Andreas Huber *  in the file PATENTS.  All contributing project authors may
8f71323e297a928af368937089d3ed71239786f86Andreas Huber *  be found in the AUTHORS file in the root of the source tree.
990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber */
1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#ifndef __INC_VP8C_INT_H
1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define __INC_VP8C_INT_H
1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
15f71323e297a928af368937089d3ed71239786f86Andreas Huber#include "vpx_config.h"
16f71323e297a928af368937089d3ed71239786f86Andreas Huber#include "vpx/internal/vpx_codec_internal.h"
1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "loopfilter.h"
1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "entropymv.h"
1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "entropy.h"
2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "idct.h"
2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "recon.h"
2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "postproc.h"
2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
24538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber/*#ifdef PACKET_TESTING*/
2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "header.h"
26538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber/*#endif*/
2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/* Create/destroy static data structures. */
2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8_initialize_common(void);
3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define MINQ 0
3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define MAXQ 127
3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#define QINDEX_RANGE (MAXQ + 1)
3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
36f71323e297a928af368937089d3ed71239786f86Andreas Huber#define NUM_YV12_BUFFERS 4
3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertypedef struct frame_contexts
3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_prob bmode_prob [VP8_BINTRAMODES-1];
4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_prob ymode_prob [VP8_YMODES-1];   /* interframe intra mode probs */
4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_prob uv_mode_prob [VP8_UV_MODES-1];
4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_prob sub_mv_ref_prob [VP8_SUBMVREFS-1];
4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_prob coef_probs [BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [vp8_coef_tokens-1];
4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    MV_CONTEXT mvc[2];
46538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    MV_CONTEXT pre_mvc[2];  /* not to caculate the mvcost for the frame if mvc doesn't change. */
4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} FRAME_CONTEXT;
4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertypedef enum
5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ONE_PARTITION  = 0,
5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    TWO_PARTITION  = 1,
5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    FOUR_PARTITION = 2,
5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    EIGHT_PARTITION = 3
5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} TOKEN_PARTITION;
5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertypedef enum
5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    RECON_CLAMP_REQUIRED        = 0,
6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    RECON_CLAMP_NOTREQUIRED     = 1
6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} CLAMP_TYPE;
6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertypedef enum
6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    SIXTAP   = 0,
6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    BILINEAR = 1
6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} INTERPOLATIONFILTERTYPE;
6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertypedef struct VP8_COMMON_RTCD
7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#if CONFIG_RUNTIME_CPU_DETECT
7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_idct_rtcd_vtable_t        idct;
7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_recon_rtcd_vtable_t       recon;
7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_subpix_rtcd_vtable_t      subpix;
7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_loopfilter_rtcd_vtable_t  loopfilter;
7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_postproc_rtcd_vtable_t    postproc;
77538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    int                           flags;
7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#else
7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int unused;
8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} VP8_COMMON_RTCD;
8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertypedef struct VP8Common
8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{
8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    struct vpx_internal_error_info  error;
8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
87538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    DECLARE_ALIGNED(16, short, Y1dequant[QINDEX_RANGE][16]);
88538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    DECLARE_ALIGNED(16, short, Y2dequant[QINDEX_RANGE][16]);
89538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    DECLARE_ALIGNED(16, short, UVdequant[QINDEX_RANGE][16]);
9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Width;
9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int Height;
9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int horiz_scale;
9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int vert_scale;
9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    YUV_TYPE clr_type;
9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    CLAMP_TYPE  clamp_type;
9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    YV12_BUFFER_CONFIG *frame_to_show;
100f71323e297a928af368937089d3ed71239786f86Andreas Huber
101f71323e297a928af368937089d3ed71239786f86Andreas Huber    YV12_BUFFER_CONFIG yv12_fb[NUM_YV12_BUFFERS];
102f71323e297a928af368937089d3ed71239786f86Andreas Huber    int fb_idx_ref_cnt[NUM_YV12_BUFFERS];
103f71323e297a928af368937089d3ed71239786f86Andreas Huber    int new_fb_idx, lst_fb_idx, gld_fb_idx, alt_fb_idx;
104f71323e297a928af368937089d3ed71239786f86Andreas Huber
10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    YV12_BUFFER_CONFIG post_proc_buffer;
10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    YV12_BUFFER_CONFIG temp_scale_frame;
10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
10879f15823c34ae1e423108295e416213200bb280fAndreas Huber    FRAME_TYPE last_frame_type;  /* Save last frame's frame type for loopfilter init checking and motion search. */
10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    FRAME_TYPE frame_type;
11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int show_frame;
11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int frame_flags;
11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int MBs;
11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int mb_rows;
11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int mb_cols;
11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int mode_info_stride;
11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
119538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    /* profile settings */
12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int mb_no_coeff_skip;
12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int no_lpf;
12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int simpler_lpf;
12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int use_bilinear_mc_filter;
12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int full_pixel;
12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int base_qindex;
127538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    int last_kf_gf_q;  /* Q used on the last GF or KF */
12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y1dc_delta_q;
13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y2dc_delta_q;
13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int y2ac_delta_q;
13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int uvdc_delta_q;
13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int uvac_delta_q;
13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned int frames_since_golden;
13690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned int frames_till_alt_ref_frame;
13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    /* We allocate a MODE_INFO struct for each macroblock, together with
13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber       an extra row on top and column on the left to simplify prediction. */
14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    MODE_INFO *mip; /* Base of allocated array */
14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    MODE_INFO *mi;  /* Corresponds to upper left visible macroblock */
14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    INTERPOLATIONFILTERTYPE mcomp_filter_type;
14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    LOOPFILTERTYPE last_filter_type;
14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    LOOPFILTERTYPE filter_type;
14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    loop_filter_info lf_info[MAX_LOOP_FILTER+1];
14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    prototype_loopfilter_block((*lf_mbv));
15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    prototype_loopfilter_block((*lf_mbh));
15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    prototype_loopfilter_block((*lf_bv));
15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    prototype_loopfilter_block((*lf_bh));
15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int filter_level;
15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int last_sharpness_level;
15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int sharpness_level;
15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
157538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    int refresh_last_frame;       /* Two state 0 = NO, 1 = YES */
158538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    int refresh_golden_frame;     /* Two state 0 = NO, 1 = YES */
159538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    int refresh_alt_ref_frame;     /* Two state 0 = NO, 1 = YES */
16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
161538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    int copy_buffer_to_gf;         /* 0 none, 1 Last to GF, 2 ARF to GF */
162538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    int copy_buffer_to_arf;        /* 0 none, 1 Last to ARF, 2 GF to ARF */
16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
164538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    int refresh_entropy_probs;    /* Two state 0 = NO, 1 = YES */
16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
166538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    int ref_frame_sign_bias[MAX_REF_FRAMES];    /* Two state 0, 1 */
16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
168538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    /* Y,U,V,Y2 */
169538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    ENTROPY_CONTEXT_PLANES *above_context;   /* row of context for each plane */
170538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    ENTROPY_CONTEXT_PLANES left_context;  /* (up to) 4 contexts "" */
17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
173538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    /* keyframe block modes are predicted by their above, left neighbors */
17490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_prob kf_bmode_prob [VP8_BINTRAMODES] [VP8_BINTRAMODES] [VP8_BINTRAMODES-1];
17690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_prob kf_ymode_prob [VP8_YMODES-1];  /* keyframe "" */
17790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    vp8_prob kf_uv_mode_prob [VP8_UV_MODES-1];
17890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
17990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
180538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    FRAME_CONTEXT lfc; /* last frame entropy */
181538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber    FRAME_CONTEXT fc;  /* this frame entropy */
18290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    unsigned int current_video_frame;
18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
18590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int near_boffset[3];
18690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    int version;
18790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
18890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    TOKEN_PARTITION multi_token_partition;
18990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
19090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#ifdef PACKET_TESTING
19190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    VP8_HEADER oh;
19290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
19390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    double bitrate;
19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    double framerate;
19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#if CONFIG_RUNTIME_CPU_DETECT
19790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    VP8_COMMON_RTCD rtcd;
19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    struct postproc_state  postproc_state;
20090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} VP8_COMMON;
20190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
20379f15823c34ae1e423108295e416213200bb280fAndreas Huberint vp8_adjust_mb_lf_value(MACROBLOCKD *mbd, int filter_level);
20490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8_init_loop_filter(VP8_COMMON *cm);
205f71323e297a928af368937089d3ed71239786f86Andreas Hubervoid vp8_frame_init_loop_filter(loop_filter_info *lfi, int frame_type);
20690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberextern void vp8_loop_filter_frame(VP8_COMMON *cm,    MACROBLOCKD *mbd,  int filt_val);
20790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#endif
209