* Rewrote MediaDefs.h and MediaEncoder.h

* Moved MediaKit errors into Errors.h


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32779 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2009-08-28 12:42:36 +00:00
parent 81506b0100
commit d4d27fac86
3 changed files with 774 additions and 465 deletions
+98 -72
View File
@@ -1,91 +1,117 @@
#ifndef MEDIAENCODER_H
#define MEDIAENCODER_H
/*
* Copyright 2009, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _MEDIA_ENCODER_H
#define _MEDIA_ENCODER_H
#include <MediaDefs.h>
#include <MediaFormats.h>
namespace BPrivate {
class Encoder;
class _AddonManager;
}
//namespace BPrivate {
// class Encoder;
// class _AddonManager;
//}
class BMediaEncoder {
public:
BMediaEncoder();
BMediaEncoder(const media_format *output_format);
BMediaEncoder(const media_codec_info *mci);
virtual ~BMediaEncoder();
status_t InitCheck() const;
public:
BMediaEncoder();
BMediaEncoder(
const media_format* outputFormat);
BMediaEncoder(const media_codec_info* info);
virtual ~BMediaEncoder();
status_t SetTo(const media_format *output_format);
status_t SetTo(const media_codec_info *mci);
status_t SetFormat(media_format *input_format,
media_format *output_format,
media_file_format *mfi = NULL);
status_t Encode(const void *buffer, int64 frame_count,
media_encode_info *info);
status_t GetEncodeParameters(encode_parameters *parameters) const;
status_t SetEncodeParameters(encode_parameters *parameters);
protected:
virtual status_t WriteChunk(const void *chunk_data, size_t chunk_len,
media_encode_info *info) = 0;
virtual status_t AddTrackInfo(uint32 code, const char *data, size_t size);
status_t InitCheck() const;
private:
// unimplemented
BMediaEncoder(const BMediaEncoder &);
BMediaEncoder & operator=(const BMediaEncoder &);
status_t SetTo(const media_format* outputFormat);
status_t SetTo(const media_codec_info* info);
status_t SetFormat(media_format* inputFormat,
media_format* outputFormat,
media_file_format* fileFormat = NULL);
static status_t write_chunk(void *classptr, const void *chunk_data,
size_t chunk_len, media_encode_info *info);
void Init();
void ReleaseEncoder();
status_t Encode(const void* buffer, int64 frameCount,
media_encode_info* info);
BPrivate::_AddonManager *fEncoderMgr;
BPrivate::Encoder *fEncoder;
int32 fEncoderID;
bool fFormatValid;
bool fEncoderStarted;
status_t fInitStatus;
status_t GetEncodeParameters(
encode_parameters* parameters) const;
status_t SetEncodeParameters(
encode_parameters* parameters);
/* fbc data and virtuals */
protected:
virtual status_t WriteChunk(const void* buffer, size_t size,
media_encode_info* info) = 0;
uint32 _reserved_BMediaEncoder_[32];
virtual status_t AddTrackInfo(uint32 code, const char* data,
size_t size);
virtual status_t _Reserved_BMediaEncoder_0(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_1(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_2(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_3(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_4(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_5(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_6(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_7(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_8(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_9(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_10(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_11(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_12(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_13(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_14(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_15(int32 arg, ...);
// TODO: Needs Perform() method for FBC!
private:
// FBC padding and forbidden methods
virtual status_t _Reserved_BMediaEncoder_0(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_1(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_2(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_3(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_4(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_5(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_6(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_7(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_8(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_9(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_10(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_11(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_12(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_13(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_14(int32 arg, ...);
virtual status_t _Reserved_BMediaEncoder_15(int32 arg, ...);
BMediaEncoder(const BMediaEncoder& other);
BMediaEncoder& operator=(const BMediaEncoder& other);
private:
static status_t write_chunk(void* classPtr,
const void* buffer, size_t size,
media_encode_info* info);
void Init();
void ReleaseEncoder();
// BPrivate::_AddonManager* fEncoderMgr;
// BPrivate::Encoder* fEncoder;
uint32 _reserved_was_fEncoderMgr;
uint32 _reserved_was_fEncoder;
int32 fEncoderID;
bool fFormatValid;
bool fEncoderStarted;
status_t fInitStatus;
uint32 _reserved_BMediaEncoder_[32];
};
class BMediaBufferEncoder: public BMediaEncoder {
public:
BMediaBufferEncoder();
BMediaBufferEncoder(const media_format *output_format);
BMediaBufferEncoder(const media_codec_info *mci);
status_t EncodeToBuffer(void *output_buffer, size_t *output_size,
const void *input_buffer, int64 frame_count,
media_encode_info *info);
protected:
virtual status_t WriteChunk(const void *chunk_data, size_t chunk_len,
media_encode_info *info);
public:
BMediaBufferEncoder();
BMediaBufferEncoder(
const media_format* outputFormat);
BMediaBufferEncoder(
const media_codec_info* info);
void *fBuffer;
int32 fBufferSize;
status_t EncodeToBuffer(void* outputBuffer,
size_t* _size, const void* inputBuffer,
int64 frameCount, media_encode_info* info);
protected:
virtual status_t WriteChunk(const void* buffer, size_t size,
media_encode_info* info);
protected:
void* fBuffer;
int32 fBufferSize;
};
#endif
#endif // _MEDIA_ENCODER_H