It is accomplished ...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
#ifndef MEDIADECODER_H
|
||||
#define MEDIADECODER_H
|
||||
|
||||
#include <MediaDefs.h>
|
||||
#include <MediaFormats.h>
|
||||
|
||||
namespace BPrivate {
|
||||
class Decoder;
|
||||
}
|
||||
|
||||
class BMediaDecoder {
|
||||
public:
|
||||
BMediaDecoder();
|
||||
BMediaDecoder(const media_format *in_format,
|
||||
const void *info = NULL, size_t info_size = 0);
|
||||
BMediaDecoder(const media_codec_info *mci);
|
||||
virtual ~BMediaDecoder();
|
||||
status_t InitCheck() const;
|
||||
|
||||
status_t SetTo(const media_format *in_format,
|
||||
const void *info = NULL, size_t info_size = 0);
|
||||
status_t SetTo(const media_codec_info *mci);
|
||||
status_t SetInputFormat(const media_format *in_format,
|
||||
const void *in_info = NULL, size_t in_size = 0);
|
||||
status_t SetOutputFormat(media_format *output_format);
|
||||
// Set output format to closest acceptable format, returns the
|
||||
// format used.
|
||||
status_t Decode(void *out_buffer, int64 *out_frameCount,
|
||||
media_header *out_mh, media_decode_info *info);
|
||||
status_t GetDecoderInfo(media_codec_info *out_info) const;
|
||||
|
||||
protected:
|
||||
virtual status_t GetNextChunk(const void **chunkData, size_t *chunkLen,
|
||||
media_header *mh) = 0;
|
||||
|
||||
private:
|
||||
|
||||
// unimplemented
|
||||
BMediaDecoder(const BMediaDecoder &);
|
||||
BMediaDecoder & operator=(const BMediaDecoder &);
|
||||
|
||||
static status_t next_chunk(void *classptr, void **chunkData, size_t *chunkLen, media_header *mh);
|
||||
void ReleaseDecoder();
|
||||
|
||||
BPrivate::Decoder *fDecoder;
|
||||
int32 fDecoderID;
|
||||
status_t fInitStatus;
|
||||
|
||||
|
||||
/* fbc data and virtuals */
|
||||
|
||||
uint32 _reserved_BMediaDecoder_[32];
|
||||
|
||||
virtual status_t _Reserved_BMediaDecoder_0(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_1(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_2(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_3(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_4(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_5(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_6(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_7(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_8(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_9(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_10(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_11(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_12(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_13(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_14(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaDecoder_15(int32 arg, ...);
|
||||
};
|
||||
|
||||
class BMediaBufferDecoder : public BMediaDecoder {
|
||||
public:
|
||||
BMediaBufferDecoder();
|
||||
BMediaBufferDecoder(const media_format *in_format,
|
||||
const void *info = NULL, size_t info_size = 0);
|
||||
BMediaBufferDecoder(const media_codec_info *mci);
|
||||
status_t DecodeBuffer(const void *input_buffer, size_t input_size,
|
||||
void *out_buffer, int64 *out_frameCount,
|
||||
media_header *out_mh,
|
||||
media_decode_info *info = NULL);
|
||||
protected:
|
||||
virtual status_t GetNextChunk(const void **chunkData, size_t *chunkLen,
|
||||
media_header *mh);
|
||||
const void *buffer;
|
||||
int32 buffer_size;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user