haiku/headers/private/media/DecoderPlugin.h
Marcus Overhagen 0d1adad317 Media Codec API just got a visit from the coding style police.
We now use "const" for the chunk buffer pointer returned by GetNextChunk,
because the buffer is not supposed to be modified by the codec.
size_t is used for the size where applicable. This matches BMediaDecoder.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13361 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-30 00:24:06 +00:00

61 lines
1.5 KiB
C++

#ifndef _DECODER_PLUGIN_H
#define _DECODER_PLUGIN_H
#include <MediaTrack.h>
#include <MediaFormats.h>
#include "MediaPlugin.h"
class AddOnManager;
namespace BPrivate { namespace media {
class ChunkProvider {
public:
virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) = 0;
};
class Decoder
{
public:
Decoder();
virtual ~Decoder();
virtual void GetCodecInfo(media_codec_info *codecInfo) = 0;
// Setup get's called with the info data from Reader::GetStreamInfo
virtual status_t Setup(media_format *ioEncodedFormat, const void *infoBuffer, size_t infoSize) = 0;
virtual status_t NegotiateOutputFormat(media_format *ioDecodedFormat) = 0;
virtual status_t Seek(uint32 seekTo,
int64 seekFrame, int64 *frame,
bigtime_t seekTime, bigtime_t *time) = 0;
virtual status_t Decode(void *buffer, int64 *frameCount,
media_header *mediaHeader, media_decode_info *info = 0) = 0;
status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader);
void Setup(ChunkProvider *provider);
private:
ChunkProvider * fChunkProvider;
};
class DecoderPlugin : public virtual MediaPlugin
{
public:
DecoderPlugin();
virtual Decoder *NewDecoder(uint index) = 0;
virtual status_t GetSupportedFormats(media_format ** formats, size_t * count) = 0;
};
} } // namespace BPrivate::media
using namespace BPrivate::media;
#endif