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