1// A MediaFileProducerAddOn is an add-on 2// that can make MediaFileProducer nodes 3 4#if !defined(_MEDIA_FILE_PRODUCER_ADD_ON_H) 5#define _MEDIA_FILE_PRODUCER_ADD_ON_H 6 7#include <MediaDefs.h> 8#include <MediaAddOn.h> 9 10class MediaFileProducerAddOn : 11 public BMediaAddOn 12{ 13public: 14MediaFileProducerAddOn(); 15virtual ~MediaFileProducerAddOn(); 16 17/**************************/ 18/* begin from BMediaAddOn */ 19public: 20virtual ~BMediaAddOn(); 21 22virtual status_t InitCheck( 23 const char ** out_failure_text); 24virtual int32 CountFlavors(); 25virtual status_t GetFlavorAt( 26 int32 n, 27 const flavor_info ** out_info); 28virtual BMediaNode * InstantiateNodeFor( 29 const flavor_info * info, 30 BMessage * config, 31 status_t * out_error); 32virtual status_t GetConfigurationFor( 33 BMediaNode * your_node, 34 BMessage * into_message); 35virtual bool WantsAutoStart(); 36virtual status_t AutoStart( 37 int in_count, 38 BMediaNode ** out_node, 39 int32 * out_internal_id, 40 bool * out_has_more); 41/* only implement if you have a B_FILE_INTERFACE node */ 42virtual status_t SniffRef( 43 const entry_ref & file, 44 BMimeType * io_mime_type, 45 float * out_quality, 46 int32 * out_internal_id); 47virtual status_t SniffType( // This is broken if you deal with producers 48 const BMimeType & type, // and consumers both. Use SniffTypeKind instead. 49 float * out_quality, // If you implement SniffTypeKind, this doesn't 50 int32 * out_internal_id); // get called. 51virtual status_t GetFileFormatList( 52 int32 flavor_id, // for this node flavor (if it matters) 53 media_file_format * out_writable_formats, // don't write here if NULL 54 int32 in_write_items, // this many slots in out_writable_formats 55 int32 * out_write_items, // set this to actual # available, even if bigger than in count 56 media_file_format * out_readable_formats, // don't write here if NULL 57 int32 in_read_items, // this many slots in out_readable_formats 58 int32 * out_read_items, // set this to actual # available, even if bigger than in count 59 void * _reserved); // ignore until further notice 60virtual status_t SniffTypeKind( // Like SniffType, but for the specific kind(s) 61 const BMimeType & type, 62 uint64 in_kinds, 63 float * out_quality, 64 int32 * out_internal_id, 65 void * _reserved); 66 67 68/* end from BMediaAddOn */ 69/************************/ 70 71private: 72 73 MediaFileProducerAddOn( /* private unimplemented */ 74 const MediaFileProducerAddOn & clone); 75 MediaFileProducerAddOn & operator=( 76 const MediaFileProducerAddOn & clone); 77 78 /* Mmmh, stuffing! */ 79virtual status_t _Reserved_MediaFileProducerAddOn_0(void *); 80virtual status_t _Reserved_MediaFileProducerAddOn_1(void *); 81virtual status_t _Reserved_MediaFileProducerAddOn_2(void *); 82virtual status_t _Reserved_MediaFileProducerAddOn_3(void *); 83virtual status_t _Reserved_MediaFileProducerAddOn_4(void *); 84virtual status_t _Reserved_MediaFileProducerAddOn_5(void *); 85virtual status_t _Reserved_MediaFileProducerAddOn_6(void *); 86virtual status_t _Reserved_MediaFileProducerAddOn_7(void *); 87virtual status_t _Reserved_MediaFileProducerAddOn_8(void *); 88virtual status_t _Reserved_MediaFileProducerAddOn_9(void *); 89virtual status_t _Reserved_MediaFileProducerAddOn_10(void *); 90virtual status_t _Reserved_MediaFileProducerAddOn_11(void *); 91virtual status_t _Reserved_MediaFileProducerAddOn_12(void *); 92virtual status_t _Reserved_MediaFileProducerAddOn_13(void *); 93virtual status_t _Reserved_MediaFileProducerAddOn_14(void *); 94virtual status_t _Reserved_MediaFileProducerAddOn_15(void *); 95 96 uint32 _reserved_media_file_node_[16]; 97 98}; 99 100#if BUILDING_MEDIA_FILE_PRODUCER__ADD_ON 101extern "C" _EXPORT BMediaAddOn * make_media_file_producer_add_on(image_id you); 102#endif 103 104#endif /* _MEDIA_FILE_PRODUCER_ADD_ON_H */ 105