1d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org/*
2d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  Copyright (c) 2013 The WebM project authors. All Rights Reserved.
3d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *
4d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  Use of this source code is governed by a BSD-style license
5d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  that can be found in the LICENSE file in the root of the source
6d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  tree. An additional intellectual property rights grant can be found
7d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  in the file PATENTS.  All contributing project authors may
8d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org *  be found in the AUTHORS file in the root of the source tree.
9d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org */
10d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#ifndef VPXENC_H_
11d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#define VPXENC_H_
12d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
13d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vpx/vpx_encoder.h"
14d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
15dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
16dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgextern "C" {
17dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
18dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
19d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgenum TestDecodeFatality {
20d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  TEST_DECODE_OFF,
21d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  TEST_DECODE_FATAL,
22d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  TEST_DECODE_WARN,
23d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org};
24d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
25ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.orgtypedef enum {
26ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org  I420,  // 4:2:0 8+ bit-depth
27ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org  I422,  // 4:2:2 8+ bit-depth
28ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org  I444,  // 4:4:4 8+ bit-depth
29ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org  YV12,  // 4:2:0 with uv flipped, only 8-bit depth
30ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org} ColorInputType;
31ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org
3276e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.orgstruct VpxInterface;
3376e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org
34d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org/* Configuration elements common to all streams. */
35d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgstruct VpxEncoderConfig {
3676e516e2154f353aa02c504bac88afb0f95fefa7johannkoenig@chromium.org  const struct VpxInterface *codec;
37d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int passes;
38d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int pass;
39d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int usage;
40d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int deadline;
41ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org  ColorInputType color_type;
42d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int quiet;
43d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int verbose;
44d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int limit;
45d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int skip_frames;
46d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int show_psnr;
47d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  enum TestDecodeFatality test_decode;
48d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int have_framerate;
49d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  struct vpx_rational framerate;
50d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int out_part;
51d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int debug;
52d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int show_q_hist_buckets;
53d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int show_rate_hist_buckets;
54d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int disable_warnings;
55d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int disable_warning_prompt;
56752cc2ca4ecafe93067e928b40c5485eba97bd7afgalligan@chromium.org  int experimental_bitstream;
57d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org};
58d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
59dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
60dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org}  // extern "C"
61dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
62dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
63d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#endif  // VPXENC_H_
64