1// Copyright (c) 2010 The WebM project authors. All Rights Reserved. 2// 3// Use of this source code is governed by a BSD-style license 4// that can be found in the LICENSE file in the root of the source 5// tree. An additional intellectual property rights grant can be found 6// in the file PATENTS. All contributing project authors may 7// be found in the AUTHORS file in the root of the source tree. 8 9 10 11#include "EbmlIDs.h" 12#include "EbmlBufferWriter.h" 13#include "WebMElement.h" 14 15#include <stdio.h> 16int main(int argc, char *argv[]) { 17 // init the datatype we're using for ebml output 18 unsigned char data[8192]; 19 EbmlGlobal ebml; 20 ebml.buf = data; 21 ebml.offset = 0; 22 ebml.length = 8192; 23 24 writeHeader(&ebml); 25 { 26 EbmlLoc startSegment; 27 Ebml_StartSubElement(&ebml, &startSegment, Segment); // segment 28 { 29 // segment info 30 EbmlLoc startInfo; 31 Ebml_StartSubElement(&ebml, &startInfo, Info); 32 Ebml_SerializeString(&ebml, 0x4D80, "muxingAppLibMkv"); 33 Ebml_SerializeString(&ebml, 0x5741, "writingAppLibMkv"); 34 Ebml_EndSubElement(&ebml, &startInfo); 35 } 36 37 { 38 EbmlLoc trackStart; 39 Ebml_StartSubElement(&ebml, &trackStart, Tracks); 40 writeVideoTrack(&ebml, 1, 1, "V_MS/VFW/FOURCC", 320, 240, 29.97); 41 // writeAudioTrack(&ebml,2,1, "A_VORBIS", 32000, 1, NULL, 0); 42 Ebml_EndSubElement(&ebml, &trackStart); 43 } 44 45 { 46 EbmlLoc clusterStart; 47 Ebml_StartSubElement(&ebml, &clusterStart, Cluster); // cluster 48 Ebml_SerializeUnsigned(&ebml, Timecode, 0); 49 50 unsigned char someData[4] = {1, 2, 3, 4}; 51 writeSimpleBlock(&ebml, 1, 0, 1, 0, 0, someData, 4); 52 Ebml_EndSubElement(&ebml, &clusterStart); 53 } // end cluster 54 Ebml_EndSubElement(&ebml, &startSegment); 55 } 56 57 // dump ebml stuff to the file 58 FILE *file_out = fopen("test.mkv", "wb"); 59 size_t bytesWritten = fwrite(data, 1, ebml.offset, file_out); 60 fclose(file_out); 61 return 0; 62}