⛏️ index : haiku.git

/*
 * Copyright 2010, Stephan Aßmus <superstippi@gmx.de>. All rights reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef MEDIA_FILE_TRACK_SUPPLIER_H
#define MEDIA_FILE_TRACK_SUPPLIER_H

#include <vector>

#include <Bitmap.h>
#include <List.h>

#include "TrackSupplier.h"


class BMediaFile;
using std::vector;


class MediaFileTrackSupplier : public TrackSupplier {
public:
								MediaFileTrackSupplier();
	virtual						~MediaFileTrackSupplier();

	virtual	status_t			InitCheck();

	virtual	status_t			GetFileFormatInfo(
									media_file_format* fileFormat);
	virtual	status_t			GetCopyright(BString* copyright);
	virtual	status_t			GetMetaData(BMessage* metaData);

	virtual	int32				CountAudioTracks();
	virtual	int32				CountVideoTracks();
	virtual	int32				CountSubTitleTracks();

	virtual	status_t			GetAudioMetaData(int32 index,
									BMessage* metaData);
	virtual	status_t			GetVideoMetaData(int32 index,
									BMessage* metaData);

	virtual	AudioTrackSupplier*	CreateAudioTrackForIndex(int32 index);
	virtual	VideoTrackSupplier*	CreateVideoTrackForIndex(int32 index);
	virtual	const SubTitles*	SubTitleTrackForIndex(int32 index);

			bool				AddSubTitles(SubTitles* subTitles);

			status_t			AddMediaFile(BMediaFile* mediaFile);

			status_t			AddBitmap(BBitmap* bitmap);

private:
			vector<BMediaFile*>	fMediaFiles;
			vector<BBitmap*>	fBitmaps;
			BList				fAudioTracks;
			BList				fVideoTracks;
			BList				fSubTitleTracks;
};


#endif // MEDIA_FILE_TRACK_SUPPLIER_H