integration of codec API into BMediaFile and BMediaTrack
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5468 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -10,7 +10,9 @@
|
||||
|
||||
|
||||
namespace BPrivate {
|
||||
class MediaExtractor;
|
||||
namespace media {
|
||||
class MediaExtractor;
|
||||
}
|
||||
class _IMPEXP_MEDIA MediaWriter;
|
||||
class _AddonManager;
|
||||
}
|
||||
@@ -60,13 +62,7 @@ public:
|
||||
BMediaFile(BDataIO *destination, // BFile is a BDataIO
|
||||
const media_file_format * mfi,
|
||||
int32 flags=0);
|
||||
|
||||
/* modified by Marcus Overhagen */
|
||||
BMediaFile(const media_file_format * mfi,
|
||||
int32 flags);
|
||||
/* modified by Marcus Overhagen */
|
||||
|
||||
|
||||
|
||||
virtual ~BMediaFile();
|
||||
|
||||
status_t InitCheck() const;
|
||||
@@ -123,7 +119,7 @@ BMediaFile(const media_file_format * mfi,
|
||||
virtual status_t Perform(int32 selector, void * data);
|
||||
|
||||
private:
|
||||
BPrivate::MediaExtractor *fExtractor;
|
||||
BPrivate::media::MediaExtractor *fExtractor;
|
||||
int32 _reserved_BMediaFile_was_fExtractorID;
|
||||
int32 fTrackNum;
|
||||
status_t fErr;
|
||||
@@ -136,7 +132,7 @@ private:
|
||||
|
||||
bool fFileClosed;
|
||||
bool _reserved_was_fUnused[3];
|
||||
BList *fTrackList;
|
||||
BMediaTrack **fTrackList;
|
||||
|
||||
void Init();
|
||||
void InitReader(BDataIO *source, int32 flags = 0);
|
||||
@@ -147,12 +143,12 @@ private:
|
||||
BMediaFile(const BMediaFile&);
|
||||
BMediaFile& operator=(const BMediaFile&);
|
||||
|
||||
BFile *fFile;
|
||||
BDataIO *fSource;
|
||||
|
||||
|
||||
/* fbc data and virtuals */
|
||||
|
||||
uint32 _reserved_BMediaFile_[32];
|
||||
uint32 _reserved_BMediaFile_[32];
|
||||
|
||||
virtual status_t _Reserved_BMediaFile_0(int32 arg, ...);
|
||||
virtual status_t _Reserved_BMediaFile_1(int32 arg, ...);
|
||||
|
||||
@@ -6,10 +6,12 @@
|
||||
#include <MediaFormats.h>
|
||||
|
||||
namespace BPrivate {
|
||||
class MediaExtractor;
|
||||
class Decoder;
|
||||
class MediaWriter;
|
||||
class Encoder;
|
||||
namespace media {
|
||||
class MediaExtractor;
|
||||
class Decoder;
|
||||
class Encoder;
|
||||
}
|
||||
}
|
||||
|
||||
class BView;
|
||||
@@ -192,23 +194,22 @@ public:
|
||||
virtual status_t Perform(int32 selector, void * data);
|
||||
|
||||
private:
|
||||
friend class BMediaFile;
|
||||
|
||||
// for read-only access to a track
|
||||
BMediaTrack(BPrivate::MediaExtractor *extractor, int32 stream);
|
||||
BMediaTrack(BPrivate::media::MediaExtractor *extractor, int32 stream);
|
||||
|
||||
// for write-only access to a BMediaTrack
|
||||
BMediaTrack(BPrivate::MediaWriter *writer,
|
||||
int32 stream_num,
|
||||
media_format *in_format,
|
||||
BPrivate::Encoder *encoder,
|
||||
BPrivate::media::Encoder *encoder,
|
||||
media_codec_info *mci);
|
||||
|
||||
status_t TrackInfo(media_format *out_format, void **out_info,
|
||||
int32 *out_infoSize);
|
||||
|
||||
status_t fErr;
|
||||
BPrivate::Decoder *fDecoder;
|
||||
int32 fDecoderID;
|
||||
BPrivate::MediaExtractor *fExtractor;
|
||||
BPrivate::media::Decoder *fDecoder;
|
||||
int32 __unused__fDecoderID;
|
||||
BPrivate::media::MediaExtractor *fExtractor;
|
||||
|
||||
int32 fStream;
|
||||
int64 fCurFrame;
|
||||
@@ -216,26 +217,21 @@ private:
|
||||
|
||||
media_codec_info fMCI;
|
||||
|
||||
BPrivate::Encoder *fEncoder;
|
||||
BPrivate::media::Encoder *fEncoder;
|
||||
int32 fEncoderID;
|
||||
BPrivate::MediaWriter *fWriter;
|
||||
media_format fWriterFormat;
|
||||
void *fExtractorCookie;
|
||||
void *__unused__fExtractorCookie;
|
||||
|
||||
protected:
|
||||
int32 EncoderID() { return fEncoderID; };
|
||||
|
||||
private:
|
||||
|
||||
friend class BMediaFile;
|
||||
friend class BPrivate::Decoder;
|
||||
|
||||
BMediaTrack();
|
||||
BMediaTrack(const BMediaTrack&);
|
||||
BMediaTrack& operator=(const BMediaTrack&);
|
||||
|
||||
static BPrivate::Decoder * find_decoder(BMediaTrack *track, int32 *id);
|
||||
|
||||
/* fbc data and virtuals */
|
||||
|
||||
uint32 _reserved_BMediaTrack_[31];
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <MediaTrack.h>
|
||||
#include <MediaFormats.h>
|
||||
#include "MediaPlugin.h"
|
||||
#include "ReaderPlugin.h"
|
||||
|
||||
namespace BPrivate { namespace media {
|
||||
|
||||
@@ -14,19 +15,20 @@ public:
|
||||
virtual status_t Setup(media_format *ioEncodedFormat, media_format *ioDecodedFormat,
|
||||
const void *infoBuffer, int32 infoSize) = 0;
|
||||
|
||||
virtual status_t Seek(media_seek_type seekTo,
|
||||
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;
|
||||
media_header *mediaHeader, media_decode_info *info = 0) = 0;
|
||||
|
||||
status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize,
|
||||
media_header *mediaHeader);
|
||||
|
||||
private:
|
||||
void Setup(BMediaTrack *reader);
|
||||
BMediaTrack * fReader;
|
||||
void Setup(Reader *reader, void *readerCookie);
|
||||
Reader * fReader;
|
||||
void * fReaderCookie;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#ifndef _MEDIA_EXTRACTOR_H
|
||||
#define _MEDIA_EXTRACTOR_H
|
||||
|
||||
#include "ReaderPlugin.h"
|
||||
#include "DecoderPlugin.h"
|
||||
|
||||
namespace BPrivate {
|
||||
namespace media {
|
||||
|
||||
class MediaExtractor
|
||||
{
|
||||
public:
|
||||
MediaExtractor(BDataIO * source, int32 flags);
|
||||
~MediaExtractor();
|
||||
|
||||
status_t InitCheck();
|
||||
|
||||
void GetFileFormatInfo(media_file_format *mfi) const;
|
||||
|
||||
int32 StreamCount();
|
||||
|
||||
media_format * EncodedFormat(int32 stream);
|
||||
int64 CountFrames(int32 stream) const;
|
||||
bigtime_t Duration(int32 stream) const;
|
||||
void * InfoBuffer(int32 stream) const;
|
||||
int32 InfoBufferSize(int32 stream) const;
|
||||
|
||||
status_t Seek(int32 stream, uint32 seekTo,
|
||||
int64 *frame, bigtime_t *time);
|
||||
|
||||
status_t GetNextChunk(int32 stream,
|
||||
void **chunkBuffer, int32 *chunkSize,
|
||||
media_header *mediaHeader);
|
||||
|
||||
status_t CreateDecoder(int32 stream, Decoder **decoder, media_codec_info *mci);
|
||||
|
||||
};
|
||||
|
||||
}; // namespace media
|
||||
}; // namespace BPrivate
|
||||
|
||||
using namespace BPrivate::media;
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user