#if !defined(_MEDIA_FILE_PRODUCER_H)
#define _MEDIA_FILE_PRODUCER_H
#include <MediaDefs.h>
#include <MediaNode.h>
#include <FileInterface.h>
#include <BufferProducer.h>
class MediaFileProducer :
public BFileInterface,
public BBufferProducer
{
protected:
MediaFileProducer();
virtual ~MediaFileProducer();
public:
virtual port_id ControlPort() const;
virtual BMediaAddOn* AddOn(
int32 * internal_id) const = 0;
protected:
virtual void Start(
bigtime_t performance_time);
virtual void Stop(
bigtime_t performance_time,
bool immediate);
virtual void Seek(
bigtime_t media_time,
bigtime_t performance_time);
virtual void SetRunMode(
run_mode mode);
virtual void TimeWarp(
bigtime_t at_real_time,
bigtime_t to_performance_time);
virtual void Preroll();
virtual void SetTimeSource(
BTimeSource * time_source);
public:
virtual status_t HandleMessage(
int32 message,
const void * data,
size_t size);
protected:
virtual status_t RequestCompleted(
const media_request_info & info);
protected:
virtual status_t DeleteHook(BMediaNode * node);
virtual void NodeRegistered();
public:
virtual status_t GetNodeAttributes(
media_node_attribute * outAttributes,
size_t inMaxCount);
virtual status_t AddTimer(
bigtime_t at_performance_time,
int32 cookie);
protected:
virtual status_t GetNextFileFormat(
int32 * cookie,
media_file_format * out_format) = 0;
virtual void DisposeFileFormatCookie(
int32 cookie) = 0;
virtual status_t GetDuration(
bigtime_t * out_time) = 0;
virtual status_t SniffRef(
const entry_ref & file,
char * out_mime_type,
float * out_quality) = 0;
virtual status_t SetRef(
const entry_ref & file,
bool create,
bigtime_t * out_time) = 0;
virtual status_t GetRef(
entry_ref * out_ref,
char * out_mime_type) = 0;
protected:
virtual status_t FormatSuggestionRequested(
media_type type,
int32 quality,
media_format * format) = 0;
virtual status_t FormatProposal(
const media_source & output,
media_format * format) = 0;
virtual status_t FormatChangeRequested(
const media_source & source,
const media_destination & destination,
media_format * io_format,
int32 * _deprecated_) = 0;
virtual status_t GetNextOutput(
int32 * cookie,
media_output * out_output) = 0;
virtual status_t DisposeOutputCookie(
int32 cookie) = 0;
virtual status_t SetBufferGroup(
const media_source & for_source,
BBufferGroup * group) = 0;
virtual status_t VideoClippingChanged(
const media_source & for_source,
int16 num_shorts,
int16 * clip_data,
const media_video_display_info & display,
int32 * _deprecated_);
virtual status_t GetLatency(
bigtime_t * out_lantency);
virtual status_t PrepareToConnect(
const media_source & what,
const media_destination & where,
media_format * format,
media_source * out_source,
char * out_name) = 0;
virtual void Connect(
status_t error,
const media_source & source,
const media_destination & destination,
const media_format & format,
char * io_name) = 0;
virtual void Disconnect(
const media_source & what,
const media_destination & where) = 0;
virtual void LateNoticeReceived(
const media_source & what,
bigtime_t how_much,
bigtime_t performance_time) = 0;
virtual void EnableOutput(
const media_source & what,
bool enabled,
int32 * _deprecated_) = 0;
virtual status_t SetPlayRate(
int32 numer,
int32 denom);
virtual status_t HandleMessage(
int32 message,
const void * data,
size_t size);
virtual void AdditionalBufferRequested(
const media_source & source,
media_buffer_id prev_buffer,
bigtime_t prev_time,
const media_seek_tag * prev_tag);
virtual void LatencyChanged(
const media_source & source,
const media_destination & destination,
bigtime_t new_latency,
uint32 flags);
private:
MediaFileProducer(
const MediaFileProducer & clone);
MediaFileProducer & operator=(
const MediaFileProducer & clone);
virtual status_t _Reserved_MediaFileProducer_0(void *);
virtual status_t _Reserved_MediaFileProducer_1(void *);
virtual status_t _Reserved_MediaFileProducer_2(void *);
virtual status_t _Reserved_MediaFileProducer_3(void *);
virtual status_t _Reserved_MediaFileProducer_4(void *);
virtual status_t _Reserved_MediaFileProducer_5(void *);
virtual status_t _Reserved_MediaFileProducer_6(void *);
virtual status_t _Reserved_MediaFileProducer_7(void *);
virtual status_t _Reserved_MediaFileProducer_8(void *);
virtual status_t _Reserved_MediaFileProducer_9(void *);
virtual status_t _Reserved_MediaFileProducer_10(void *);
virtual status_t _Reserved_MediaFileProducer_11(void *);
virtual status_t _Reserved_MediaFileProducer_12(void *);
virtual status_t _Reserved_MediaFileProducer_13(void *);
virtual status_t _Reserved_MediaFileProducer_14(void *);
virtual status_t _Reserved_MediaFileProducer_15(void *);
uint32 _reserved_media_file_node_[16];
};
#endif