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 WEBMENC_H_
11d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#define WEBMENC_H_
12d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
13d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include <stdio.h>
14d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include <stdlib.h>
15d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
16d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "tools_common.h"
17d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#include "vpx/vpx_encoder.h"
18d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
19dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
20dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgextern "C" {
21dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
22dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
23693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com/* TODO(vigneshv): Rename this struct */
24d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgstruct EbmlGlobal {
25d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  int debug;
26d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  FILE *stream;
27693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com  int64_t last_pts_ns;
28693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com  void *writer;
29693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com  void *segment;
30d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org};
31d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
32d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org/* Stereo 3D packed frame format */
33d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgtypedef enum stereo_format {
34d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  STEREO_FORMAT_MONO = 0,
35d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  STEREO_FORMAT_LEFT_RIGHT = 1,
36d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  STEREO_FORMAT_BOTTOM_TOP = 2,
37d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  STEREO_FORMAT_TOP_BOTTOM = 3,
38d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org  STEREO_FORMAT_RIGHT_LEFT = 11
39d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org} stereo_format_t;
40d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
41d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgvoid write_webm_file_header(struct EbmlGlobal *glob,
42d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                            const vpx_codec_enc_cfg_t *cfg,
43d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                            const struct vpx_rational *fps,
44d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                            stereo_format_t stereo_fmt,
45d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                            unsigned int fourcc);
46d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
47d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.orgvoid write_webm_block(struct EbmlGlobal *glob,
48d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                      const vpx_codec_enc_cfg_t *cfg,
49d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org                      const vpx_codec_cx_pkt_t *pkt);
50d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
51693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comvoid write_webm_file_footer(struct EbmlGlobal *glob);
52d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org
53dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus
54dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org}  // extern "C"
55dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif
56dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org
57d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org#endif  // WEBMENC_H_
58