Added BMediaFile::_UnInit() and implemented the two SetTo() methods.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30987 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2009-06-07 19:43:26 +00:00
parent b5ec3e5669
commit b7cf537e50
2 changed files with 32 additions and 9 deletions
+1
View File
@@ -157,6 +157,7 @@ private:
BMediaTrack** fTrackList;
void _Init();
void _UnInit();
void _InitReader(BDataIO* source, int32 flags = 0);
void _InitWriter(BDataIO* source,
const media_file_format* mfi, int32 flags);
+31 -9
View File
@@ -78,16 +78,25 @@ BMediaFile::BMediaFile(const media_file_format* mfi, int32 flags)
status_t
BMediaFile::SetTo(const entry_ref* ref)
{
debugger("BMediaFile::SetTo not implemented");
return B_OK;
CALLED();
_UnInit();
fDeleteSource = true;
_InitReader(new (std::nothrow) BFile(ref, O_RDONLY));
return fErr;
}
status_t
BMediaFile::SetTo(BDataIO* destination)
{
debugger("BMediaFile::SetTo not implemented");
return B_OK;
CALLED();
_UnInit();
_InitReader(destination);
return fErr;
}
@@ -95,11 +104,7 @@ BMediaFile::~BMediaFile()
{
CALLED();
ReleaseAllTracks();
delete[] fTrackList;
delete fExtractor;
if (fDeleteSource)
delete fSource;
_UnInit();
}
@@ -359,6 +364,23 @@ BMediaFile::_Init()
}
void
BMediaFile::_UnInit()
{
ReleaseAllTracks();
delete[] fTrackList;
fTrackList = NULL;
fTrackNum = 0;
delete fExtractor;
fExtractor = NULL;
if (fDeleteSource) {
delete fSource;
fSource = NULL;
fDeleteSource = false;
}
}
void
BMediaFile::_InitReader(BDataIO* source, int32 flags)
{