1 #ifndef MEDIADECODER_H 2 #define MEDIADECODER_H 3 4 #include <MediaDefs.h> 5 #include <MediaFormats.h> 6 7 namespace BPrivate { 8 class Decoder; 9 } 10 namespace BPrivate { 11 namespace media { 12 class Decoder; 13 class DecoderPlugin; 14 } 15 } 16 17 class BMediaDecoder { 18 public: 19 BMediaDecoder(); 20 BMediaDecoder(const media_format *in_format, 21 const void *info = NULL, size_t info_size = 0); 22 BMediaDecoder(const media_codec_info *mci); 23 virtual ~BMediaDecoder(); 24 status_t InitCheck() const; 25 26 status_t SetTo(const media_format *in_format, 27 const void *info = NULL, size_t info_size = 0); 28 status_t SetTo(const media_codec_info *mci); 29 status_t SetInputFormat(const media_format *in_format, 30 const void *in_info = NULL, size_t in_size = 0); 31 status_t SetOutputFormat(media_format *output_format); 32 // Set output format to closest acceptable format, returns the 33 // format used. 34 status_t Decode(void *out_buffer, int64 *out_frameCount, 35 media_header *out_mh, media_decode_info *info); 36 status_t GetDecoderInfo(media_codec_info *out_info) const; 37 38 protected: 39 virtual status_t GetNextChunk(const void **chunkData, size_t *chunkLen, 40 media_header *mh) = 0; 41 42 private: 43 44 // unimplemented 45 BMediaDecoder(const BMediaDecoder &); 46 BMediaDecoder & operator=(const BMediaDecoder &); 47 48 status_t AttachToDecoder(); 49 50 BPrivate::media::Decoder *fDecoder; 51 status_t fInitStatus; 52 53 /* fbc data and virtuals */ 54 55 uint32 _reserved_BMediaDecoder_[33]; 56 57 virtual status_t _Reserved_BMediaDecoder_0(int32 arg, ...); 58 virtual status_t _Reserved_BMediaDecoder_1(int32 arg, ...); 59 virtual status_t _Reserved_BMediaDecoder_2(int32 arg, ...); 60 virtual status_t _Reserved_BMediaDecoder_3(int32 arg, ...); 61 virtual status_t _Reserved_BMediaDecoder_4(int32 arg, ...); 62 virtual status_t _Reserved_BMediaDecoder_5(int32 arg, ...); 63 virtual status_t _Reserved_BMediaDecoder_6(int32 arg, ...); 64 virtual status_t _Reserved_BMediaDecoder_7(int32 arg, ...); 65 virtual status_t _Reserved_BMediaDecoder_8(int32 arg, ...); 66 virtual status_t _Reserved_BMediaDecoder_9(int32 arg, ...); 67 virtual status_t _Reserved_BMediaDecoder_10(int32 arg, ...); 68 virtual status_t _Reserved_BMediaDecoder_11(int32 arg, ...); 69 virtual status_t _Reserved_BMediaDecoder_12(int32 arg, ...); 70 virtual status_t _Reserved_BMediaDecoder_13(int32 arg, ...); 71 virtual status_t _Reserved_BMediaDecoder_14(int32 arg, ...); 72 virtual status_t _Reserved_BMediaDecoder_15(int32 arg, ...); 73 }; 74 75 class BMediaBufferDecoder : public BMediaDecoder { 76 public: 77 BMediaBufferDecoder(); 78 BMediaBufferDecoder(const media_format *in_format, 79 const void *info = NULL, size_t info_size = 0); 80 BMediaBufferDecoder(const media_codec_info *mci); 81 status_t DecodeBuffer(const void *input_buffer, size_t input_size, 82 void *out_buffer, int64 *out_frameCount, 83 media_header *out_mh, 84 media_decode_info *info = NULL); 85 protected: 86 virtual status_t GetNextChunk(const void **chunkData, size_t *chunkLen, 87 media_header *mh); 88 const void *fBuffer; 89 int32 fBufferSize; 90 }; 91 92 #endif 93 94