Media Codec API just got a visit from the coding style police.

We now use "const" for the chunk buffer pointer returned by GetNextChunk,
because the buffer is not supposed to be modified by the codec.
size_t is used for the size where applicable. This matches BMediaDecoder.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13361 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Marcus Overhagen
2005-06-30 00:24:06 +00:00
parent 77a63c75c4
commit 0d1adad317
57 changed files with 211 additions and 208 deletions
+3 -3
View File
@@ -11,7 +11,7 @@ namespace BPrivate { namespace media {
class ChunkProvider { class ChunkProvider {
public: public:
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) = 0; media_header *mediaHeader) = 0;
}; };
@@ -24,7 +24,7 @@ public:
virtual void GetCodecInfo(media_codec_info *codecInfo) = 0; virtual void GetCodecInfo(media_codec_info *codecInfo) = 0;
// Setup get's called with the info data from Reader::GetStreamInfo // Setup get's called with the info data from Reader::GetStreamInfo
virtual status_t Setup(media_format *ioEncodedFormat, const void *infoBuffer, int32 infoSize) = 0; virtual status_t Setup(media_format *ioEncodedFormat, const void *infoBuffer, size_t infoSize) = 0;
virtual status_t NegotiateOutputFormat(media_format *ioDecodedFormat) = 0; virtual status_t NegotiateOutputFormat(media_format *ioDecodedFormat) = 0;
@@ -35,7 +35,7 @@ public:
virtual status_t Decode(void *buffer, int64 *frameCount, virtual status_t Decode(void *buffer, int64 *frameCount,
media_header *mediaHeader, media_decode_info *info = 0) = 0; media_header *mediaHeader, media_decode_info *info = 0) = 0;
status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
void Setup(ChunkProvider *provider); void Setup(ChunkProvider *provider);
+3 -3
View File
@@ -14,8 +14,8 @@ struct stream_info
status_t status; status_t status;
void * cookie; void * cookie;
bool hasCookie; bool hasCookie;
void * infoBuffer; const void * infoBuffer;
int32 infoBufferSize; size_t infoBufferSize;
ChunkCache * chunkCache; ChunkCache * chunkCache;
media_format encodedFormat; media_format encodedFormat;
}; };
@@ -40,7 +40,7 @@ public:
int64 *frame, bigtime_t *time); int64 *frame, bigtime_t *time);
status_t GetNextChunk(int32 stream, status_t GetNextChunk(int32 stream,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
status_t CreateDecoder(int32 stream, Decoder **decoder, media_codec_info *mci); status_t CreateDecoder(int32 stream, Decoder **decoder, media_codec_info *mci);
+2 -2
View File
@@ -27,14 +27,14 @@ public:
virtual status_t FreeCookie(void *cookie) = 0; virtual status_t FreeCookie(void *cookie) = 0;
virtual status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, virtual status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize) = 0; media_format *format, const void **infoBuffer, size_t *infoSize) = 0;
virtual status_t Seek(void *cookie, virtual status_t Seek(void *cookie,
uint32 seekTo, uint32 seekTo,
int64 *frame, bigtime_t *time) = 0; int64 *frame, bigtime_t *time) = 0;
virtual status_t GetNextChunk(void *cookie, virtual status_t GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) = 0; media_header *mediaHeader) = 0;
BDataIO * Source(); BDataIO * Source();
@@ -62,7 +62,7 @@ AC3Decoder::GetCodecInfo(media_codec_info *info)
status_t status_t
AC3Decoder::Setup(media_format *ioEncodedFormat, AC3Decoder::Setup(media_format *ioEncodedFormat,
const void *infoBuffer, int32 infoSize) const void *infoBuffer, size_t infoSize)
{ {
return B_OK; return B_OK;
} }
@@ -34,7 +34,7 @@ public:
void GetCodecInfo(media_codec_info *info); void GetCodecInfo(media_codec_info *info);
status_t Setup(media_format *ioEncodedFormat, status_t Setup(media_format *ioEncodedFormat,
const void *infoBuffer, int32 infoSize); const void *infoBuffer, size_t infoSize);
status_t NegotiateOutputFormat(media_format *ioDecodedFormat); status_t NegotiateOutputFormat(media_format *ioDecodedFormat);
@@ -57,8 +57,8 @@ private:
void * fInputBuffer; void * fInputBuffer;
int fInputBufferSize; int fInputBufferSize;
void * fInputChunk; const void *fInputChunk;
int32 fInputChunkSize; size_t fInputChunkSize;
int fInputChunkOffset; int fInputChunkOffset;
bigtime_t fStartTime; bigtime_t fStartTime;
@@ -319,7 +319,7 @@ aiffReader::FreeCookie(void *cookie)
status_t status_t
aiffReader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, aiffReader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize) media_format *format, const void **infoBuffer, size_t *infoSize)
{ {
*frameCount = fFrameCount; *frameCount = fFrameCount;
*duration = fDuration; *duration = fDuration;
@@ -376,7 +376,7 @@ aiffReader::Seek(void *cookie,
status_t status_t
aiffReader::GetNextChunk(void *cookie, aiffReader::GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
// XXX it might be much better to not return any start_time information for encoded formats here, // XXX it might be much better to not return any start_time information for encoded formats here,
@@ -44,14 +44,14 @@ public:
status_t FreeCookie(void *cookie); status_t FreeCookie(void *cookie);
status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize); media_format *format, const void **infoBuffer, size_t *infoSize);
status_t Seek(void *cookie, status_t Seek(void *cookie,
uint32 seekTo, uint32 seekTo,
int64 *frame, bigtime_t *time); int64 *frame, bigtime_t *time);
status_t GetNextChunk(void *cookie, status_t GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
private: private:
uint32 DecodeFrameRate(void *_80bit_float); uint32 DecodeFrameRate(void *_80bit_float);
@@ -292,7 +292,7 @@ auReader::FreeCookie(void *cookie)
status_t status_t
auReader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, auReader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize) media_format *format, const void **infoBuffer, size_t *infoSize)
{ {
*frameCount = fFrameCount; *frameCount = fFrameCount;
*duration = fDuration; *duration = fDuration;
@@ -349,7 +349,7 @@ auReader::Seek(void *cookie,
status_t status_t
auReader::GetNextChunk(void *cookie, auReader::GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
// XXX it might be much better to not return any start_time information for encoded formats here, // XXX it might be much better to not return any start_time information for encoded formats here,
@@ -44,14 +44,14 @@ public:
status_t FreeCookie(void *cookie); status_t FreeCookie(void *cookie);
status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize); media_format *format, const void **infoBuffer, size_t *infoSize);
status_t Seek(void *cookie, status_t Seek(void *cookie,
uint32 seekTo, uint32 seekTo,
int64 *frame, bigtime_t *time); int64 *frame, bigtime_t *time);
status_t GetNextChunk(void *cookie, status_t GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
BPositionIO *Source() { return fSource; } BPositionIO *Source() { return fSource; }
+15 -15
View File
@@ -97,23 +97,23 @@ avCodec::GetCodecInfo(media_codec_info *mci)
status_t status_t
avCodec::Setup(media_format *input_format, const void *in_info, int32 in_size) avCodec::Setup(media_format *ioEncodedFormat, const void *infoBuffer, size_t infoSize)
{ {
if (input_format->type != B_MEDIA_ENCODED_AUDIO && input_format->type != B_MEDIA_ENCODED_VIDEO) if (ioEncodedFormat->type != B_MEDIA_ENCODED_AUDIO && ioEncodedFormat->type != B_MEDIA_ENCODED_VIDEO)
return B_ERROR; return B_ERROR;
isAudio = (input_format->type == B_MEDIA_ENCODED_AUDIO); isAudio = (ioEncodedFormat->type == B_MEDIA_ENCODED_AUDIO);
if (isAudio && !fOutputBuffer) if (isAudio && !fOutputBuffer)
fOutputBuffer = new char[100000]; fOutputBuffer = new char[100000];
#if DEBUG #if DEBUG
char buffer[1024]; char buffer[1024];
string_for_format(*input_format, buffer, sizeof(buffer)); string_for_format(*ioEncodedFormat, buffer, sizeof(buffer));
PRINT(("[%c] input_format=%s\n", isAudio?('a'):('v'), buffer)); PRINT(("[%c] input_format=%s\n", isAudio?('a'):('v'), buffer));
PRINT(("[%c] in_info_size=%ld\n", isAudio?('a'):('v'), in_size)); PRINT(("[%c] in_info_size=%ld\n", isAudio?('a'):('v'), in_size));
PRINT(("[%c] user_data_type=%08lx\n", isAudio?('a'):('v'), input_format->user_data_type)); PRINT(("[%c] user_data_type=%08lx\n", isAudio?('a'):('v'), ioEncodedFormat->user_data_type));
// PRINT(("[%c] meta_data_size=%ld\n", isAudio?('a'):('v'), input_format->meta_data_size)); // PRINT(("[%c] meta_data_size=%ld\n", isAudio?('a'):('v'), ioEncodedFormat->meta_data_size));
#endif #endif
media_format_description descr; media_format_description descr;
@@ -121,8 +121,8 @@ avCodec::Setup(media_format *input_format, const void *in_info, int32 in_size)
ffcodec_index_in_table = i; ffcodec_index_in_table = i;
uint64 cid; uint64 cid;
if(BMediaFormats().GetCodeFor(*input_format,gCodecTable[i].family,&descr) == B_OK if (BMediaFormats().GetCodeFor(*ioEncodedFormat, gCodecTable[i].family, &descr) == B_OK
&& gCodecTable[i].type == input_format->type) && gCodecTable[i].type == ioEncodedFormat->type)
{ {
PRINT((" codec id = \"%c%c%c%c\"\n", (descr.u.avi.codec >> 24) & 0xff, PRINT((" codec id = \"%c%c%c%c\"\n", (descr.u.avi.codec >> 24) & 0xff,
(descr.u.avi.codec >> 16) & 0xff, (descr.u.avi.codec >> 16) & 0xff,
@@ -159,8 +159,8 @@ avCodec::Setup(media_format *input_format, const void *in_info, int32 in_size)
} }
if (gCodecTable[i].family == B_WAV_FORMAT_FAMILY) { if (gCodecTable[i].family == B_WAV_FORMAT_FAMILY) {
const wave_format_ex *wfmt_data = (const wave_format_ex *)input_format->MetaData(); const wave_format_ex *wfmt_data = (const wave_format_ex *)ioEncodedFormat->MetaData();
int wfmt_size = input_format->MetaDataSize(); int wfmt_size = ioEncodedFormat->MetaDataSize();
if (wfmt_data && wfmt_size) { if (wfmt_data && wfmt_size) {
fBlockAlign = wfmt_data->block_align; fBlockAlign = wfmt_data->block_align;
fExtraDataSize = wfmt_data->extra_size; fExtraDataSize = wfmt_data->extra_size;
@@ -171,7 +171,7 @@ avCodec::Setup(media_format *input_format, const void *in_info, int32 in_size)
} }
} }
fInputFormat = *input_format; fInputFormat = *ioEncodedFormat;
return B_OK; return B_OK;
} }
} }
@@ -377,7 +377,7 @@ avCodec::Decode(void *out_buffer, int64 *out_frameCount,
if (fChunkBufferSize == 0) { if (fChunkBufferSize == 0) {
media_header chunk_mh; media_header chunk_mh;
status_t err; status_t err;
err = GetNextChunk((void **)&fChunkBuffer, &fChunkBufferSize, &chunk_mh); err = GetNextChunk(&fChunkBuffer, &fChunkBufferSize, &chunk_mh);
if (err != B_OK || fChunkBufferSize < 0) { if (err != B_OK || fChunkBufferSize < 0) {
printf("GetNextChunk error\n"); printf("GetNextChunk error\n");
fChunkBufferSize = 0; fChunkBufferSize = 0;
@@ -391,7 +391,7 @@ avCodec::Decode(void *out_buffer, int64 *out_frameCount,
} }
if (fOutputBufferSize == 0) { if (fOutputBufferSize == 0) {
int len, out_size; int len, out_size;
len = avcodec_decode_audio(ffc, (short *)fOutputBuffer, &out_size, (uint8_t *)fChunkBuffer + fChunkBufferOffset, fChunkBufferSize); len = avcodec_decode_audio(ffc, (short *)fOutputBuffer, &out_size, const_cast<uint8_t *>(static_cast<const uint8_t *>(fChunkBuffer)) + fChunkBufferOffset, fChunkBufferSize);
if (len < 0) { if (len < 0) {
printf("########### audio decode error, fChunkBufferSize %ld, fChunkBufferOffset %ld\n", fChunkBufferSize, fChunkBufferOffset); printf("########### audio decode error, fChunkBufferSize %ld, fChunkBufferOffset %ld\n", fChunkBufferSize, fChunkBufferOffset);
out_size = 0; out_size = 0;
@@ -411,8 +411,8 @@ avCodec::Decode(void *out_buffer, int64 *out_frameCount,
media_header chunk_mh; media_header chunk_mh;
status_t err; status_t err;
void *data; const void *data;
int32 size; size_t size;
err = GetNextChunk(&data, &size, &chunk_mh); err = GetNextChunk(&data, &size, &chunk_mh);
if (err != B_OK) { if (err != B_OK) {
+4 -4
View File
@@ -37,8 +37,8 @@ class avCodec : public Decoder
virtual void GetCodecInfo(media_codec_info *mci); virtual void GetCodecInfo(media_codec_info *mci);
virtual status_t Setup(media_format *input_format, virtual status_t Setup(media_format *ioEncodedFormat,
const void *in_info, int32 in_size); const void *infoBuffer, size_t infoSize);
virtual status_t NegotiateOutputFormat(media_format *output_format); virtual status_t NegotiateOutputFormat(media_format *output_format);
@@ -83,9 +83,9 @@ class avCodec : public Decoder
float fOutputFrameRate; float fOutputFrameRate;
int fOutputFrameSize; // sample size * channel count int fOutputFrameSize; // sample size * channel count
char * fChunkBuffer; const void *fChunkBuffer;
int32 fChunkBufferOffset; int32 fChunkBufferOffset;
int32 fChunkBufferSize; size_t fChunkBufferSize;
char * fOutputBuffer; char * fOutputBuffer;
int32 fOutputBufferOffset; int32 fOutputBufferOffset;
@@ -346,7 +346,7 @@ aviReader::FreeCookie(void *_cookie)
status_t status_t
aviReader::GetStreamInfo(void *_cookie, int64 *frameCount, bigtime_t *duration, aviReader::GetStreamInfo(void *_cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize) media_format *format, const void **infoBuffer, size_t *infoSize)
{ {
avi_cookie *cookie = (avi_cookie *)_cookie; avi_cookie *cookie = (avi_cookie *)_cookie;
@@ -377,7 +377,7 @@ aviReader::Seek(void *cookie,
status_t status_t
aviReader::GetNextChunk(void *_cookie, aviReader::GetNextChunk(void *_cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
avi_cookie *cookie = (avi_cookie *)_cookie; avi_cookie *cookie = (avi_cookie *)_cookie;
@@ -44,14 +44,14 @@ public:
status_t FreeCookie(void *cookie); status_t FreeCookie(void *cookie);
status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize); media_format *format, const void **infoBuffer, size_t *infoSize);
status_t Seek(void *cookie, status_t Seek(void *cookie,
uint32 seekTo, uint32 seekTo,
int64 *frame, bigtime_t *time); int64 *frame, bigtime_t *time);
status_t GetNextChunk(void *cookie, status_t GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
private: private:
OpenDMLFile *fFile; OpenDMLFile *fFile;
@@ -1904,7 +1904,7 @@ static int readMoreBlocks(MatroskaFile *mf) {
if (++retries > 3) // don't try too hard if (++retries > 3) // don't try too hard
goto ex; goto ex;
for (;;cp) { for (;;cp) { // <-- XXX TODO FIX THIS!
if (filepos(mf) >= mf->pSegmentTop) { if (filepos(mf) >= mf->pSegmentTop) {
mf->readPosition = filepos(mf); mf->readPosition = filepos(mf);
goto ex; goto ex;
@@ -332,7 +332,7 @@ mkvReader::FreeCookie(void *_cookie)
status_t status_t
mkvReader::GetStreamInfo(void *_cookie, int64 *frameCount, bigtime_t *duration, mkvReader::GetStreamInfo(void *_cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize) media_format *format, const void **infoBuffer, size_t *infoSize)
{ {
mkv_cookie *cookie = (mkv_cookie *)_cookie; mkv_cookie *cookie = (mkv_cookie *)_cookie;
*frameCount = cookie->frame_count; *frameCount = cookie->frame_count;
@@ -385,7 +385,7 @@ mkvReader::Seek(void *_cookie,
status_t status_t
mkvReader::GetNextChunk(void *_cookie, mkvReader::GetNextChunk(void *_cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
mkv_cookie *cookie = (mkv_cookie *)_cookie; mkv_cookie *cookie = (mkv_cookie *)_cookie;
@@ -46,14 +46,14 @@ public:
status_t FreeCookie(void *cookie); status_t FreeCookie(void *cookie);
status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize); media_format *format, const void **infoBuffer, size_t *infoSize);
status_t Seek(void *cookie, status_t Seek(void *cookie,
uint32 seekTo, uint32 seekTo,
int64 *frame, bigtime_t *time); int64 *frame, bigtime_t *time);
status_t GetNextChunk(void *cookie, status_t GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
private: private:
status_t SetupVideoCookie(mkv_cookie *cookie); status_t SetupVideoCookie(mkv_cookie *cookie);
@@ -416,7 +416,7 @@ movReader::FreeCookie(void *_cookie)
status_t status_t
movReader::GetStreamInfo(void *_cookie, int64 *frameCount, bigtime_t *duration, movReader::GetStreamInfo(void *_cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize) media_format *format, const void **infoBuffer, size_t *infoSize)
{ {
mov_cookie *cookie = (mov_cookie *)_cookie; mov_cookie *cookie = (mov_cookie *)_cookie;
@@ -469,7 +469,7 @@ movReader::Seek(void *cookie,
status_t status_t
movReader::GetNextChunk(void *_cookie, movReader::GetNextChunk(void *_cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
mov_cookie *cookie = (mov_cookie *)_cookie; mov_cookie *cookie = (mov_cookie *)_cookie;
@@ -44,14 +44,14 @@ public:
status_t FreeCookie(void *cookie); status_t FreeCookie(void *cookie);
status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize); media_format *format, const void **infoBuffer, size_t *infoSize);
status_t Seek(void *cookie, status_t Seek(void *cookie,
uint32 seekTo, uint32 seekTo,
int64 *frame, bigtime_t *time); int64 *frame, bigtime_t *time);
status_t GetNextChunk(void *cookie, status_t GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
private: private:
MOVFileReader *theFileReader; MOVFileReader *theFileReader;
@@ -122,7 +122,7 @@ mp3Decoder::GetCodecInfo(media_codec_info *info)
status_t status_t
mp3Decoder::Setup(media_format *ioEncodedFormat, mp3Decoder::Setup(media_format *ioEncodedFormat,
const void *infoBuffer, int32 infoSize) const void *infoBuffer, size_t infoSize)
{ {
// decode first chunk to initialize mpeg library // decode first chunk to initialize mpeg library
if (B_OK != DecodeNextChunk()) { if (B_OK != DecodeNextChunk()) {
@@ -237,8 +237,8 @@ mp3Decoder::Decode(void *buffer, int64 *frameCount,
status_t status_t
mp3Decoder::DecodeNextChunk() mp3Decoder::DecodeNextChunk()
{ {
void *chunkBuffer; const void *chunkBuffer;
int32 chunkSize; size_t chunkSize;
media_header mh; media_header mh;
int outsize; int outsize;
int result; int result;
@@ -37,7 +37,7 @@ public:
void GetCodecInfo(media_codec_info *codecInfo); void GetCodecInfo(media_codec_info *codecInfo);
status_t Setup(media_format *ioEncodedFormat, status_t Setup(media_format *ioEncodedFormat,
const void *infoBuffer, int32 infoSize); const void *infoBuffer, size_t infoSize);
status_t NegotiateOutputFormat(media_format *ioDecodedFormat); status_t NegotiateOutputFormat(media_format *ioDecodedFormat);
@@ -301,7 +301,7 @@ mp3Reader::FreeCookie(void *cookie)
status_t status_t
mp3Reader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, mp3Reader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize) media_format *format, const void **infoBuffer, size_t *infoSize)
{ {
mp3data *data = reinterpret_cast<mp3data *>(cookie); mp3data *data = reinterpret_cast<mp3data *>(cookie);
@@ -382,7 +382,7 @@ mp3Reader::Seek(void *cookie,
status_t status_t
mp3Reader::GetNextChunk(void *cookie, mp3Reader::GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
mp3data *data = reinterpret_cast<mp3data *>(cookie); mp3data *data = reinterpret_cast<mp3data *>(cookie);
@@ -47,14 +47,14 @@ public:
status_t FreeCookie(void *cookie); status_t FreeCookie(void *cookie);
status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize); media_format *format, const void **infoBuffer, size_t *infoSize);
status_t Seek(void *cookie, status_t Seek(void *cookie,
uint32 seekTo, uint32 seekTo,
int64 *frame, bigtime_t *time); int64 *frame, bigtime_t *time);
status_t GetNextChunk(void *cookie, status_t GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
BPositionIO *Source() { return fSeekableSource; } BPositionIO *Source() { return fSeekableSource; }
@@ -30,7 +30,7 @@ MusePackDecoder::GetCodecInfo(media_codec_info *info)
status_t status_t
MusePackDecoder::Setup(media_format *ioEncodedFormat, const void *infoBuffer, int32 infoSize) MusePackDecoder::Setup(media_format *ioEncodedFormat, const void *infoBuffer, size_t infoSize)
{ {
if (infoBuffer == NULL || infoSize != sizeof(MPC_decoder)) if (infoBuffer == NULL || infoSize != sizeof(MPC_decoder))
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -20,7 +20,7 @@ class MusePackDecoder : public Decoder {
void GetCodecInfo(media_codec_info *info); void GetCodecInfo(media_codec_info *info);
status_t Setup(media_format *ioEncodedFormat, status_t Setup(media_format *ioEncodedFormat,
const void *infoBuffer, int32 infoSize); const void *infoBuffer, size_t infoSize);
status_t NegotiateOutputFormat(media_format *ioDecodedFormat); status_t NegotiateOutputFormat(media_format *ioDecodedFormat);
@@ -116,7 +116,7 @@ MusePackReader::FreeCookie(void *cookie)
status_t status_t
MusePackReader::GetStreamInfo(void *cookie, int64 *_frameCount, bigtime_t *_duration, MusePackReader::GetStreamInfo(void *cookie, int64 *_frameCount, bigtime_t *_duration,
media_format *format, void **_infoBuffer, int32 *_infoSize) media_format *format, const void **_infoBuffer, size_t *_infoSize)
{ {
if (cookie != NULL) if (cookie != NULL)
return B_BAD_VALUE; return B_BAD_VALUE;
@@ -145,7 +145,7 @@ MusePackReader::Seek(void *cookie, uint32 seekTo, int64 *frame, bigtime_t *time)
status_t status_t
MusePackReader::GetNextChunk(void *cookie, void **chunkBuffer, int32 *chunkSize, MusePackReader::GetNextChunk(void *cookie, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
// this one will never be called by our decoder // this one will never be called by our decoder
@@ -28,12 +28,12 @@ class MusePackReader : public Reader {
status_t FreeCookie(void *cookie); status_t FreeCookie(void *cookie);
status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize); media_format *format, const void **infoBuffer, size_t *infoSize);
status_t Seek(void *cookie, uint32 seekTo, status_t Seek(void *cookie, uint32 seekTo,
int64 *frame, bigtime_t *time); int64 *frame, bigtime_t *time);
status_t GetNextChunk(void *cookie, void **chunkBuffer, int32 *chunkSize, status_t GetNextChunk(void *cookie, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
private: private:
@@ -290,7 +290,7 @@ OggReader::FreeCookie(void *cookie)
status_t status_t
OggReader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, OggReader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize) media_format *format, const void **infoBuffer, size_t *infoSize)
{ {
TRACE("OggReader::GetStreamInfo\n"); TRACE("OggReader::GetStreamInfo\n");
*infoBuffer = 0; *infoBuffer = 0;
@@ -316,7 +316,7 @@ OggReader::Seek(void *cookie,
status_t status_t
OggReader::GetNextChunk(void *cookie, OggReader::GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
// TRACE("OggReader::GetNextChunk\n"); // TRACE("OggReader::GetNextChunk\n");
@@ -30,9 +30,9 @@ public:
// delegated to OggTrack // delegated to OggTrack
status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize); media_format *format, const void **infoBuffer, size_t *infoSize);
status_t Seek(void *cookie, uint32 seekTo, int64 *frame, bigtime_t *time); status_t Seek(void *cookie, uint32 seekTo, int64 *frame, bigtime_t *time);
status_t GetNextChunk(void *cookie, void **chunkBuffer, int32 *chunkSize, status_t GetNextChunk(void *cookie, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
private: private:
@@ -450,7 +450,7 @@ OggSeekable::Seek(uint32 seekTo, int64 *frame, bigtime_t *time)
}*/ }*/
status_t status_t
OggSeekable::GetNextChunk(void **chunkBuffer, int32 *chunkSize, OggSeekable::GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
ogg_packet packet; ogg_packet packet;
+1 -1
View File
@@ -16,7 +16,7 @@ public:
virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration, virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration,
media_format *format); media_format *format);
virtual status_t Seek(uint32 seekTo, int64 *frame, bigtime_t *time); virtual status_t Seek(uint32 seekTo, int64 *frame, bigtime_t *time);
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
protected: protected:
@@ -147,7 +147,7 @@ OggSpeexStream::GetStreamInfo(int64 *frameCount, bigtime_t *duration,
status_t status_t
OggSpeexStream::GetNextChunk(void **chunkBuffer, int32 *chunkSize, OggSpeexStream::GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
status_t result = GetPacket(&fChunkPacket); status_t result = GetPacket(&fChunkPacket);
@@ -14,7 +14,7 @@ public:
virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration, virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration,
media_format *format); media_format *format);
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
}; };
+1 -1
View File
@@ -132,7 +132,7 @@ OggStream::GetStreamInfo(int64 *frameCount, bigtime_t *duration,
// the default chunk is an ogg packet // the default chunk is an ogg packet
status_t status_t
OggStream::GetNextChunk(void **chunkBuffer, int32 *chunkSize, OggStream::GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
status_t result = GetPacket(&fChunkPacket); status_t result = GetPacket(&fChunkPacket);
+1 -1
View File
@@ -15,7 +15,7 @@ public:
// interface for OggReader // interface for OggReader
virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration, virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration,
media_format *format); media_format *format);
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
protected: protected:
@@ -288,7 +288,7 @@ OggTobiasSeekable::GetStreamInfo(int64 *frameCount, bigtime_t *duration,
status_t status_t
OggTobiasSeekable::GetNextChunk(void **chunkBuffer, int32 *chunkSize, OggTobiasSeekable::GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
status_t result = inherited::GetNextChunk(chunkBuffer, chunkSize, mediaHeader); status_t result = inherited::GetNextChunk(chunkBuffer, chunkSize, mediaHeader);
@@ -16,7 +16,7 @@ public:
virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration, virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration,
media_format *format); media_format *format);
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
private: private:
@@ -225,7 +225,7 @@ OggTobiasStream::GetStreamInfo(int64 *frameCount, bigtime_t *duration,
status_t status_t
OggTobiasStream::GetNextChunk(void **chunkBuffer, int32 *chunkSize, OggTobiasStream::GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
status_t result = GetPacket(&fChunkPacket); status_t result = GetPacket(&fChunkPacket);
@@ -14,7 +14,7 @@ public:
virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration, virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration,
media_format *format); media_format *format);
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
// reader push input function // reader push input function
+1 -1
View File
@@ -66,7 +66,7 @@ OggTrack::Seek(uint32 seekTo, int64 *frame, bigtime_t *time)
status_t status_t
OggTrack::GetNextChunk(void **chunkBuffer, int32 *chunkSize, OggTrack::GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
*chunkBuffer = 0; *chunkBuffer = 0;
+1 -1
View File
@@ -24,7 +24,7 @@ public:
virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration, virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration,
media_format *format); media_format *format);
virtual status_t Seek(uint32 seekTo, int64 *frame, bigtime_t *time); virtual status_t Seek(uint32 seekTo, int64 *frame, bigtime_t *time);
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
protected: protected:
@@ -35,11 +35,11 @@ typedef double float64;
class uint8_sample class uint8_sample
{ {
public: public:
inline operator uint8() { return data; } inline operator uint8() const { return data; }
inline operator int8() { return (int32)data - 128; } inline operator int8() const { return (int32)data - 128; }
inline operator int16() { return ((int32)data - 128) << 8; } inline operator int16() const { return ((int32)data - 128) << 8; }
inline operator int32() { return ((int32)data - 128) << 24; } inline operator int32() const { return ((int32)data - 128) << 24; }
inline operator float() { return ((int32)data - 128) * (1.0f / 127.0f); } inline operator float() const { return ((int32)data - 128) * (1.0f / 127.0f); }
private: private:
uint8 data; uint8 data;
} _PACKED; } _PACKED;
@@ -47,11 +47,11 @@ private:
class int8_sample class int8_sample
{ {
public: public:
inline operator uint8() { return (int32)data + 128; } inline operator uint8() const { return (int32)data + 128; }
inline operator int8() { return data; } inline operator int8() const { return data; }
inline operator int16() { return (int16)data << 8; } inline operator int16() const { return (int16)data << 8; }
inline operator int32() { return (int32)data << 24; } inline operator int32() const { return (int32)data << 24; }
inline operator float() { return (int32)data * (1.0f / 127.0f); } inline operator float() const { return (int32)data * (1.0f / 127.0f); }
private: private:
int8 data; int8 data;
} _PACKED; } _PACKED;
@@ -59,11 +59,11 @@ private:
class int16_sample class int16_sample
{ {
public: public:
inline operator uint8() { return (uint8)((int8)(data >> 8) + 128); } inline operator uint8() const { return (uint8)((int8)(data >> 8) + 128); }
inline operator int8() { return (int8)(data >> 8); } inline operator int8() const { return (int8)(data >> 8); }
inline operator int16() { return data; } inline operator int16() const { return data; }
inline operator int32() { return (int32)data << 16; } inline operator int32() const { return (int32)data << 16; }
inline operator float() { return data * (1.0f / 32767.0f); } inline operator float() const { return data * (1.0f / 32767.0f); }
private: private:
int16 data; int16 data;
} _PACKED; } _PACKED;
@@ -72,21 +72,21 @@ class int24_sample
{ {
public: public:
#if B_HOST_IS_LENDIAN #if B_HOST_IS_LENDIAN
inline operator uint8() { return (int32)data[2] + 128; } inline operator uint8() const { return (int32)data[2] + 128; }
inline operator int8() { return (int8)data[2]; } inline operator int8() const { return (int8)data[2]; }
inline operator int16() { return (int16)((uint32)data[2] << 8 | (uint32)data[1]); } inline operator int16() const { return (int16)((uint32)data[2] << 8 | (uint32)data[1]); }
inline operator int32() { return (int32)((uint32)data[2] << 24 | (uint32)data[1] << 16 | (uint32)data[0] << 8); } inline operator int32() const { return (int32)((uint32)data[2] << 24 | (uint32)data[1] << 16 | (uint32)data[0] << 8); }
inline operator float() { return (int32)((uint32)data[2] << 16 | (uint32)data[1] << 8 | (uint32)data[0]) * (1.0f / (2147483647.0f / 256)); } inline operator float() const { return (int32)((uint32)data[2] << 16 | (uint32)data[1] << 8 | (uint32)data[0]) * (1.0f / (2147483647.0f / 256)); }
// XXX is the line above correct? long version: // XXX is the line above correct? long version:
// inline operator float() { return (int32)((uint32)data[2] << 24 | (uint32)data[1] << 16 | (uint32)data[0] << 8) * (1.0f / 2147483647.0f); } // inline operator float() const { return (int32)((uint32)data[2] << 24 | (uint32)data[1] << 16 | (uint32)data[0] << 8) * (1.0f / 2147483647.0f); }
#else #else
inline operator uint8() { return (int32)data[0] + 128; } inline operator uint8() const { return (int32)data[0] + 128; }
inline operator int8() { return (int8)data[0]; } inline operator int8() const { return (int8)data[0]; }
inline operator int16() { return (int16)((uint32)data[0] << 8 | (uint32)data[1]); } inline operator int16() const { return (int16)((uint32)data[0] << 8 | (uint32)data[1]); }
inline operator int32() { return (int32)((uint32)data[0] << 24 | (uint32)data[1] << 16 | (uint32)data[2] << 8); } inline operator int32() const { return (int32)((uint32)data[0] << 24 | (uint32)data[1] << 16 | (uint32)data[2] << 8); }
inline operator float() { return (int32)((uint32)data[0] << 16 | (uint32)data[1] << 8 | (uint32)data[2]) * (1.0f / (2147483647.0f / 256)); } inline operator float() const { return (int32)((uint32)data[0] << 16 | (uint32)data[1] << 8 | (uint32)data[2]) * (1.0f / (2147483647.0f / 256)); }
// XXX is the line above correct? long version: // XXX is the line above correct? long version:
// inline operator float() { return (int32)((uint32)data[0] << 24 | (uint32)data[1] << 16 | (uint32)data[2] << 8) * (1.0f / 2147483647.0f); } // inline operator float() const { return (int32)((uint32)data[0] << 24 | (uint32)data[1] << 16 | (uint32)data[2] << 8) * (1.0f / 2147483647.0f); }
#endif #endif
private: private:
uint8 data[3]; uint8 data[3];
@@ -95,11 +95,11 @@ private:
class int32_sample class int32_sample
{ {
public: public:
inline operator uint8() { return (int8)(data >> 24) + 128; } inline operator uint8() const { return (int8)(data >> 24) + 128; }
inline operator int8() { return (int8)(data >> 24); } inline operator int8() const { return (int8)(data >> 24); }
inline operator int16() { return (int16)(data >> 16); } inline operator int16() const { return (int16)(data >> 16); }
inline operator int32() { return data; } inline operator int32() const { return data; }
inline operator float() { return data * (1.0f / 2147483647.0f); } inline operator float() const { return data * (1.0f / 2147483647.0f); }
private: private:
int32 data; int32 data;
} _PACKED; } _PACKED;
@@ -107,11 +107,11 @@ private:
class float32_sample class float32_sample
{ {
public: public:
inline operator uint8() { int32 v = (int32)(data * 127.0f) + 128; if (v > 255) v = 255; else if (v < 0) v = 0; return v; } inline operator uint8() const { int32 v = (int32)(data * 127.0f) + 128; if (v > 255) v = 255; else if (v < 0) v = 0; return v; }
inline operator int8() { int32 v = (int32)(data * 127.0f); if (v > 127) v = 127; else if (v < -127) v = -127; return v; } inline operator int8() const { int32 v = (int32)(data * 127.0f); if (v > 127) v = 127; else if (v < -127) v = -127; return v; }
inline operator int16() { int32 v = (int32)(data * 32767.0f); if (v > 32767) v = 32767; else if (v < -32767) v = -32767; return v; } inline operator int16() const { int32 v = (int32)(data * 32767.0f); if (v > 32767) v = 32767; else if (v < -32767) v = -32767; return v; }
inline operator int32() { float32 v; if (data < -1.0f) v = -1.0f; else if (data > 1.0f) v = 1.0f; else v = data; return (int32)(v * 2147483647.0f); } inline operator int32() const { float32 v; if (data < -1.0f) v = -1.0f; else if (data > 1.0f) v = 1.0f; else v = data; return (int32)(v * 2147483647.0f); }
inline operator float() { return data; } inline operator float() const { return data; }
private: private:
float32 data; float32 data;
} _PACKED; } _PACKED;
@@ -119,19 +119,19 @@ private:
class float64_sample class float64_sample
{ {
public: public:
inline operator uint8() { int32 v = (int32)(data * 127.0f) + 128; if (v > 255) v = 255; else if (v < 0) v = 0; return v; } inline operator uint8() const { int32 v = (int32)(data * 127.0f) + 128; if (v > 255) v = 255; else if (v < 0) v = 0; return v; }
inline operator int8() { int32 v = (int32)(data * 127.0f); if (v > 127) v = 127; else if (v < -127) v = -127; return v; } inline operator int8() const { int32 v = (int32)(data * 127.0f); if (v > 127) v = 127; else if (v < -127) v = -127; return v; }
inline operator int16() { int32 v = (int32)(data * 32767.0f); if (v > 32767) v = 32767; else if (v < -32767) v = -32767; return v; } inline operator int16() const { int32 v = (int32)(data * 32767.0f); if (v > 32767) v = 32767; else if (v < -32767) v = -32767; return v; }
inline operator int32() { float64 v; if (data < -1.0) v = -1.0; else if (data > 1.0) v = 1.0; else v = data; return (int32)(v * 2147483647.0f); } inline operator int32() const { float64 v; if (data < -1.0) v = -1.0; else if (data > 1.0) v = 1.0; else v = data; return (int32)(v * 2147483647.0f); }
inline operator float() { return data; } inline operator float() const { return data; }
private: private:
float64 data; float64 data;
} _PACKED; } _PACKED;
#define CONVERT(src_type, dst_type) \ #define CONVERT(src_type, dst_type) \
void src_type##_to_##dst_type (void *dst, void *src, int32 count) \ void src_type##_to_##dst_type (void *dst, const void *src, int32 count) \
{ \ { \
register src_type##_sample *s = (src_type##_sample *) src; \ register const src_type##_sample *s = (const src_type##_sample *) src; \
register dst_type *d = (dst_type *) dst; \ register dst_type *d = (dst_type *) dst; \
register int32 c = count >> 4; \ register int32 c = count >> 4; \
if (!c) goto fin1; \ if (!c) goto fin1; \
@@ -27,47 +27,47 @@
#include <SupportDefs.h> #include <SupportDefs.h>
void uint8_to_uint8(void *dst, void *src, int32 count); void uint8_to_uint8(void *dst, const void *src, int32 count);
void uint8_to_int8(void *dst, void *src, int32 count); void uint8_to_int8(void *dst, const void *src, int32 count);
void uint8_to_int16(void *dst, void *src, int32 count); void uint8_to_int16(void *dst, const void *src, int32 count);
void uint8_to_int32(void *dst, void *src, int32 count); void uint8_to_int32(void *dst, const void *src, int32 count);
void uint8_to_float32(void *dst, void *src, int32 count); void uint8_to_float32(void *dst, const void *src, int32 count);
void int8_to_uint8(void *dst, void *src, int32 count); void int8_to_uint8(void *dst, const void *src, int32 count);
void int8_to_int8(void *dst, void *src, int32 count); void int8_to_int8(void *dst, const void *src, int32 count);
void int8_to_int16(void *dst, void *src, int32 count); void int8_to_int16(void *dst, const void *src, int32 count);
void int8_to_int32(void *dst, void *src, int32 count); void int8_to_int32(void *dst, const void *src, int32 count);
void int8_to_float32(void *dst, void *src, int32 count); void int8_to_float32(void *dst, const void *src, int32 count);
void int16_to_uint8(void *dst, void *src, int32 count); void int16_to_uint8(void *dst, const void *src, int32 count);
void int16_to_int8(void *dst, void *src, int32 count); void int16_to_int8(void *dst, const void *src, int32 count);
void int16_to_int16(void *dst, void *src, int32 count); void int16_to_int16(void *dst, const void *src, int32 count);
void int16_to_int32(void *dst, void *src, int32 count); void int16_to_int32(void *dst, const void *src, int32 count);
void int16_to_float32(void *dst, void *src, int32 count); void int16_to_float32(void *dst, const void *src, int32 count);
void int24_to_uint8(void *dst, void *src, int32 count); void int24_to_uint8(void *dst, const void *src, int32 count);
void int24_to_int8(void *dst, void *src, int32 count); void int24_to_int8(void *dst, const void *src, int32 count);
void int24_to_int16(void *dst, void *src, int32 count); void int24_to_int16(void *dst, const void *src, int32 count);
void int24_to_int32(void *dst, void *src, int32 count); void int24_to_int32(void *dst, const void *src, int32 count);
void int24_to_float32(void *dst, void *src, int32 count); void int24_to_float32(void *dst, const void *src, int32 count);
void int32_to_uint8(void *dst, void *src, int32 count); void int32_to_uint8(void *dst, const void *src, int32 count);
void int32_to_int8(void *dst, void *src, int32 count); void int32_to_int8(void *dst, const void *src, int32 count);
void int32_to_int16(void *dst, void *src, int32 count); void int32_to_int16(void *dst, const void *src, int32 count);
void int32_to_int32(void *dst, void *src, int32 count); void int32_to_int32(void *dst, const void *src, int32 count);
void int32_to_float32(void *dst, void *src, int32 count); void int32_to_float32(void *dst, const void *src, int32 count);
void float32_to_uint8(void *dst, void *src, int32 count); void float32_to_uint8(void *dst, const void *src, int32 count);
void float32_to_int8(void *dst, void *src, int32 count); void float32_to_int8(void *dst, const void *src, int32 count);
void float32_to_int16(void *dst, void *src, int32 count); void float32_to_int16(void *dst, const void *src, int32 count);
void float32_to_int32(void *dst, void *src, int32 count); void float32_to_int32(void *dst, const void *src, int32 count);
void float32_to_float32(void *dst, void *src, int32 count); void float32_to_float32(void *dst, const void *src, int32 count);
void float64_to_uint8(void *dst, void *src, int32 count); void float64_to_uint8(void *dst, const void *src, int32 count);
void float64_to_int8(void *dst, void *src, int32 count); void float64_to_int8(void *dst, const void *src, int32 count);
void float64_to_int16(void *dst, void *src, int32 count); void float64_to_int16(void *dst, const void *src, int32 count);
void float64_to_int32(void *dst, void *src, int32 count); void float64_to_int32(void *dst, const void *src, int32 count);
void float64_to_float32(void *dst, void *src, int32 count); void float64_to_float32(void *dst, const void *src, int32 count);
void swap_int16(void *data, int32 count); void swap_int16(void *data, int32 count);
void swap_int24(void *data, int32 count); void swap_int24(void *data, int32 count);
@@ -59,7 +59,7 @@ RawDecoder::GetCodecInfo(media_codec_info *info)
status_t status_t
RawDecoder::Setup(media_format *ioEncodedFormat, RawDecoder::Setup(media_format *ioEncodedFormat,
const void *infoBuffer, int32 infoSize) const void *infoBuffer, size_t infoSize)
{ {
char s[200]; char s[200];
string_for_format(*ioEncodedFormat, s, sizeof(s)); string_for_format(*ioEncodedFormat, s, sizeof(s));
@@ -478,20 +478,20 @@ RawDecoder::Decode(void *buffer, int64 *frameCount,
if (fChunkSize == 0) { if (fChunkSize == 0) {
media_header mh; media_header mh;
status_t err; status_t err;
err = GetNextChunk((void **)&fChunkBuffer, &fChunkSize, &mh); err = GetNextChunk(&fChunkBuffer, &fChunkSize, &mh);
if (err != B_OK || fChunkSize < fInputFrameSize) { if (err != B_OK || fChunkSize < fInputFrameSize) {
fChunkSize = 0; fChunkSize = 0;
break; break;
} }
if (fSwapInput) if (fSwapInput)
fSwapInput(fChunkBuffer, fChunkSize / fInputSampleSize); fSwapInput(const_cast<void *>(fChunkBuffer), fChunkSize / fInputSampleSize); // XXX TODO! FIX THIS, we write to a const buffer!!!
fStartTime = mh.start_time; fStartTime = mh.start_time;
continue; continue;
} }
int32 frames = min_c(fOutputBufferFrameCount - *frameCount, fChunkSize / fInputFrameSize); int32 frames = min_c(fOutputBufferFrameCount - *frameCount, fChunkSize / fInputFrameSize);
int32 samples = frames * fInputFormat.u.raw_audio.channel_count; int32 samples = frames * fInputFormat.u.raw_audio.channel_count;
fConvert(output_buffer, fChunkBuffer, samples); fConvert(output_buffer, fChunkBuffer, samples);
fChunkBuffer += frames * fInputFrameSize; fChunkBuffer = (const char *)fChunkBuffer + frames * fInputFrameSize;
fChunkSize -= frames * fInputFrameSize; fChunkSize -= frames * fInputFrameSize;
output_buffer += frames * fOutputFrameSize; output_buffer += frames * fOutputFrameSize;
*frameCount += frames; *frameCount += frames;
@@ -33,7 +33,7 @@ public:
void GetCodecInfo(media_codec_info *info); void GetCodecInfo(media_codec_info *info);
status_t Setup(media_format *ioEncodedFormat, status_t Setup(media_format *ioEncodedFormat,
const void *infoBuffer, int32 infoSize); const void *infoBuffer, size_t infoSize);
status_t NegotiateOutputFormat(media_format *ioDecodedFormat); status_t NegotiateOutputFormat(media_format *ioDecodedFormat);
@@ -56,11 +56,11 @@ private:
int32 fOutputSampleSize; int32 fOutputSampleSize;
int32 fOutputBufferFrameCount; int32 fOutputBufferFrameCount;
void (*fSwapInput)(void *data, int32 count); void (*fSwapInput)(void *data, int32 count);
void (*fConvert)(void *dst, void *src, int32 count); void (*fConvert)(void *dst, const void *src, int32 count);
void (*fSwapOutput)(void *data, int32 count); void (*fSwapOutput)(void *data, int32 count);
char * fChunkBuffer; const void * fChunkBuffer;
int32 fChunkSize; size_t fChunkSize;
bigtime_t fStartTime; bigtime_t fStartTime;
@@ -81,7 +81,7 @@ SpeexDecoder::GetCodecInfo(media_codec_info *info)
status_t status_t
SpeexDecoder::Setup(media_format *inputFormat, SpeexDecoder::Setup(media_format *inputFormat,
const void *infoBuffer, int32 infoSize) const void *infoBuffer, size_t infoSize)
{ {
TRACE("SpeexDecoder::Setup\n"); TRACE("SpeexDecoder::Setup\n");
if (!format_is_compatible(speex_encoded_media_format(),*inputFormat)) { if (!format_is_compatible(speex_encoded_media_format(),*inputFormat)) {
@@ -254,8 +254,8 @@ SpeexDecoder::Decode(void *buffer, int64 *frameCount,
int total_samples = 0; int total_samples = 0;
while (out_bytes_needed >= fSpeexOutputLength) { while (out_bytes_needed >= fSpeexOutputLength) {
// get a new packet // get a new packet
void *chunkBuffer; const void *chunkBuffer;
int32 chunkSize; size_t chunkSize;
media_header mh; media_header mh;
status_t status = GetNextChunk(&chunkBuffer, &chunkSize, &mh); status_t status = GetNextChunk(&chunkBuffer, &chunkSize, &mh);
if (status == B_LAST_BUFFER_ERROR) { if (status == B_LAST_BUFFER_ERROR) {
@@ -12,7 +12,7 @@ public:
void GetCodecInfo(media_codec_info *info); void GetCodecInfo(media_codec_info *info);
status_t Setup(media_format *inputFormat, status_t Setup(media_format *inputFormat,
const void *infoBuffer, int32 infoSize); const void *infoBuffer, size_t infoSize);
status_t NegotiateOutputFormat(media_format *ioDecodedFormat); status_t NegotiateOutputFormat(media_format *ioDecodedFormat);
@@ -13,7 +13,7 @@ public:
void GetCodecInfo(media_codec_info *info); void GetCodecInfo(media_codec_info *info);
status_t Setup(media_format *inputFormat, status_t Setup(media_format *inputFormat,
const void *infoBuffer, int32 infoSize); const void *infoBuffer, size_t infoSize);
status_t NegotiateOutputFormat(media_format *ioDecodedFormat); status_t NegotiateOutputFormat(media_format *ioDecodedFormat);
@@ -74,7 +74,7 @@ VorbisDecoder::GetCodecInfo(media_codec_info *info)
status_t status_t
VorbisDecoder::Setup(media_format *inputFormat, VorbisDecoder::Setup(media_format *inputFormat,
const void *infoBuffer, int32 infoSize) const void *infoBuffer, size_t infoSize)
{ {
TRACE("VorbisDecoder::Setup\n"); TRACE("VorbisDecoder::Setup\n");
if (!format_is_compatible(vorbis_encoded_media_format(),*inputFormat)) { if (!format_is_compatible(vorbis_encoded_media_format(),*inputFormat)) {
@@ -178,8 +178,8 @@ VorbisDecoder::Decode(void *buffer, int64 *frameCount,
float **pcm; float **pcm;
while ((samples = vorbis_synthesis_pcmout(&fDspState,&pcm)) == 0) { while ((samples = vorbis_synthesis_pcmout(&fDspState,&pcm)) == 0) {
// get a new packet // get a new packet
void *chunkBuffer; const void *chunkBuffer;
int32 chunkSize; size_t chunkSize;
media_header mh; media_header mh;
status_t status = GetNextChunk(&chunkBuffer, &chunkSize, &mh); status_t status = GetNextChunk(&chunkBuffer, &chunkSize, &mh);
if (status == B_LAST_BUFFER_ERROR) { if (status == B_LAST_BUFFER_ERROR) {
@@ -13,7 +13,7 @@ public:
void GetCodecInfo(media_codec_info *info); void GetCodecInfo(media_codec_info *info);
status_t Setup(media_format *inputFormat, status_t Setup(media_format *inputFormat,
const void *infoBuffer, int32 infoSize); const void *infoBuffer, size_t infoSize);
status_t NegotiateOutputFormat(media_format *ioDecodedFormat); status_t NegotiateOutputFormat(media_format *ioDecodedFormat);
@@ -336,7 +336,7 @@ WavReader::FreeCookie(void *cookie)
status_t status_t
WavReader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, WavReader::GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize) media_format *format, const void **infoBuffer, size_t *infoSize)
{ {
wavdata *data = reinterpret_cast<wavdata *>(cookie); wavdata *data = reinterpret_cast<wavdata *>(cookie);
@@ -396,7 +396,7 @@ WavReader::Seek(void *cookie,
status_t status_t
WavReader::GetNextChunk(void *cookie, WavReader::GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
wavdata *data = reinterpret_cast<wavdata *>(cookie); wavdata *data = reinterpret_cast<wavdata *>(cookie);
@@ -44,14 +44,14 @@ public:
status_t FreeCookie(void *cookie); status_t FreeCookie(void *cookie);
status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration, status_t GetStreamInfo(void *cookie, int64 *frameCount, bigtime_t *duration,
media_format *format, void **infoBuffer, int32 *infoSize); media_format *format, const void **infoBuffer, size_t *infoSize);
status_t Seek(void *cookie, status_t Seek(void *cookie,
uint32 seekTo, uint32 seekTo,
int64 *frame, bigtime_t *time); int64 *frame, bigtime_t *time);
status_t GetNextChunk(void *cookie, status_t GetNextChunk(void *cookie,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader); media_header *mediaHeader);
BPositionIO *Source() { return fSource; } BPositionIO *Source() { return fSource; }
+2 -2
View File
@@ -85,7 +85,7 @@ ChunkCache::NeedsRefill()
status_t status_t
ChunkCache::GetNextChunk(void **chunkBuffer, int32 *chunkSize, media_header *mediaHeader) ChunkCache::GetNextChunk(const void **chunkBuffer, size_t *chunkSize, media_header *mediaHeader)
{ {
// printf("ChunkCache::GetNextChunk: %p fEmptyChunkCount %ld, fReadyChunkCount %ld\n", fNextGet, fEmptyChunkCount, fReadyChunkCount); // printf("ChunkCache::GetNextChunk: %p fEmptyChunkCount %ld, fReadyChunkCount %ld\n", fNextGet, fEmptyChunkCount, fReadyChunkCount);
retry: retry:
@@ -113,7 +113,7 @@ retry:
void void
ChunkCache::PutNextChunk(void *chunkBuffer, int32 chunkSize, const media_header &mediaHeader, status_t err) ChunkCache::PutNextChunk(const void *chunkBuffer, size_t chunkSize, const media_header &mediaHeader, status_t err)
{ {
// printf("ChunkCache::PutNextChunk: %p fEmptyChunkCount %ld, fReadyChunkCount %ld\n", fNextPut, fEmptyChunkCount, fReadyChunkCount); // printf("ChunkCache::PutNextChunk: %p fEmptyChunkCount %ld, fReadyChunkCount %ld\n", fNextPut, fEmptyChunkCount, fReadyChunkCount);
+4 -4
View File
@@ -35,8 +35,8 @@ struct chunk_info
{ {
chunk_info * next; chunk_info * next;
void * buffer; void * buffer;
int32 sizeUsed; size_t sizeUsed;
int32 sizeMax; size_t sizeMax;
media_header mediaHeader; media_header mediaHeader;
status_t err; status_t err;
}; };
@@ -51,8 +51,8 @@ public:
void MakeEmpty(); void MakeEmpty();
bool NeedsRefill(); bool NeedsRefill();
status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, media_header *mediaHeader); status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize, media_header *mediaHeader);
void PutNextChunk(void *chunkBuffer, int32 chunkSize, const media_header &mediaHeader, status_t err); void PutNextChunk(const void *chunkBuffer, size_t chunkSize, const media_header &mediaHeader, status_t err);
private: private:
enum { CHUNK_COUNT = 5 }; enum { CHUNK_COUNT = 5 };
+1 -1
View File
@@ -24,7 +24,7 @@ Decoder::~Decoder()
status_t status_t
Decoder::GetNextChunk(void **chunkBuffer, int32 *chunkSize, Decoder::GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
return fChunkProvider->GetNextChunk(chunkBuffer, chunkSize, mediaHeader); return fChunkProvider->GetNextChunk(chunkBuffer, chunkSize, mediaHeader);
+2 -4
View File
@@ -275,11 +275,9 @@ BMediaDecoder::AttachToDecoder()
MediaDecoderChunkProvider(BMediaDecoder * decoder) { MediaDecoderChunkProvider(BMediaDecoder * decoder) {
fDecoder = decoder; fDecoder = decoder;
} }
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) { media_header *mediaHeader) {
const void ** buffer = const_cast<const void**>(chunkBuffer); return fDecoder->GetNextChunk(chunkBuffer, chunkSize, mediaHeader);
size_t * size = reinterpret_cast<size_t*>(chunkSize);
return fDecoder->GetNextChunk(buffer,size,mediaHeader);
} }
} * provider = new MediaDecoderChunkProvider(this); } * provider = new MediaDecoderChunkProvider(this);
if (provider == NULL) { if (provider == NULL) {
+8 -8
View File
@@ -139,8 +139,8 @@ MediaExtractor::CountFrames(int32 stream) const
int64 frameCount; int64 frameCount;
bigtime_t duration; bigtime_t duration;
media_format format; media_format format;
void *infoBuffer; const void *infoBuffer;
int32 infoSize; size_t infoSize;
fReader->GetStreamInfo(fStreamInfo[stream].cookie, &frameCount, &duration, &format, &infoBuffer, &infoSize); fReader->GetStreamInfo(fStreamInfo[stream].cookie, &frameCount, &duration, &format, &infoBuffer, &infoSize);
@@ -155,8 +155,8 @@ MediaExtractor::Duration(int32 stream) const
int64 frameCount; int64 frameCount;
bigtime_t duration; bigtime_t duration;
media_format format; media_format format;
void *infoBuffer; const void *infoBuffer;
int32 infoSize; size_t infoSize;
fReader->GetStreamInfo(fStreamInfo[stream].cookie, &frameCount, &duration, &format, &infoBuffer, &infoSize); fReader->GetStreamInfo(fStreamInfo[stream].cookie, &frameCount, &duration, &format, &infoBuffer, &infoSize);
@@ -187,7 +187,7 @@ MediaExtractor::Seek(int32 stream, uint32 seekTo,
status_t status_t
MediaExtractor::GetNextChunk(int32 stream, MediaExtractor::GetNextChunk(int32 stream,
void **chunkBuffer, int32 *chunkSize, const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
if (fStreamInfo[stream].status != B_OK) if (fStreamInfo[stream].status != B_OK)
@@ -218,7 +218,7 @@ public:
fStream = stream; fStream = stream;
} }
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, virtual status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
return fExtractor->GetNextChunk(fStream, chunkBuffer, chunkSize, mediaHeader); return fExtractor->GetNextChunk(fStream, chunkBuffer, chunkSize, mediaHeader);
@@ -283,8 +283,8 @@ MediaExtractor::ExtractorThread()
continue; continue;
if (fStreamInfo[stream].chunkCache->NeedsRefill()) { if (fStreamInfo[stream].chunkCache->NeedsRefill()) {
media_header mediaHeader; media_header mediaHeader;
void *chunkBuffer; const void *chunkBuffer;
int32 chunkSize; size_t chunkSize;
status_t err; status_t err;
err = fReader->GetNextChunk(fStreamInfo[stream].cookie, &chunkBuffer, &chunkSize, &mediaHeader); err = fReader->GetNextChunk(fStreamInfo[stream].cookie, &chunkBuffer, &chunkSize, &mediaHeader);
fStreamInfo[stream].chunkCache->PutNextChunk(chunkBuffer, chunkSize, mediaHeader, err); fStreamInfo[stream].chunkCache->PutNextChunk(chunkBuffer, chunkSize, mediaHeader, err);
+9 -4
View File
@@ -54,7 +54,7 @@ public:
RawDecoderChunkProvider(Decoder *decoder, int buffer_size, int frame_size); RawDecoderChunkProvider(Decoder *decoder, int buffer_size, int frame_size);
virtual ~RawDecoderChunkProvider(); virtual ~RawDecoderChunkProvider();
status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize, media_header *mediaHeader); status_t GetNextChunk(const void **chunkBuffer, size_t *chunkSize, media_header *mediaHeader);
private: private:
Decoder *fDecoder; Decoder *fDecoder;
@@ -446,14 +446,19 @@ BMediaTrack::ReadChunk(char **out_buffer,
status_t result; status_t result;
media_header header; media_header header;
const void *buffer;
size_t size;
memset(&header, 0, sizeof(header)); // always clear it first, as the reader doesn't set all fields memset(&header, 0, sizeof(header)); // always clear it first, as the reader doesn't set all fields
result = fExtractor->GetNextChunk(fStream, (void **)out_buffer, out_size, &header); result = fExtractor->GetNextChunk(fStream, &buffer, &size, &header);
if (result == B_OK) {
*out_buffer = const_cast<char *>(static_cast<const char *>(buffer)); // yes this *is* ugly
*out_size = size;
fCurTime = header.start_time; fCurTime = header.start_time;
if (mh) if (mh)
*mh = header; *mh = header;
}
return result; return result;
} }
@@ -822,7 +827,7 @@ RawDecoderChunkProvider::~RawDecoderChunkProvider()
} }
status_t status_t
RawDecoderChunkProvider::GetNextChunk(void **chunkBuffer, int32 *chunkSize, RawDecoderChunkProvider::GetNextChunk(const void **chunkBuffer, size_t *chunkSize,
media_header *mediaHeader) media_header *mediaHeader)
{ {
int64 frames; int64 frames;