#ifndef _MEDIA_FILE_H
#define _MEDIA_FILE_H
#include <image.h>
#include <List.h>
#include <MediaDefs.h>
#include <MediaFormats.h>
#include <StorageDefs.h>
namespace BPrivate {
namespace media {
class MediaExtractor;
class MediaStreamer;
class MediaWriter;
}
class _AddonManager;
}
class BMediaTrack;
class BMessage;
class BParameterWeb;
class BUrl;
class BView;
enum {
B_MEDIA_FILE_REPLACE_MODE = 0x00000001,
B_MEDIA_FILE_NO_READ_AHEAD = 0x00000002,
B_MEDIA_FILE_UNBUFFERED = 0x00000006,
B_MEDIA_FILE_BIG_BUFFERS = 0x00000008
};
class BMediaFile {
public:
BMediaFile(const entry_ref* ref);
BMediaFile(BDataIO* source);
BMediaFile(const entry_ref* ref, int32 flags);
BMediaFile(BDataIO* source, int32 flags);
BMediaFile(const entry_ref* ref,
const media_file_format* mfi,
int32 flags = 0);
BMediaFile(BDataIO* destination,
const media_file_format* mfi,
int32 flags = 0);
BMediaFile(const media_file_format* mfi,
int32 flags = 0);
BMediaFile(const BUrl& url);
BMediaFile(const BUrl& url, int32 flags);
BMediaFile(const BUrl& destination,
const media_file_format* mfi,
int32 flags = 0);
virtual ~BMediaFile();
status_t SetTo(const entry_ref* ref);
status_t SetTo(BDataIO* destination);
status_t SetTo(const BUrl& url);
status_t InitCheck() const;
status_t GetFileFormatInfo(
media_file_format* mfi) const;
status_t GetMetaData(BMessage* _data) const;
const char* Copyright() const;
int32 CountTracks() const;
BMediaTrack* TrackAt(int32 index);
status_t ReleaseTrack(BMediaTrack* track);
status_t ReleaseAllTracks();
BMediaTrack* CreateTrack(media_format* mf,
const media_codec_info* mci,
uint32 flags = 0);
BMediaTrack* CreateTrack(media_format* mf,
uint32 flags = 0);
status_t AddCopyright(const char* data);
status_t AddChunk(int32 type, const void* data,
size_t size);
status_t CommitHeader();
status_t CloseFile();
status_t GetParameterWeb(BParameterWeb** outWeb);
status_t GetParameterValue(int32 id, void* value,
size_t* size);
status_t SetParameterValue(int32 id, const void* value,
size_t size);
BView* GetParameterView();
virtual status_t Perform(int32 selector, void* data);
private:
BParameterWeb* Web();
status_t ControlFile(int32 selector, void* ioData,
size_t size);
BPrivate::media::MediaExtractor* fExtractor;
int32 _reserved_BMediaFile_was_fExtractorID;
int32 fTrackNum;
status_t fErr;
BPrivate::_AddonManager* fEncoderMgr;
BPrivate::_AddonManager* fWriterMgr;
BPrivate::media::MediaWriter* fWriter;
int32 fWriterID;
media_file_format fMFI;
BPrivate::media::MediaStreamer* fStreamer;
bool fFileClosed;
bool fDeleteSource;
bool _reserved_was_fUnused[2];
BMediaTrack** fTrackList;
void _Init();
void _UnInit();
void _InitReader(BDataIO* source,
const BUrl* url = NULL,
int32 flags = 0);
void _InitWriter(BDataIO* target,
const BUrl* url,
const media_file_format* fileFormat,
int32 flags);
void _InitStreamer(const BUrl& url,
BDataIO** adapter);
BMediaFile();
BMediaFile(const BMediaFile&);
BMediaFile& operator=(const BMediaFile&);
BDataIO* fSource;
uint32 _reserved_BMediaFile_[31];
virtual status_t _Reserved_BMediaFile_0(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_1(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_2(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_3(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_4(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_5(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_6(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_7(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_8(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_9(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_10(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_11(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_12(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_13(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_14(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_15(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_16(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_17(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_18(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_19(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_20(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_21(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_22(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_23(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_24(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_25(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_26(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_27(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_28(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_29(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_30(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_31(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_32(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_33(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_34(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_35(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_36(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_37(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_38(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_39(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_40(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_41(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_42(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_43(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_44(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_45(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_46(int32 arg, ...);
virtual status_t _Reserved_BMediaFile_47(int32 arg, ...);
};
#endif