1// AbstractFileInterfaceAddOn.h 2// 3// Andrew Bachmann, 2002 4// 5// AbstractFileInterfaceAddOn is an add-on 6// that can make instances of AbstractFileInterfaceNode 7// 8// AbstractFileInterfaceNode handles a file and a multistream 9 10#if !defined(_ABSTRACT_FILE_INTERFACE_ADD_ON_H) 11#define _ABSTRACT_FILE_INTERFACE_ADD_ON_H 12 13#include <MediaDefs.h> 14#include <MediaAddOn.h> 15 16class AbstractFileInterfaceAddOn : 17 public BMediaAddOn 18{ 19public: 20 virtual ~AbstractFileInterfaceAddOn(void); 21 explicit AbstractFileInterfaceAddOn(image_id image); 22 23/**************************/ 24/* begin from BMediaAddOn */ 25public: 26virtual status_t InitCheck( 27 const char ** out_failure_text); 28virtual int32 CountFlavors(void); 29virtual status_t GetFlavorAt( 30 int32 n, 31 const flavor_info ** out_info); 32virtual BMediaNode * InstantiateNodeFor( 33 const flavor_info * info, 34 BMessage * config, 35 status_t * out_error) = 0; 36virtual status_t GetConfigurationFor( 37 BMediaNode * your_node, 38 BMessage * into_message); 39virtual bool WantsAutoStart(void); 40virtual status_t AutoStart( 41 int in_count, 42 BMediaNode ** out_node, 43 int32 * out_internal_id, 44 bool * out_has_more); 45 46/* only implement if you have a B_FILE_INTERFACE node */ 47virtual status_t SniffRef( 48 const entry_ref & file, 49 BMimeType * io_mime_type, 50 float * out_quality, 51 int32 * out_internal_id); 52virtual status_t SniffType( // This is broken if you deal with producers 53 const BMimeType & type, // and consumers both. Use SniffTypeKind instead. 54 float * out_quality, // If you implement SniffTypeKind, this doesn't 55 int32 * out_internal_id); // get called. 56virtual status_t GetFileFormatList( 57 int32 flavor_id, // for this node flavor (if it matters) 58 media_file_format * out_writable_formats, // don't write here if NULL 59 int32 in_write_items, // this many slots in out_writable_formats 60 int32 * out_write_items, // set this to actual # available, even if bigger than in count 61 media_file_format * out_readable_formats, // don't write here if NULL 62 int32 in_read_items, // this many slots in out_readable_formats 63 int32 * out_read_items, // set this to actual # available, even if bigger than in count 64 void * _reserved); // ignore until further notice 65virtual status_t SniffTypeKind( // Like SniffType, but for the specific kind(s) 66 const BMimeType & type, 67 uint64 in_kinds, 68 float * out_quality, 69 int32 * out_internal_id, 70 void * _reserved) = 0; 71virtual status_t SniffTypeKind( // Like SniffType, but for the specific kind(s) 72 const BMimeType & type, 73 uint64 in_kinds, 74 uint64 io_kind, 75 float * out_quality, 76 int32 * out_internal_id, 77 void * _reserved); 78 79 80/* end from BMediaAddOn */ 81/************************/ 82 83private: 84 85 AbstractFileInterfaceAddOn( /* private unimplemented */ 86 const AbstractFileInterfaceAddOn & clone); 87 AbstractFileInterfaceAddOn & operator=( 88 const AbstractFileInterfaceAddOn & clone); 89 90 int32 refCount; 91 92 /* Mmmh, stuffing! */ 93virtual status_t _Reserved_AbstractFileInterfaceAddOn_0(void *); 94virtual status_t _Reserved_AbstractFileInterfaceAddOn_1(void *); 95virtual status_t _Reserved_AbstractFileInterfaceAddOn_2(void *); 96virtual status_t _Reserved_AbstractFileInterfaceAddOn_3(void *); 97virtual status_t _Reserved_AbstractFileInterfaceAddOn_4(void *); 98virtual status_t _Reserved_AbstractFileInterfaceAddOn_5(void *); 99virtual status_t _Reserved_AbstractFileInterfaceAddOn_6(void *); 100virtual status_t _Reserved_AbstractFileInterfaceAddOn_7(void *); 101virtual status_t _Reserved_AbstractFileInterfaceAddOn_8(void *); 102virtual status_t _Reserved_AbstractFileInterfaceAddOn_9(void *); 103virtual status_t _Reserved_AbstractFileInterfaceAddOn_10(void *); 104virtual status_t _Reserved_AbstractFileInterfaceAddOn_11(void *); 105virtual status_t _Reserved_AbstractFileInterfaceAddOn_12(void *); 106virtual status_t _Reserved_AbstractFileInterfaceAddOn_13(void *); 107virtual status_t _Reserved_AbstractFileInterfaceAddOn_14(void *); 108virtual status_t _Reserved_AbstractFileInterfaceAddOn_15(void *); 109 110 uint32 _reserved_abstract_file_interface_add_on_[16]; 111 112}; 113 114#if BUILDING_ABSTRACT_FILE_INTERFACE__ADD_ON 115extern "C" _EXPORT BMediaAddOn * make_abstract_file_interface_add_on(image_id you); 116#endif 117 118#endif /* _ABSTRACT_FILE_INTERFACE_ADD_ON_H */ 119