1// MediaDemultiplexerAddOn.cpp
2//
3// Andrew Bachmann, 2002
4//
5// MediaDemultiplexerAddOn is an add-on
6// that can make instances of MediaDemultiplexerNode
7//
8// MediaDemultiplexerNode handles a file and a multistream
9
10
11#include <MediaDefs.h>
12#include <MediaAddOn.h>
13#include <Errors.h>
14
15#include "MediaDemultiplexerNode.h"
16#include "MediaDemultiplexerAddOn.h"
17
18#include <limits.h>
19#include <stdio.h>
20#include <string.h>
21
22// instantiation function
23extern "C" _EXPORT BMediaAddOn * make_media_addon(image_id image)
24{
25	return new MediaDemultiplexerAddOn(image);
26}
27
28// -------------------------------------------------------- //
29// ctor/dtor
30// -------------------------------------------------------- //
31
32MediaDemultiplexerAddOn::~MediaDemultiplexerAddOn()
33{
34}
35
36MediaDemultiplexerAddOn::MediaDemultiplexerAddOn(image_id image) :
37	BMediaAddOn(image)
38{
39	fprintf(stderr,"MediaDemultiplexerAddOn::MediaDemultiplexerAddOn\n");
40	refCount = 0;
41}
42
43// -------------------------------------------------------- //
44// BMediaAddOn impl
45// -------------------------------------------------------- //
46
47status_t MediaDemultiplexerAddOn::InitCheck(
48	const char ** out_failure_text)
49{
50	fprintf(stderr,"MediaDemultiplexerAddOn::InitCheck\n");
51	return B_OK;
52}
53
54int32 MediaDemultiplexerAddOn::CountFlavors()
55{
56	fprintf(stderr,"MediaDemultiplexerAddOn::CountFlavors\n");
57	return 1;
58}
59
60status_t MediaDemultiplexerAddOn::GetFlavorAt(
61	int32 n,
62	const flavor_info ** out_info)
63{
64	fprintf(stderr,"MediaDemultiplexerAddOn::GetFlavorAt\n");
65	if (n != 0) {
66		fprintf(stderr,"<- B_BAD_INDEX\n");
67		return B_BAD_INDEX;
68	}
69	flavor_info * infos = new flavor_info[1];
70	MediaDemultiplexerNode::GetFlavor(&infos[0],n);
71	(*out_info) = infos;
72	return B_OK;
73}
74
75BMediaNode * MediaDemultiplexerAddOn::InstantiateNodeFor(
76				const flavor_info * info,
77				BMessage * config,
78				status_t * out_error)
79{
80	fprintf(stderr,"MediaDemultiplexerAddOn::InstantiateNodeFor\n");
81	MediaDemultiplexerNode * node
82		= new MediaDemultiplexerNode(info,config,this);
83	if (node == 0) {
84		*out_error = B_NO_MEMORY;
85		fprintf(stderr,"<- B_NO_MEMORY\n");
86	} else {
87		*out_error = node->InitCheck();
88	}
89	return node;
90}
91
92status_t MediaDemultiplexerAddOn::GetConfigurationFor(
93				BMediaNode * your_node,
94				BMessage * into_message)
95{
96	fprintf(stderr,"MediaDemultiplexerAddOn::GetConfigurationFor\n");
97	MediaDemultiplexerNode * node
98		= dynamic_cast<MediaDemultiplexerNode*>(your_node);
99	if (node == 0) {
100		fprintf(stderr,"<- B_BAD_TYPE\n");
101		return B_BAD_TYPE;
102	}
103	return node->GetConfigurationFor(into_message);
104}
105
106bool MediaDemultiplexerAddOn::WantsAutoStart()
107{
108	fprintf(stderr,"MediaDemultiplexerAddOn::WantsAutoStart\n");
109	return false;
110}
111
112status_t MediaDemultiplexerAddOn::AutoStart(
113				int in_count,
114				BMediaNode ** out_node,
115				int32 * out_internal_id,
116				bool * out_has_more)
117{
118	fprintf(stderr,"MediaDemultiplexerAddOn::AutoStart\n");
119	return B_OK;
120}
121
122// -------------------------------------------------------- //
123// main
124// -------------------------------------------------------- //
125
126int main(int argc, char *argv[])
127{
128	fprintf(stderr,"main called for MediaDemultiplexerAddOn\n");
129}
130
131// -------------------------------------------------------- //
132// stuffing
133// -------------------------------------------------------- //
134
135status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_0(void *) {};
136status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_1(void *) {};
137status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_2(void *) {};
138status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_3(void *) {};
139status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_4(void *) {};
140status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_5(void *) {};
141status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_6(void *) {};
142status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_7(void *) {};
143status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_8(void *) {};
144status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_9(void *) {};
145status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_10(void *) {};
146status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_11(void *) {};
147status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_12(void *) {};
148status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_13(void *) {};
149status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_14(void *) {};
150status_t MediaDemultiplexerAddOn::_Reserved_MediaDemultiplexerAddOn_15(void *) {};
151