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
11d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#ifndef VPXSTATS_H_
12d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#define VPXSTATS_H_
13d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
14d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include <stdio.h>
15d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
16d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vpx/vpx_encoder.h"
17d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
18dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
19dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgextern "C" {
20dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
21dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
22d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org/* This structure is used to abstract the different ways of handling
23d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org * first pass statistics
24d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org */
25d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgtypedef struct {
26d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  vpx_fixed_buf_t buf;
27d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int pass;
28d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  FILE *file;
29d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  char *buf_ptr;
30d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  size_t buf_alloc_sz;
31d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org} stats_io_t;
32d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
33d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgint stats_open_file(stats_io_t *stats, const char *fpf, int pass);
34d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgint stats_open_mem(stats_io_t *stats, int pass);
35d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgvoid stats_close(stats_io_t *stats, int last_pass);
36d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgvoid stats_write(stats_io_t *stats, const void *pkt, size_t len);
37d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgvpx_fixed_buf_t stats_get(stats_io_t *stats);
38d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
39dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
40dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org}  // extern "C"
41dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
42dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
43d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#endif  // VPXSTATS_H_
44