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