chromium/third_party/libvpx/source/libvpx/vp8/encoder/onyx_int.h

/*
 *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef VPX_VP8_ENCODER_ONYX_INT_H_
#define VPX_VP8_ENCODER_ONYX_INT_H_

#include <assert.h>
#include <stdio.h>

#include "vpx_config.h"
#include "vp8/common/onyx.h"
#include "treewriter.h"
#include "tokenize.h"
#include "vp8/common/onyxc_int.h"
#include "vpx_dsp/variance.h"
#include "vpx_util/vpx_pthread.h"
#include "encodemb.h"
#include "vp8/encoder/quantize.h"
#include "vp8/common/entropy.h"
#include "vp8/common/threading.h"
#include "vpx_ports/mem.h"
#include "vpx/internal/vpx_codec_internal.h"
#include "vpx/vp8.h"
#include "mcomp.h"
#include "vp8/common/findnearmv.h"
#include "lookahead.h"
#if CONFIG_TEMPORAL_DENOISING
#include "vp8/encoder/denoising.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

#define MIN_GF_INTERVAL
#define DEFAULT_GF_INTERVAL

#define KEY_FRAME_CONTEXT

#define MAX_LAG_BUFFERS

#define AF_THRESH
#define AF_THRESH2
#define ARF_DECAY_THRESH

#define MIN_THRESHMULT
#define MAX_THRESHMULT

#define GF_ZEROMV_ZBIN_BOOST
#define LF_ZEROMV_ZBIN_BOOST
#define MV_ZBIN_BOOST
#define ZBIN_OQ_MAX

#define VP8_TEMPORAL_ALT_REF

/* vp8 uses 10,000,000 ticks/second as time stamp */
#define TICKS_PER_SEC

CODING_CONTEXT;

FIRSTPASS_STATS;

ONEPASS_FRAMESTATS;

THR_MODES;

SEARCH_METHODS;

SPEED_FEATURES;

MB_ROW_COMP;

TOKENLIST;

ENCODETHREAD_DATA;
LPFTHREAD_DATA;

enum {};

LAYER_CONTEXT;

VP8_COMP;

void vp8_initialize_enc(void);

void vp8_alloc_compressor_data(VP8_COMP *cpi);
int vp8_reverse_trans(int x);
void vp8_reset_temporal_layer_change(VP8_COMP *cpi, const VP8_CONFIG *oxcf,
                                     const int prev_num_layers);
void vp8_init_temporal_layer_context(VP8_COMP *cpi, const VP8_CONFIG *oxcf,
                                     const int layer,
                                     double prev_layer_framerate);
void vp8_update_layer_contexts(VP8_COMP *cpi);
void vp8_save_layer_context(VP8_COMP *cpi);
void vp8_restore_layer_context(VP8_COMP *cpi, const int layer);
void vp8_new_framerate(VP8_COMP *cpi, double framerate);
void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm);

void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest,
                        unsigned char *dest_end, size_t *size);

void vp8_tokenize_mb(VP8_COMP *, MACROBLOCK *, TOKENEXTRA **);

void vp8_set_speed_features(VP8_COMP *cpi);

int vp8_check_drop_buffer(VP8_COMP *cpi);

#ifdef __cplusplus
}  // extern "C"
#endif

#endif  // VPX_VP8_ENCODER_ONYX_INT_H_