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 {
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 {

View File

@@ -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);
};