mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
Use a source per call peer
This commit is contained in:
parent
796e6f0f4d
commit
c550658e38
|
@ -546,7 +546,7 @@ void Core::playAudioBuffer(ALuint alSource, const int16_t *data, int samples, un
|
||||||
}
|
}
|
||||||
|
|
||||||
ALuint bufid;
|
ALuint bufid;
|
||||||
ALint processed, queued;
|
ALint processed = 0, queued = 16;
|
||||||
alGetSourcei(alSource, AL_BUFFERS_PROCESSED, &processed);
|
alGetSourcei(alSource, AL_BUFFERS_PROCESSED, &processed);
|
||||||
alGetSourcei(alSource, AL_BUFFERS_QUEUED, &queued);
|
alGetSourcei(alSource, AL_BUFFERS_QUEUED, &queued);
|
||||||
alSourcei(alSource, AL_LOOPING, AL_FALSE);
|
alSourcei(alSource, AL_LOOPING, AL_FALSE);
|
||||||
|
@ -586,7 +586,7 @@ VideoSource *Core::getVideoSourceFromCall(int callNumber)
|
||||||
return &calls[callNumber].videoSource;
|
return &calls[callNumber].videoSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::playGroupAudio(Tox* /*tox*/, int groupnumber, int /*friendgroupnumber*/, const int16_t* out_audio,
|
void Core::playGroupAudio(Tox* /*tox*/, int groupnumber, int friendgroupnumber, const int16_t* out_audio,
|
||||||
unsigned out_audio_samples, uint8_t decoder_channels, unsigned audio_sample_rate, void* /*userdata*/)
|
unsigned out_audio_samples, uint8_t decoder_channels, unsigned audio_sample_rate, void* /*userdata*/)
|
||||||
{
|
{
|
||||||
if (!groupCalls[groupnumber].active)
|
if (!groupCalls[groupnumber].active)
|
||||||
|
@ -595,7 +595,11 @@ void Core::playGroupAudio(Tox* /*tox*/, int groupnumber, int /*friendgroupnumbe
|
||||||
if (groupCalls[groupnumber].muteVol)
|
if (groupCalls[groupnumber].muteVol)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
playAudioBuffer(alMainSource, out_audio, out_audio_samples, decoder_channels, audio_sample_rate);
|
if (!groupCalls[groupnumber].alSources.contains(friendgroupnumber))
|
||||||
|
alGenSources(1, &groupCalls[groupnumber].alSources[friendgroupnumber]);
|
||||||
|
|
||||||
|
playAudioBuffer(groupCalls[groupnumber].alSources[friendgroupnumber], out_audio,
|
||||||
|
out_audio_samples, decoder_channels, audio_sample_rate);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::joinGroupCall(int groupId)
|
void Core::joinGroupCall(int groupId)
|
||||||
|
@ -611,7 +615,7 @@ void Core::joinGroupCall(int groupId)
|
||||||
groupCalls[groupId].codecSettings.max_video_height = TOXAV_MAX_VIDEO_HEIGHT;
|
groupCalls[groupId].codecSettings.max_video_height = TOXAV_MAX_VIDEO_HEIGHT;
|
||||||
|
|
||||||
// Audio
|
// Audio
|
||||||
alGenSources(1, &groupCalls[groupId].alSource);
|
//alGenSources(1, &groupCalls[groupId].alSource);
|
||||||
alcCaptureStart(alInDev);
|
alcCaptureStart(alInDev);
|
||||||
|
|
||||||
// Go
|
// Go
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef COREAV_H
|
#ifndef COREAV_H
|
||||||
#define COREAV_H
|
#define COREAV_H
|
||||||
|
|
||||||
|
#include <QHash>
|
||||||
#include <tox/toxav.h>
|
#include <tox/toxav.h>
|
||||||
#include "video/netvideosource.h"
|
#include "video/netvideosource.h"
|
||||||
|
|
||||||
|
@ -36,7 +37,7 @@ struct ToxGroupCall
|
||||||
bool active;
|
bool active;
|
||||||
bool muteMic;
|
bool muteMic;
|
||||||
bool muteVol;
|
bool muteVol;
|
||||||
ALuint alSource;
|
QHash<int, ALuint> alSources;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // COREAV_H
|
#endif // COREAV_H
|
||||||
|
|
Loading…
Reference in New Issue
Block a user