Rewrite next C code to Rust: /*
 * This routine will be called by the PortAudio engine when audio is needed.
 * It may called at interrupt level on some machines so don't do anything
 * that could mess up the system like calling malloc() or free().
 */
static int read_callback(const void *inputBuffer, void *outputBuffer,
			 unsigned long frameCount,
			 const PaStreamCallbackTimeInfo *timeInfo,
			 PaStreamCallbackFlags statusFlags, void *userData)
{
	struct ausrc_st *st = userData;
	struct auframe af;
	size_t sampc;

	(void)outputBuffer;
	(void)timeInfo;
	(void)statusFlags;

	if (!st->ready)
		return paAbort;

	sampc = frameCount * st->prm.ch;

	auframe_init(&af, st->prm.fmt, (void *)inputBuffer, sampc,
		     st->prm.srate, st->prm.ch);
	af.timestamp = Pa_GetStreamTime(st->stream_rd) * AUDIO_TIMEBASE;

	st->rh(&af, st->arg);

	return paContinue;
} Wrap the entire output in JSON format.
user