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