как работать с QT Multimedia и MPG123 - PullRequest
3 голосов
/ 11 сентября 2011

Я хочу создать приложение 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;

}
...