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:
@@ -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 {
|
||||||
|
|||||||
@@ -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);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user