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