Итак, у меня есть класс..h файл с некоторыми переменными, такими как:
struct AudioSample
{
const unsigned char * buffer;
int len;
};
//...
const unsigned char * VideoFrameBuffer;
int VideoFrameLen;
std::queue<AudioSample> AudioSamples;
bool sampleSendingFinished;
bool frameSendingFinished;
//...
и файл .CPP с функциями
void VideoEncoder::UrlWriteData()
{
while(1){
if (AudioSamples.empty() && VideoFrameBuffer == NULL)
{
Sleep(1);
}
else if(!AudioSamples.empty())
{
struct AudioSample newAudioSample = AudioSamples.front();
url_write (url_context, (unsigned char *)newAudioSample.buffer, newAudioSample.len);
}
else if (AudioSamples.empty() && VideoFrameBuffer != NULL)
{
url_write (url_context, (unsigned char *)VideoFrameBuffer, VideoFrameLen);
}
}
}
void VideoEncoder::AddSampleToQueue(const unsigned char *buf, int size )
{
struct AudioSample newAudioSample;
newAudioSample.buffer = buf;
newAudioSample.len = size;
AudioSamples.push(newAudioSample);
}
void VideoEncoder::AddFrameToQueue(const unsigned char *buf, int size )
{
VideoFrameBuffer = buf;
VideoFrameLen = size;
}
, время от времени некоторые функции вызывают AddFrameToQueue и AddSampleToQueue.UrlWriteData живет в отдельном потоке.Мое приложение компилируется.Но моя проблема в том, что когда я запускаю его, он умирает на линии:
else if(!AudioSamples.empty())
{
struct AudioSample newAudioSample = AudioSamples.front();
Почему он умирает и как заставить его не умирать?