| OpenBeOS.ExtractorWriterAPI.ProposedAPI.MediaExtractor |
 |
struct media_extract_info {
bigtime_t time_to_extract;
void * file_format_data;
size_t file_format_data_size;
int8 pad[??];
media_extract_info();
}
class BMediaExtractor
{
public:
BMediaExtractor();
// start with a file or other source
BMediaExtractor(const entry_ref * ref, int32 flags = 0);
BMediaExtractor(BPositionIO * source, int32 flags = 0);
// start with a file format specification
BMediaExtractor(const media_file_format * inFormat,
const void * info = NULL, size_t infoSize = 0);
BMediaExtractor(const media_file_format_info * info);
virtual ~BMediaExtractor(void);
status_t InitCheck() const;
status_t SetSource(const entry_ref * ref, int32 flags = 0);
status_t SetSource(BPositionIO * source, int32 flags = 0);
status_t SetTo(const media_file_format * inFormat,
const void * info = NULL, size_t infoSize = 0);
status_t SetTo(const media_file_format_info * info);
status_t SetInputFormat(const media_file_format * inputFormat,
const void * inInfo = NULL, size_t inSize = 0);
// for direct transcoding
status_t SetOutputFormat(media_file_format * outputFormat);
status_t SetDestination(const entry_ref * ref, int32 flags = 0);
status_t SetDestination(BPositionIO * source, int32 flags = 0);
status_t Extract(void * outBuffer, int64 * outCount,
media_header * outHeader,
media_extract_info * outInfo);
status_t GetExtractorInfo(media_file_format_info * outInfo) const;
// convenience methods, just call to GetParameterValue
inline int32 GetDuration() const {
int32 value;
GetParameterValue(B_DURATION,&value),0);
return value;
}
inline int32 GetTrackCount() const {
int32 value;
GetParameterValue(B_TRACK_COUNT,&value,0);
return value;
}
// provides B_TRACK_COUNT, and B_DURATION
// see also BMediaFile::GetParameterValue
virtual status_t GetParameterValue(int32 id, const void * value,
size_t * size) = 0;
// additional configuration parameters
// see also BMediaFile::SetParameterValue
virtual status_t SetParameterValue(int32 id, const void * value,
size_t size);
// the extractor may return a BParameterWeb for browsing
// or configuring the file format's parameters. returns
// NULL if the extractor doesn't support this.
// see also BMediaFile::Web
virtual BParameterWeb * Web(void);
...
protected:
virtual status_t GetNextChunk(const void ** chunkData,
size_t * chunkLength,
media_header * header) = 0;
private:
// unimplemented
BMediaExtractor(const BMediaExtractor &);
BMediaExtractor & operator=(const BMediaExtractor &);
static status_t next_chunk(void *classptr, void**chunkData,
size_t *chunkLen, media_header *mh);
void ReleaseDecoder();
BAddonManager * fExtractorsManager;
BExtractor * fExtractor;
int32 fExtractorID;
status_t fInitStatus;
// gobble gobble
uint32 _reservedBMediaExtractor_[32];
virtual status_t _ReservedBMediaExtractor_0(int 32 arg, ...);
virtual status_t _ReservedBMediaExtractor_1(int 32 arg, ...);
// ....
}
|
|
|