1*77c1e3ccSAndroid Build Coastguard Worker // Copyright (c) 2012 The WebM project authors. All Rights Reserved. 2*77c1e3ccSAndroid Build Coastguard Worker // 3*77c1e3ccSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license 4*77c1e3ccSAndroid Build Coastguard Worker // that can be found in the LICENSE file in the root of the source 5*77c1e3ccSAndroid Build Coastguard Worker // tree. An additional intellectual property rights grant can be found 6*77c1e3ccSAndroid Build Coastguard Worker // in the file PATENTS. All contributing project authors may 7*77c1e3ccSAndroid Build Coastguard Worker // be found in the AUTHORS file in the root of the source tree. 8*77c1e3ccSAndroid Build Coastguard Worker 9*77c1e3ccSAndroid Build Coastguard Worker #ifndef MKVMUXER_MKVWRITER_H_ 10*77c1e3ccSAndroid Build Coastguard Worker #define MKVMUXER_MKVWRITER_H_ 11*77c1e3ccSAndroid Build Coastguard Worker 12*77c1e3ccSAndroid Build Coastguard Worker #include <stdio.h> 13*77c1e3ccSAndroid Build Coastguard Worker 14*77c1e3ccSAndroid Build Coastguard Worker #include "mkvmuxer/mkvmuxer.h" 15*77c1e3ccSAndroid Build Coastguard Worker #include "mkvmuxer/mkvmuxertypes.h" 16*77c1e3ccSAndroid Build Coastguard Worker 17*77c1e3ccSAndroid Build Coastguard Worker namespace mkvmuxer { 18*77c1e3ccSAndroid Build Coastguard Worker 19*77c1e3ccSAndroid Build Coastguard Worker // Default implementation of the IMkvWriter interface on Windows. 20*77c1e3ccSAndroid Build Coastguard Worker class MkvWriter : public IMkvWriter { 21*77c1e3ccSAndroid Build Coastguard Worker public: 22*77c1e3ccSAndroid Build Coastguard Worker MkvWriter(); 23*77c1e3ccSAndroid Build Coastguard Worker explicit MkvWriter(FILE* fp); 24*77c1e3ccSAndroid Build Coastguard Worker virtual ~MkvWriter(); 25*77c1e3ccSAndroid Build Coastguard Worker 26*77c1e3ccSAndroid Build Coastguard Worker // IMkvWriter interface 27*77c1e3ccSAndroid Build Coastguard Worker virtual int64 Position() const; 28*77c1e3ccSAndroid Build Coastguard Worker virtual int32 Position(int64 position); 29*77c1e3ccSAndroid Build Coastguard Worker virtual bool Seekable() const; 30*77c1e3ccSAndroid Build Coastguard Worker virtual int32 Write(const void* buffer, uint32 length); 31*77c1e3ccSAndroid Build Coastguard Worker virtual void ElementStartNotify(uint64 element_id, int64 position); 32*77c1e3ccSAndroid Build Coastguard Worker 33*77c1e3ccSAndroid Build Coastguard Worker // Creates and opens a file for writing. |filename| is the name of the file 34*77c1e3ccSAndroid Build Coastguard Worker // to open. This function will overwrite the contents of |filename|. Returns 35*77c1e3ccSAndroid Build Coastguard Worker // true on success. 36*77c1e3ccSAndroid Build Coastguard Worker bool Open(const char* filename); 37*77c1e3ccSAndroid Build Coastguard Worker 38*77c1e3ccSAndroid Build Coastguard Worker // Closes an opened file. 39*77c1e3ccSAndroid Build Coastguard Worker void Close(); 40*77c1e3ccSAndroid Build Coastguard Worker 41*77c1e3ccSAndroid Build Coastguard Worker private: 42*77c1e3ccSAndroid Build Coastguard Worker // File handle to output file. 43*77c1e3ccSAndroid Build Coastguard Worker FILE* file_; 44*77c1e3ccSAndroid Build Coastguard Worker bool writer_owns_file_; 45*77c1e3ccSAndroid Build Coastguard Worker 46*77c1e3ccSAndroid Build Coastguard Worker LIBWEBM_DISALLOW_COPY_AND_ASSIGN(MkvWriter); 47*77c1e3ccSAndroid Build Coastguard Worker }; 48*77c1e3ccSAndroid Build Coastguard Worker 49*77c1e3ccSAndroid Build Coastguard Worker } // namespace mkvmuxer 50*77c1e3ccSAndroid Build Coastguard Worker 51*77c1e3ccSAndroid Build Coastguard Worker #endif // MKVMUXER_MKVWRITER_H_ 52