/*
|
* $Id$
|
* Copyright (c) 2010-2011, Matroska (non-profit organisation)
|
* All rights reserved.
|
*
|
* Redistribution and use in source and binary forms, with or without
|
* modification, are permitted provided that the following conditions are met:
|
* * Redistributions of source code must retain the above copyright
|
* notice, this list of conditions and the following disclaimer.
|
* * Redistributions in binary form must reproduce the above copyright
|
* notice, this list of conditions and the following disclaimer in the
|
* documentation and/or other materials provided with the distribution.
|
* * Neither the name of the Matroska assocation nor the
|
* names of its contributors may be used to endorse or promote products
|
* derived from this software without specific prior written permission.
|
*
|
* THIS SOFTWARE IS PROVIDED BY the Matroska association ``AS IS'' AND ANY
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
* DISCLAIMED. IN NO EVENT SHALL The Matroska Foundation BE LIABLE FOR ANY
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
*/
|
|
#ifndef LIBMATROSKA2_INTERNAL_H
|
#define LIBMATROSKA2_INTERNAL_H
|
|
/*
|
* ONLY INCLUDE THIS FILE IF YOU PLAN TO CREATE YOUR OWN MATROSKA-BASED CLASS
|
*/
|
|
#include "ebml/ebml_internal.h"
|
|
#define MATROSKA_BLOCK_READ_TRACK 0x180
|
#define MATROSKA_BLOCK_READ_SEGMENTINFO 0x181
|
#if defined(CONFIG_EBML_WRITING)
|
#define MATROSKA_BLOCK_WRITE_TRACK 0x182
|
#define MATROSKA_BLOCK_WRITE_SEGMENTINFO 0x183
|
#endif
|
|
struct matroska_block
|
{
|
ebml_binary Base;
|
timecode_t GlobalTimecode;
|
filepos_t FirstFrameLocation;
|
array SizeList; // int32_t
|
array SizeListIn; // int32_t
|
array Data; // uint8_t
|
array Durations; // timecode_t
|
ebml_master *ReadTrack;
|
ebml_master *ReadSegInfo;
|
#if defined(CONFIG_EBML_WRITING)
|
ebml_master *WriteTrack;
|
ebml_master *WriteSegInfo;
|
#endif
|
bool_t IsKeyframe;
|
bool_t IsDiscardable;
|
bool_t Invisible;
|
bool_t LocalTimecodeUsed;
|
int16_t LocalTimecode;
|
uint16_t TrackNumber;
|
char Lacing;
|
};
|
|
#define MATROSKA_BLOCK_CLASS FOURCC('M','K','B','L')
|
#define MATROSKA_BLOCKGROUP_CLASS FOURCC('M','K','B','G')
|
#define MATROSKA_CUEPOINT_CLASS FOURCC('M','K','C','P')
|
#define MATROSKA_CLUSTER_CLASS FOURCC('M','K','C','U')
|
#define MATROSKA_SEEKPOINT_CLASS FOURCC('M','K','S','K')
|
#define MATROSKA_SEGMENTUID_CLASS FOURCC('M','K','I','D')
|
#define MATROSKA_BIGBINARY_CLASS FOURCC('M','K','B','B')
|
#define MATROSKA_ATTACHMENT_CLASS FOURCC('M','K','A','T')
|
#define MATROSKA_TRACKENTRY_CLASS FOURCC('M','K','T','E')
|
|
#endif /* LIBMATROSKA2_INTERNAL_H */
|