Я хочу создать приложение mp3, используя qtmultimedia. Я пытаюсь реализовать QIODevice, который будет декодировать данные MP3 в PCM.
В mpg123_decode используются массивы char без знака, а в среде qt используются массивы char. Как сделать их совместимыми?
это мой код ...
qint64 SPSMp3::readData(char* data, qint64 maxSize){
if(buffer.length() == 0) return -1;
size_t size;
long rate;
int channels, enc;
//reading data from buffer
int max = INBUFF;
if(max>buffer.length()) max = buffer.length();
if(ret == MPG123_NEED_MORE) {
qDebug() << "Buffer Size:" << buffer.length();
for(int i=0; i<max; i++)
buf[i]= buffer[i];
buffer = buffer.remove(0,max);
ret = mpg123_decode(m, buf,max, (unsigned char*)data, maxSize, &size);
} else
ret = mpg123_decode(m,NULL,0, (unsigned char*)data, maxSize, &size);
}
if(ret != MPG123_OK)
{
if(ret == MPG123_ERR)
{
qFatal("...in decoding next frame: %s", mpg123_strerror(m));
return -1;
}
if(ret == MPG123_DONE)
{
return -1;
}
if(ret == MPG123_NO_SPACE)
{
qFatal("I have not enough output space? I didn't plan for this.");
return -1;
}
if(ret == MPG123_NEW_FORMAT)
{
mpg123_getformat(m, &rate, &channels, &enc);
int bites = mpg123_encsize(enc);
if (bites == 0)
qFatal("bytes per channel is 0 !!");
}
}
return max;
}