diff --git a/mkvwriter.cpp b/mkvwriter.cpp index 788aa15..8de89a4 100644 --- a/mkvwriter.cpp +++ b/mkvwriter.cpp @@ -16,7 +16,10 @@ namespace mkvmuxer { -MkvWriter::MkvWriter() : file_(NULL) { +MkvWriter::MkvWriter() : file_(NULL), writer_owns_file_(true) { +} + +MkvWriter::MkvWriter(FILE* fp): file_(fp), writer_owns_file_(false) { } MkvWriter::~MkvWriter() { @@ -56,10 +59,10 @@ bool MkvWriter::Open(const char* filename) { } void MkvWriter::Close() { - if (file_) { + if (file_ && writer_owns_file_) { fclose(file_); - file_ = NULL; } + file_ = NULL; } int64 MkvWriter::Position() const { diff --git a/mkvwriter.hpp b/mkvwriter.hpp index fe5c3d4..524e0f7 100644 --- a/mkvwriter.hpp +++ b/mkvwriter.hpp @@ -20,6 +20,7 @@ namespace mkvmuxer { class MkvWriter : public IMkvWriter { public: MkvWriter(); + MkvWriter(FILE* fp); virtual ~MkvWriter(); // IMkvWriter interface @@ -40,6 +41,7 @@ class MkvWriter : public IMkvWriter { private: // File handle to output file. FILE* file_; + bool writer_owns_file_; LIBWEBM_DISALLOW_COPY_AND_ASSIGN(MkvWriter); };