diff --git a/headers/os/media/MediaDecoder.h b/headers/os/media/MediaDecoder.h index 12748810f0..d00ab17b52 100644 --- a/headers/os/media/MediaDecoder.h +++ b/headers/os/media/MediaDecoder.h @@ -7,6 +7,12 @@ namespace BPrivate { class Decoder; } +namespace BPrivate { + namespace media { + class Decoder; + class DecoderPlugin; + } +} class BMediaDecoder { public: @@ -42,14 +48,16 @@ class BMediaDecoder { static status_t next_chunk(void *classptr, void **chunkData, size_t *chunkLen, media_header *mh); void ReleaseDecoder(); - BPrivate::Decoder *fDecoder; + BPrivate::media::Decoder *fDecoder; int32 fDecoderID; + BPrivate::media::DecoderPlugin *fDecoderPlugin; + int32 fDecoderPluginID; status_t fInitStatus; /* fbc data and virtuals */ - uint32 _reserved_BMediaDecoder_[32]; + uint32 _reserved_BMediaDecoder_[30]; virtual status_t _Reserved_BMediaDecoder_0(int32 arg, ...); virtual status_t _Reserved_BMediaDecoder_1(int32 arg, ...); diff --git a/headers/private/media/DecoderPlugin.h b/headers/private/media/DecoderPlugin.h index b94d47efc6..3082b9cab3 100644 --- a/headers/private/media/DecoderPlugin.h +++ b/headers/private/media/DecoderPlugin.h @@ -4,12 +4,17 @@ #include #include #include "MediaPlugin.h" -#include "MediaExtractor.h" class AddOnManager; namespace BPrivate { namespace media { +class ChunkProvider { +public: + virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, + media_header *mediaHeader) = 0; +}; + class Decoder { public: @@ -31,12 +36,9 @@ public: status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, media_header *mediaHeader); + void Setup(ChunkProvider *provider); private: - friend class MediaExtractor; - - void Setup(MediaExtractor *extractor, int32 stream); - MediaExtractor * fExtractor; - int32 fStream; + ChunkProvider * fChunkProvider; };