*****************************************************************************/
struct aout_sys_t
{
- uint8_t chans_to_reorder; /* do we need channel reordering */
- uint8_t chan_table[AOUT_CHAN_MAX];
-
- UInt32 i_numberOfChannels;
TPCircularBuffer circular_buffer; /* circular buffer to swap the audio data */
/* AUHAL specific */
int i_rate; /* media sample rate */
int i_bytes_per_sample;
bool b_got_first_sample;
-
- vlc_mutex_t lock;
};
#pragma mark -
if (unlikely(sys == NULL))
return VLC_ENOMEM;
- vlc_mutex_init(&sys->lock);
-
aout->sys = sys;
aout->start = Start;
aout->stop = Stop;
audio_output_t *aout = (audio_output_t *)obj;
aout_sys_t *sys = aout->sys;
- vlc_mutex_destroy(&sys->lock);
-
free(sys);
}
UInt32 i_param_size = 0;
AudioComponentDescription desc;
AURenderCallbackStruct callback;
- p_aout->sys->chans_to_reorder = 0;
OSStatus status;
/* Lets go find our Component */
p_sys->b_got_first_sample = true;
}
- /* Do the channel reordering */
- if (p_sys->chans_to_reorder) {
- aout_ChannelReorder(p_block->p_buffer,
- p_block->i_buffer,
- p_sys->chans_to_reorder,
- p_sys->chan_table,
- VLC_CODEC_FL32);
- }
-
/* move data to buffer */
if (unlikely(!TPCircularBufferProduceBytes(&p_sys->circular_buffer, p_block->p_buffer, p_block->i_buffer)))
msg_Warn(p_aout, "Audio buffer was dropped");
/* check if we have enough data */
if (!availableBytes) {
/* return an empty buffer so silence is played until we have data */
- for (UInt32 j = 0; j < inNumberFrames; j++)
- targetBuffer[j] = 0.;
+ memset(targetBuffer, 0, bytesToCopy);
} else {
memcpy(targetBuffer, buffer, __MIN(bytesToCopy, availableBytes));
TPCircularBufferConsume(&p_sys->circular_buffer, __MIN(bytesToCopy, availableBytes));
VLC_UNUSED(inNumberFrames);
+ if (availableBytes < bytesToCopy)
+ memset((uint8_t*) targetBuffer + availableBytes, 0, bytesToCopy - availableBytes);
}
return noErr;