[vlc-commits] audiotrack: simplify native rate handling
Thomas Guillem
git at videolan.org
Fri Oct 7 18:59:39 CEST 2016
vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Fri Oct 7 17:18:37 2016 +0200| [e6eeea3311323a42dfd3a0e19a1c8ef36fb27ded] | committer: Thomas Guillem
audiotrack: simplify native rate handling
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e6eeea3311323a42dfd3a0e19a1c8ef36fb27ded
---
modules/audio_output/audiotrack.c | 26 +++++++++-----------------
1 file changed, 9 insertions(+), 17 deletions(-)
diff --git a/modules/audio_output/audiotrack.c b/modules/audio_output/audiotrack.c
index eae1108..8ba65ba 100644
--- a/modules/audio_output/audiotrack.c
+++ b/modules/audio_output/audiotrack.c
@@ -893,8 +893,7 @@ Start( audio_output_t *p_aout, audio_sample_format_t *restrict p_fmt )
{
aout_sys_t *p_sys = p_aout->sys;
JNIEnv *env;
- int i_nb_channels, i_max_channels, i_native_rate = 0, i_ret;
- unsigned int i_rate;
+ int i_nb_channels, i_max_channels, i_ret;
bool b_spdif;
int i_at_format;
@@ -921,17 +920,14 @@ Start( audio_output_t *p_aout, audio_sample_format_t *restrict p_fmt )
p_sys->fmt.i_original_channels = p_sys->fmt.i_physical_channels;
- if( b_spdif )
- {
- i_native_rate = p_sys->fmt.i_rate;
- }
- else
+ if( !b_spdif )
{
+ int i_rate = 0;
if (jfields.AudioTrack.getNativeOutputSampleRate)
- i_native_rate = JNI_AT_CALL_STATIC_INT( getNativeOutputSampleRate,
- jfields.AudioManager.STREAM_MUSIC );
- if( i_native_rate <= 0 )
- i_native_rate = VLC_CLIP( p_sys->fmt.i_rate, 4000, 48000 );
+ i_rate = JNI_AT_CALL_STATIC_INT( getNativeOutputSampleRate,
+ jfields.AudioManager.STREAM_MUSIC );
+ p_sys->fmt.i_rate = i_rate > 0 ? i_rate
+ : VLC_CLIP( p_sys->fmt.i_rate, 4000, 48000 );
}
do
@@ -1000,15 +996,12 @@ Start( audio_output_t *p_aout, audio_sample_format_t *restrict p_fmt )
else
p_sys->fmt.i_physical_channels = AOUT_CHANS_STEREO;
}
- i_rate = p_sys->fmt.i_format == VLC_CODEC_SPDIFB ?
- VLC_CLIP( p_sys->fmt.i_rate, 32000, 48000 )
- : (unsigned int) i_native_rate;
/* Try to create an AudioTrack with the most advanced channel and
* format configuration. If AudioTrack_Create fails, try again with a
* less advanced format (PCM S16N). If it fails again, try again with
* Stereo channels. */
- i_ret = AudioTrack_Create( env, p_aout, i_rate, i_at_format,
+ i_ret = AudioTrack_Create( env, p_aout, p_sys->fmt.i_rate, i_at_format,
p_sys->fmt.i_physical_channels );
if( i_ret != 0 )
{
@@ -1037,7 +1030,6 @@ Start( audio_output_t *p_aout, audio_sample_format_t *restrict p_fmt )
if( i_ret != 0 )
return VLC_EGENERIC;
- p_sys->fmt.i_rate = i_rate;
p_sys->b_spdif = p_sys->fmt.i_format == VLC_CODEC_SPDIFB;
if( p_sys->b_spdif )
{
@@ -1099,7 +1091,7 @@ Start( audio_output_t *p_aout, audio_sample_format_t *restrict p_fmt )
p_sys->circular.i_read = p_sys->circular.i_write = 0;
/* 2 seconds of buffering */
- p_sys->circular.i_size = (int)i_rate * AOUT_MAX_PREPARE_TIME
+ p_sys->circular.i_size = (int)p_sys->fmt.i_rate * AOUT_MAX_PREPARE_TIME
* p_sys->fmt.i_bytes_per_frame
/ p_sys->fmt.i_frame_length
/ CLOCK_FREQ;
More information about the vlc-commits
mailing list