| Index: source/libvpx/webmenc.h
|
| ===================================================================
|
| --- source/libvpx/webmenc.h (revision 0)
|
| +++ source/libvpx/webmenc.h (revision 0)
|
| @@ -0,0 +1,87 @@
|
| +/*
|
| + * Copyright (c) 2013 The WebM project authors. All Rights Reserved.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license
|
| + * that can be found in the LICENSE file in the root of the source
|
| + * tree. An additional intellectual property rights grant can be found
|
| + * in the file PATENTS. All contributing project authors may
|
| + * be found in the AUTHORS file in the root of the source tree.
|
| + */
|
| +#ifndef WEBMENC_H_
|
| +#define WEBMENC_H_
|
| +
|
| +#include <stdio.h>
|
| +#include <stdlib.h>
|
| +
|
| +#if defined(_MSC_VER)
|
| +/* MSVS doesn't define off_t */
|
| +typedef __int64 off_t;
|
| +#else
|
| +#include <stdint.h>
|
| +#endif
|
| +
|
| +#include "tools_common.h"
|
| +#include "vpx/vpx_encoder.h"
|
| +
|
| +typedef off_t EbmlLoc;
|
| +
|
| +struct cue_entry {
|
| + unsigned int time;
|
| + uint64_t loc;
|
| +};
|
| +
|
| +struct EbmlGlobal {
|
| + int debug;
|
| +
|
| + FILE *stream;
|
| + int64_t last_pts_ms;
|
| + vpx_rational_t framerate;
|
| +
|
| + /* These pointers are to the start of an element */
|
| + off_t position_reference;
|
| + off_t seek_info_pos;
|
| + off_t segment_info_pos;
|
| + off_t track_pos;
|
| + off_t cue_pos;
|
| + off_t cluster_pos;
|
| +
|
| + /* This pointer is to a specific element to be serialized */
|
| + off_t track_id_pos;
|
| +
|
| + /* These pointers are to the size field of the element */
|
| + EbmlLoc startSegment;
|
| + EbmlLoc startCluster;
|
| +
|
| + uint32_t cluster_timecode;
|
| + int cluster_open;
|
| +
|
| + struct cue_entry *cue_list;
|
| + unsigned int cues;
|
| +};
|
| +
|
| +/* Stereo 3D packed frame format */
|
| +typedef enum stereo_format {
|
| + STEREO_FORMAT_MONO = 0,
|
| + STEREO_FORMAT_LEFT_RIGHT = 1,
|
| + STEREO_FORMAT_BOTTOM_TOP = 2,
|
| + STEREO_FORMAT_TOP_BOTTOM = 3,
|
| + STEREO_FORMAT_RIGHT_LEFT = 11
|
| +} stereo_format_t;
|
| +
|
| +void write_webm_seek_element(struct EbmlGlobal *ebml,
|
| + unsigned int id,
|
| + off_t pos);
|
| +
|
| +void write_webm_file_header(struct EbmlGlobal *glob,
|
| + const vpx_codec_enc_cfg_t *cfg,
|
| + const struct vpx_rational *fps,
|
| + stereo_format_t stereo_fmt,
|
| + unsigned int fourcc);
|
| +
|
| +void write_webm_block(struct EbmlGlobal *glob,
|
| + const vpx_codec_enc_cfg_t *cfg,
|
| + const vpx_codec_cx_pkt_t *pkt);
|
| +
|
| +void write_webm_file_footer(struct EbmlGlobal *glob, int hash);
|
| +
|
| +#endif // WEBMENC_H_
|
|
|