[client] audio: move the memory copy into the pull function

This commit is contained in:
Geoffrey McRae
2022-01-19 10:29:49 +11:00
parent 99536eaf9d
commit 15f76339c8
4 changed files with 18 additions and 11 deletions

View File

@@ -106,8 +106,7 @@ static void pipewire_onPlaybackProcess(void * userdata)
if (pw.playback.rateMatch && pw.playback.rateMatch->size > 0)
frames = min(frames, pw.playback.rateMatch->size);
uint8_t * data;
frames = pw.playback.pullFn(&data, frames);
frames = pw.playback.pullFn(dst, frames);
if (!frames)
{
if (pw.playback.state == STREAM_STATE_FLUSHING)
@@ -123,8 +122,6 @@ static void pipewire_onPlaybackProcess(void * userdata)
return;
}
memcpy(dst, data, frames * pw.playback.stride);
sbuf->datas[0].chunk->offset = 0;
sbuf->datas[0].chunk->stride = pw.playback.stride;
sbuf->datas[0].chunk->size = frames * pw.playback.stride;

View File

@@ -220,14 +220,13 @@ static void pulseaudio_free(void)
static void pulseaudio_write_cb(pa_stream * p, size_t nbytes, void * userdata)
{
uint8_t * dst, * src;
uint8_t * dst;
pa_stream_begin_write(p, (void **)&dst, &nbytes);
int frames = nbytes / pa.sinkStride;
frames = pa.sinkPullFn(&src, frames);
frames = pa.sinkPullFn(dst, frames);
memcpy(dst, src, frames * pa.sinkStride);
pa_stream_write(p, dst, frames * pa.sinkStride, NULL, 0, PA_SEEK_RELATIVE);
}