blob: c255d3de6694c9c29594236a67f53f1784fba7f7 [file] [log] [blame]
Tom Finegan03848f52013-11-05 10:02:18 -08001/*
2 * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10#ifndef WEBMENC_H_
11#define WEBMENC_H_
12
13#include <stdio.h>
14#include <stdlib.h>
15
Tom Finegan03848f52013-11-05 10:02:18 -080016#include "tools_common.h"
17#include "vpx/vpx_encoder.h"
18
James Zern25cfd8e2014-01-18 12:16:11 -080019#ifdef __cplusplus
20extern "C" {
21#endif
22
Vignesh Venkatasubramanian2dcbf8c2014-03-19 11:56:02 -070023/* TODO(vigneshv): Rename this struct */
Tom Finegan03848f52013-11-05 10:02:18 -080024struct EbmlGlobal {
25 int debug;
Tom Finegan03848f52013-11-05 10:02:18 -080026 FILE *stream;
Vignesh Venkatasubramanian2dcbf8c2014-03-19 11:56:02 -070027 int64_t last_pts_ns;
28 void *writer;
29 void *segment;
Tom Finegan03848f52013-11-05 10:02:18 -080030};
31
32/* Stereo 3D packed frame format */
33typedef enum stereo_format {
Tom Finegan1f0c2e72013-11-06 10:02:31 -080034 STEREO_FORMAT_MONO = 0,
Tom Finegan03848f52013-11-05 10:02:18 -080035 STEREO_FORMAT_LEFT_RIGHT = 1,
36 STEREO_FORMAT_BOTTOM_TOP = 2,
37 STEREO_FORMAT_TOP_BOTTOM = 3,
38 STEREO_FORMAT_RIGHT_LEFT = 11
39} stereo_format_t;
40
Tom Finegan03848f52013-11-05 10:02:18 -080041void write_webm_file_header(struct EbmlGlobal *glob,
42 const vpx_codec_enc_cfg_t *cfg,
43 const struct vpx_rational *fps,
44 stereo_format_t stereo_fmt,
Frank Galligan09acd262015-06-01 10:20:58 -070045 unsigned int fourcc,
46 const struct VpxRational *par);
Tom Finegan03848f52013-11-05 10:02:18 -080047
48void write_webm_block(struct EbmlGlobal *glob,
49 const vpx_codec_enc_cfg_t *cfg,
50 const vpx_codec_cx_pkt_t *pkt);
51
Vignesh Venkatasubramanian2dcbf8c2014-03-19 11:56:02 -070052void write_webm_file_footer(struct EbmlGlobal *glob);
Tom Finegan03848f52013-11-05 10:02:18 -080053
James Zern25cfd8e2014-01-18 12:16:11 -080054#ifdef __cplusplus
55} // extern "C"
56#endif
57
Tom Finegan03848f52013-11-05 10:02:18 -080058#endif // WEBMENC_H_