vfs: check userland buffers before reading them.
[haiku.git] / docs / develop / media / MediaFileProducerAddOn.h
blobc37ba13e7d410636aece1a4de5b4fc7db90f9656
1 // A MediaFileProducerAddOn is an add-on
2 // that can make MediaFileProducer nodes
4 #if !defined(_MEDIA_FILE_PRODUCER_ADD_ON_H)
5 #define _MEDIA_FILE_PRODUCER_ADD_ON_H
7 #include <MediaDefs.h>
8 #include <MediaAddOn.h>
10 class MediaFileProducerAddOn :
11 public BMediaAddOn
13 public:
14 MediaFileProducerAddOn();
15 virtual ~MediaFileProducerAddOn();
17 /**************************/
18 /* begin from BMediaAddOn */
19 public:
20 virtual ~BMediaAddOn();
22 virtual status_t InitCheck(
23 const char ** out_failure_text);
24 virtual int32 CountFlavors();
25 virtual status_t GetFlavorAt(
26 int32 n,
27 const flavor_info ** out_info);
28 virtual BMediaNode * InstantiateNodeFor(
29 const flavor_info * info,
30 BMessage * config,
31 status_t * out_error);
32 virtual status_t GetConfigurationFor(
33 BMediaNode * your_node,
34 BMessage * into_message);
35 virtual bool WantsAutoStart();
36 virtual 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 */
42 virtual status_t SniffRef(
43 const entry_ref & file,
44 BMimeType * io_mime_type,
45 float * out_quality,
46 int32 * out_internal_id);
47 virtual 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.
51 virtual 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
60 virtual 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);
68 /* end from BMediaAddOn */
69 /************************/
71 private:
73 MediaFileProducerAddOn( /* private unimplemented */
74 const MediaFileProducerAddOn & clone);
75 MediaFileProducerAddOn & operator=(
76 const MediaFileProducerAddOn & clone);
78 /* Mmmh, stuffing! */
79 virtual status_t _Reserved_MediaFileProducerAddOn_0(void *);
80 virtual status_t _Reserved_MediaFileProducerAddOn_1(void *);
81 virtual status_t _Reserved_MediaFileProducerAddOn_2(void *);
82 virtual status_t _Reserved_MediaFileProducerAddOn_3(void *);
83 virtual status_t _Reserved_MediaFileProducerAddOn_4(void *);
84 virtual status_t _Reserved_MediaFileProducerAddOn_5(void *);
85 virtual status_t _Reserved_MediaFileProducerAddOn_6(void *);
86 virtual status_t _Reserved_MediaFileProducerAddOn_7(void *);
87 virtual status_t _Reserved_MediaFileProducerAddOn_8(void *);
88 virtual status_t _Reserved_MediaFileProducerAddOn_9(void *);
89 virtual status_t _Reserved_MediaFileProducerAddOn_10(void *);
90 virtual status_t _Reserved_MediaFileProducerAddOn_11(void *);
91 virtual status_t _Reserved_MediaFileProducerAddOn_12(void *);
92 virtual status_t _Reserved_MediaFileProducerAddOn_13(void *);
93 virtual status_t _Reserved_MediaFileProducerAddOn_14(void *);
94 virtual status_t _Reserved_MediaFileProducerAddOn_15(void *);
96 uint32 _reserved_media_file_node_[16];
100 #if BUILDING_MEDIA_FILE_PRODUCER__ADD_ON
101 extern "C" _EXPORT BMediaAddOn * make_media_file_producer_add_on(image_id you);
102 #endif
104 #endif /* _MEDIA_FILE_PRODUCER_ADD_ON_H */