From e369bed31999a3314feb7d5ba0903d6f2290b45e Mon Sep 17 00:00:00 2001 From: Vignesh Venkatasubramanian Date: Wed, 12 Mar 2014 12:18:48 -0700 Subject: [PATCH] Support user ownership of files in MkvWriter Overloading MkvWriter's constructor so that it can wrap a user owned FILE pointer. Doing this so that applications which handle the file opening and closing by themselves don't have to have their own implementation of the IMkvWriter interface. Change-Id: I69c57f3e6927ea13b616c425e3b5f179d2e69215 --- mkvwriter.cpp | 9 ++++++--- mkvwriter.hpp | 2 ++ 2 files changed, 8 insertions(+), 3 deletions(-) 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); };