Указатель на первый байт вектора <float> - PullRequest
0 голосов
/ 20 июля 2011

Указатель на аудиобуфер структуры XAUDIO_BUFFER в XAudio2 определен как BYTE *pAudioData. Когда я использовал 16-битный Integer PCM, моя программа выглядела так:

void buildWaveBuffer(std::vector<unsigned char> &vec)
{
    std::string lineString;
    int lineInt;
    unsigned char lowByte, highByte;
    std::ifstream myfile("sineInt16");

    if (myfile.is_open())
    {
        while(myfile.good())
        {
            std::getline(myfile,lineString,',');
            lineInt = atoi(lineString.c_str());
            highByte = (lineInt >> 8) & 0x00FF;
            lowByte = lineInt & 0x00FF;
            vec.push_back(lowByte);
            vec.push_back(highByte);
        }
        myfile.close();
    }
}

"sineInt16" является файлом .csv. Поскольку вектор организован последовательно в памяти, я просто сделал бы pAudioData = &vec[0], и это сработало бы. Что если я захочу изменить формат моего .csv на float? Как мне дать указатель на первый байт в векторе? Должен ли я использовать другой контейнер, как простой массив символов?

1 Ответ

1 голос
/ 20 июля 2011

Как дать указатель на первый байт в векторе?

Точно так же, но я не уверен, что это сделает то, что вы ожидаете. Прочитайте комментарии к вашему вопросу.

...