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
This commit is contained in:
Vignesh Venkatasubramanian
2014-03-12 12:18:48 -07:00
parent a9d94ef2c5
commit e369bed319
2 changed files with 8 additions and 3 deletions

View File

@@ -16,7 +16,10 @@
namespace mkvmuxer { 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() { MkvWriter::~MkvWriter() {
@@ -56,10 +59,10 @@ bool MkvWriter::Open(const char* filename) {
} }
void MkvWriter::Close() { void MkvWriter::Close() {
if (file_) { if (file_ && writer_owns_file_) {
fclose(file_); fclose(file_);
file_ = NULL;
} }
file_ = NULL;
} }
int64 MkvWriter::Position() const { int64 MkvWriter::Position() const {

View File

@@ -20,6 +20,7 @@ namespace mkvmuxer {
class MkvWriter : public IMkvWriter { class MkvWriter : public IMkvWriter {
public: public:
MkvWriter(); MkvWriter();
MkvWriter(FILE* fp);
virtual ~MkvWriter(); virtual ~MkvWriter();
// IMkvWriter interface // IMkvWriter interface
@@ -40,6 +41,7 @@ class MkvWriter : public IMkvWriter {
private: private:
// File handle to output file. // File handle to output file.
FILE* file_; FILE* file_;
bool writer_owns_file_;
LIBWEBM_DISALLOW_COPY_AND_ASSIGN(MkvWriter); LIBWEBM_DISALLOW_COPY_AND_ASSIGN(MkvWriter);
}; };