(audio driver) Pass is_perfcnt_enable boolean variable to audio

driver write function
This commit is contained in:
twinaphex 2017-01-25 17:30:34 +01:00
parent 3c67b2e547
commit e74853750b
26 changed files with 62 additions and 34 deletions

View File

@ -633,7 +633,8 @@ static bool audio_driver_flush(const int16_t *data, size_t samples)
} }
if (current_audio->write(audio_driver_context_audio_data, if (current_audio->write(audio_driver_context_audio_data,
output_data, output_frames * output_size * 2) < 0) output_data, output_frames * output_size * 2,
is_perfcnt_enable) < 0)
{ {
audio_driver_active = false; audio_driver_active = false;
return false; return false;

View File

@ -49,7 +49,8 @@ typedef struct audio_driver
* *
* Write samples to audio driver. * Write samples to audio driver.
**/ **/
ssize_t (*write)(void *data, const void *buf, size_t size); ssize_t (*write)(void *data, const void *buf, size_t size,
bool is_perfcnt_enable);
/* Stops driver. */ /* Stops driver. */
bool (*stop)(void *data); bool (*stop)(void *data);

View File

@ -228,7 +228,8 @@ static bool audio_thread_use_float(void *data)
return thr->use_float; return thr->use_float;
} }
static ssize_t audio_thread_write(void *data, const void *buf, size_t size) static ssize_t audio_thread_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
ssize_t ret; ssize_t ret;
audio_thread_t *thr = (audio_thread_t*)data; audio_thread_t *thr = (audio_thread_t*)data;
@ -236,7 +237,8 @@ static ssize_t audio_thread_write(void *data, const void *buf, size_t size)
if (!thr) if (!thr)
return 0; return 0;
ret = thr->driver->write(thr->driver_data, buf, size); ret = thr->driver->write(thr->driver_data, buf, size,
is_perfcnt_enable);
if (ret < 0) if (ret < 0)
{ {

View File

@ -167,7 +167,8 @@ error:
return NULL; return NULL;
} }
static ssize_t alsa_write(void *data, const void *buf_, size_t size_) static ssize_t alsa_write(void *data, const void *buf_, size_t size_,
bool is_perfcnt_enable)
{ {
alsa_t *alsa = (alsa_t*)data; alsa_t *alsa = (alsa_t*)data;
const uint8_t *buf = (const uint8_t*)buf_; const uint8_t *buf = (const uint8_t*)buf_;

View File

@ -219,7 +219,8 @@ static int check_pcm_status(void *data, int channel_type)
} }
static ssize_t alsa_qsa_write(void *data, const void *buf, size_t size) static ssize_t alsa_qsa_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
alsa_t *alsa = (alsa_t*)data; alsa_t *alsa = (alsa_t*)data;
snd_pcm_sframes_t written = 0; snd_pcm_sframes_t written = 0;

View File

@ -243,7 +243,8 @@ error:
return NULL; return NULL;
} }
static ssize_t alsa_thread_write(void *data, const void *buf, size_t size) static ssize_t alsa_thread_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
alsa_thread_t *alsa = (alsa_thread_t*)data; alsa_thread_t *alsa = (alsa_thread_t*)data;

View File

@ -332,7 +332,8 @@ error:
return NULL; return NULL;
} }
static ssize_t coreaudio_write(void *data, const void *buf_, size_t size) static ssize_t coreaudio_write(void *data, const void *buf_, size_t size,
bool is_perfcnt_enable)
{ {
coreaudio_t *dev = (coreaudio_t*)data; coreaudio_t *dev = (coreaudio_t*)data;
const uint8_t *buf = (const uint8_t*)buf_; const uint8_t *buf = (const uint8_t*)buf_;

View File

@ -162,7 +162,8 @@ static void ctr_csnd_audio_free(void *data)
free(ctr); free(ctr);
} }
static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size) static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
int i; int i;
uint32_t samples_played = 0; uint32_t samples_played = 0;
@ -177,7 +178,7 @@ static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size)
(void)current_tick; (void)current_tick;
performance_counter_init(ctraudio_f, "ctraudio_f"); performance_counter_init(ctraudio_f, "ctraudio_f");
performance_counter_start(ctraudio_f); performance_counter_start_plus(is_perfcnt_enable, ctraudio_f);
ctr_csnd_audio_update_playpos(ctr); ctr_csnd_audio_update_playpos(ctr);
@ -209,7 +210,7 @@ static ssize_t ctr_csnd_audio_write(void *data, const void *buf, size_t size)
GSPGPU_FlushDataCache(ctr->l, CTR_CSND_AUDIO_SIZE); GSPGPU_FlushDataCache(ctr->l, CTR_CSND_AUDIO_SIZE);
GSPGPU_FlushDataCache(ctr->r, CTR_CSND_AUDIO_SIZE); GSPGPU_FlushDataCache(ctr->r, CTR_CSND_AUDIO_SIZE);
performance_counter_stop(ctraudio_f); performance_counter_stop_plus(is_perfcnt_enable, ctraudio_f);
return size; return size;
} }

View File

@ -93,7 +93,8 @@ static void ctr_dsp_audio_free(void *data)
ndspExit(); ndspExit();
} }
static ssize_t ctr_dsp_audio_write(void *data, const void *buf, size_t size) static ssize_t ctr_dsp_audio_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
u32 pos; u32 pos;
static struct retro_perf_counter ctraudio_dsp_f = {0}; static struct retro_perf_counter ctraudio_dsp_f = {0};
@ -117,7 +118,7 @@ static ssize_t ctr_dsp_audio_write(void *data, const void *buf, size_t size)
} }
performance_counter_init(ctraudio_dsp_f, "ctraudio_dsp_f"); performance_counter_init(ctraudio_dsp_f, "ctraudio_dsp_f");
performance_counter_start(ctraudio_dsp_f); performance_counter_start_plus(is_perfcnt_enable, ctraudio_dsp_f);
pos = ctr->pos << 2; pos = ctr->pos << 2;
@ -140,7 +141,7 @@ static ssize_t ctr_dsp_audio_write(void *data, const void *buf, size_t size)
ctr->pos += size >> 2; ctr->pos += size >> 2;
ctr->pos &= CTR_DSP_AUDIO_COUNT_MASK; ctr->pos &= CTR_DSP_AUDIO_COUNT_MASK;
performance_counter_stop(ctraudio_dsp_f); performance_counter_stop_plus(is_perfcnt_enable, ctraudio_dsp_f);
return size; return size;
} }

View File

@ -426,7 +426,8 @@ static void dsound_set_nonblock_state(void *data, bool state)
ds->nonblock = state; ds->nonblock = state;
} }
static ssize_t dsound_write(void *data, const void *buf_, size_t size) static ssize_t dsound_write(void *data, const void *buf_, size_t size,
bool is_perfcnt_enable)
{ {
size_t written = 0; size_t written = 0;
dsound_t *ds = (dsound_t*)data; dsound_t *ds = (dsound_t*)data;

View File

@ -116,7 +116,8 @@ static INLINE void copy_swapped(uint32_t * restrict dst,
}while(--size); }while(--size);
} }
static ssize_t gx_audio_write(void *data, const void *buf_, size_t size) static ssize_t gx_audio_write(void *data, const void *buf_, size_t size,
bool is_perfcnt_enable)
{ {
size_t frames = size >> 2; size_t frames = size >> 2;
const uint32_t *buf = buf_; const uint32_t *buf = buf_;

View File

@ -292,7 +292,8 @@ static size_t write_buffer(jack_t *jd, const float *buf, size_t size)
return written * sizeof(float) * 2; return written * sizeof(float) * 2;
} }
static ssize_t ja_write(void *data, const void *buf, size_t size) static ssize_t ja_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
jack_t *jd = (jack_t*)data; jack_t *jd = (jack_t*)data;

View File

@ -35,7 +35,8 @@ static void null_audio_free(void *data)
(void)data; (void)data;
} }
static ssize_t null_audio_write(void *data, const void *buf, size_t size) static ssize_t null_audio_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
(void)data; (void)data;
(void)buf; (void)buf;

View File

@ -173,7 +173,8 @@ static size_t al_fill_internal_buf(al_t *al, const void *buf, size_t size)
return read_size; return read_size;
} }
static ssize_t al_write(void *data, const void *buf_, size_t size) static ssize_t al_write(void *data, const void *buf_, size_t size,
bool is_perfcnt_enable)
{ {
al_t *al = (al_t*)data; al_t *al = (al_t*)data;
const uint8_t *buf = (const uint8_t*)buf_; const uint8_t *buf = (const uint8_t*)buf_;

View File

@ -230,7 +230,8 @@ static bool sl_start(void *data, bool is_shutdown)
} }
static ssize_t sl_write(void *data, const void *buf_, size_t size) static ssize_t sl_write(void *data, const void *buf_, size_t size,
bool is_perfcnt_enable)
{ {
sl_t *sl = (sl_t*)data; sl_t *sl = (sl_t*)data;
size_t written = 0; size_t written = 0;

View File

@ -97,7 +97,8 @@ error:
return NULL; return NULL;
} }
static ssize_t oss_write(void *data, const void *buf, size_t size) static ssize_t oss_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
ssize_t ret; ssize_t ret;
int *fd = (int*)data; int *fd = (int*)data;

View File

@ -146,7 +146,8 @@ static void *ps3_audio_init(const char *device,
return data; return data;
} }
static ssize_t ps3_audio_write(void *data, const void *buf, size_t size) static ssize_t ps3_audio_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
ps3_audio_t *aud = data; ps3_audio_t *aud = data;

View File

@ -184,7 +184,8 @@ static void psp_audio_free(void *data)
free(psp); free(psp);
} }
static ssize_t psp_audio_write(void *data, const void *buf, size_t size) static ssize_t psp_audio_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
psp_audio_t* psp = (psp_audio_t*)data; psp_audio_t* psp = (psp_audio_t*)data;
uint16_t write_pos = psp->write_pos; uint16_t write_pos = psp->write_pos;

View File

@ -236,7 +236,8 @@ error:
return NULL; return NULL;
} }
static ssize_t pulse_write(void *data, const void *buf_, size_t size) static ssize_t pulse_write(void *data, const void *buf_, size_t size,
bool is_perfcnt_enable)
{ {
pa_t *pa = (pa_t*)data; pa_t *pa = (pa_t*)data;
const uint8_t *buf = (const uint8_t*)buf_; const uint8_t *buf = (const uint8_t*)buf_;

View File

@ -58,7 +58,8 @@ static void *ra_init(const char *device, unsigned rate, unsigned latency,
return roar; return roar;
} }
static ssize_t ra_write(void *data, const void *buf, size_t size) static ssize_t ra_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
int err; int err;
size_t written = 0; size_t written = 0;
@ -72,7 +73,8 @@ static ssize_t ra_write(void *data, const void *buf, size_t size)
ssize_t rc; ssize_t rc;
size_t write_amt = size - written; size_t write_amt = size - written;
if ((rc = roar_vs_write(roar->vss, (const char*)buf + written, write_amt, &err)) < (ssize_t)write_amt) if ((rc = roar_vs_write(roar->vss,
(const char*)buf + written, write_amt, &err)) < (ssize_t)write_amt)
{ {
if (roar->nonblocking) if (roar->nonblocking)
return rc; return rc;

View File

@ -102,7 +102,8 @@ error:
return NULL; return NULL;
} }
static ssize_t rs_write(void *data, const void *buf, size_t size) static ssize_t rs_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
rsd_t *rsd = (rsd_t*)data; rsd_t *rsd = (rsd_t*)data;

View File

@ -51,7 +51,8 @@ static void *rwebaudio_init(const char *device, unsigned rate, unsigned latency,
return data; return data;
} }
static ssize_t rwebaudio_write(void *data, const void *buf, size_t size) static ssize_t rwebaudio_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
(void)data; (void)data;
return RWebAudioWrite(buf, size); return RWebAudioWrite(buf, size);

View File

@ -137,7 +137,8 @@ static void *sdl_audio_init(const char *device,
return sdl; return sdl;
} }
static ssize_t sdl_audio_write(void *data, const void *buf, size_t size) static ssize_t sdl_audio_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
ssize_t ret = 0; ssize_t ret = 0;
sdl_audio_t *sdl = (sdl_audio_t*)data; sdl_audio_t *sdl = (sdl_audio_t*)data;

View File

@ -192,7 +192,8 @@ static bool ax_audio_start(void* data, bool is_shutdown)
return true; return true;
} }
static ssize_t ax_audio_write(void* data, const void* buf, size_t size) static ssize_t ax_audio_write(void* data, const void* buf, size_t size,
bool is_perfcnt_enable)
{ {
int i; int i;
static struct retro_perf_counter ax_audio_write_perf = {0}; static struct retro_perf_counter ax_audio_write_perf = {0};
@ -206,7 +207,7 @@ static ssize_t ax_audio_write(void* data, const void* buf, size_t size)
/* Measure copy performance from here */ /* Measure copy performance from here */
performance_counter_init(ax_audio_write_perf, "ax_audio_write"); performance_counter_init(ax_audio_write_perf, "ax_audio_write");
performance_counter_start(ax_audio_write_perf); performance_counter_start_plus(is_perfcnt_enable, ax_audio_write_perf);
if(count > AX_AUDIO_MAX_FREE) if(count > AX_AUDIO_MAX_FREE)
count = AX_AUDIO_MAX_FREE; count = AX_AUDIO_MAX_FREE;
@ -286,7 +287,7 @@ static ssize_t ax_audio_write(void* data, const void* buf, size_t size)
ax_audio_start(ax, false); ax_audio_start(ax, false);
/* Done copying new data */ /* Done copying new data */
performance_counter_stop(ax_audio_write_perf); performance_counter_stop_plus(is_perfcnt_enable, ax_audio_write_perf);
/* return what was actually copied */ /* return what was actually copied */
return (count << 2); return (count << 2);

View File

@ -201,7 +201,8 @@ static size_t xaudio2_write_avail(xaudio2_t *handle)
return handle->bufsize * (MAX_BUFFERS - handle->buffers - 1); return handle->bufsize * (MAX_BUFFERS - handle->buffers - 1);
} }
static size_t xaudio2_write(xaudio2_t *handle, const void *buf, size_t bytes_) static size_t xaudio2_write(xaudio2_t *handle, const void *buf, size_t bytes_,
bool is_perfcnt_enable)
{ {
unsigned bytes = bytes_; unsigned bytes = bytes_;
const uint8_t *buffer = (const uint8_t*)buf; const uint8_t *buffer = (const uint8_t*)buf;

View File

@ -57,7 +57,8 @@ static INLINE uint32_t bswap_32(uint32_t val)
((val >> 8) & 0xff00) | ((val << 8) & 0xff0000); ((val >> 8) & 0xff00) | ((val << 8) & 0xff0000);
} }
static ssize_t xenon360_audio_write(void *data, const void *buf, size_t size) static ssize_t xenon360_audio_write(void *data, const void *buf, size_t size,
bool is_perfcnt_enable)
{ {
size_t written = 0, i; size_t written = 0, i;
const uint32_t *in_buf = buf; const uint32_t *in_buf = buf;