blob: ad30664e31a8b6228102e2ad132211e2a203370d [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 Venkatasubramanian9441f102016-04-25 13:28:24 -070023struct WebmOutputContext {
Tom Finegan03848f52013-11-05 10:02:18 -080024 int debug;
Tom Finegan03848f52013-11-05 10:02:18 -080025 FILE *stream;
Vignesh Venkatasubramanian2dcbf8c2014-03-19 11:56:02 -070026 int64_t last_pts_ns;
27 void *writer;
28 void *segment;
Tom Finegan03848f52013-11-05 10:02:18 -080029};
30
31/* Stereo 3D packed frame format */
32typedef enum stereo_format {
Tom Finegan1f0c2e72013-11-06 10:02:31 -080033 STEREO_FORMAT_MONO = 0,
Tom Finegan03848f52013-11-05 10:02:18 -080034 STEREO_FORMAT_LEFT_RIGHT = 1,
35 STEREO_FORMAT_BOTTOM_TOP = 2,
36 STEREO_FORMAT_TOP_BOTTOM = 3,
37 STEREO_FORMAT_RIGHT_LEFT = 11
38} stereo_format_t;
39
Vignesh Venkatasubramanian9441f102016-04-25 13:28:24 -070040void write_webm_file_header(struct WebmOutputContext *webm_ctx,
Tom Finegan03848f52013-11-05 10:02:18 -080041 const vpx_codec_enc_cfg_t *cfg,
42 const struct vpx_rational *fps,
43 stereo_format_t stereo_fmt,
Frank Galligan09acd262015-06-01 10:20:58 -070044 unsigned int fourcc,
45 const struct VpxRational *par);
Tom Finegan03848f52013-11-05 10:02:18 -080046
Vignesh Venkatasubramanian9441f102016-04-25 13:28:24 -070047void write_webm_block(struct WebmOutputContext *webm_ctx,
Tom Finegan03848f52013-11-05 10:02:18 -080048 const vpx_codec_enc_cfg_t *cfg,
49 const vpx_codec_cx_pkt_t *pkt);
50
Vignesh Venkatasubramanian9441f102016-04-25 13:28:24 -070051void write_webm_file_footer(struct WebmOutputContext *webm_ctx);
Tom Finegan03848f52013-11-05 10:02:18 -080052
James Zern25cfd8e2014-01-18 12:16:11 -080053#ifdef __cplusplus
54} // extern "C"
55#endif
56
Tom Finegan03848f52013-11-05 10:02:18 -080057#endif // WEBMENC_H_