X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faudio_output%2Fhd1000a.cpp;h=1b736dabc2c5871f82d57bd8cde12cf097f2e4cd;hb=24cddfa0efa80557f538d6dbf08f9b0b4b4d52a4;hp=590ad8eb75c8357056d8edcc91c91193fc286568;hpb=df61d33b06e2b3cbbe746b2f5a9bea5b370c24ff;p=vlc diff --git a/modules/audio_output/hd1000a.cpp b/modules/audio_output/hd1000a.cpp index 590ad8eb75..1b736dabc2 100644 --- a/modules/audio_output/hd1000a.cpp +++ b/modules/audio_output/hd1000a.cpp @@ -32,7 +32,8 @@ extern "C" # include "config.h" #endif -#include +#include +#include #include #include "aout_internal.h" @@ -66,21 +67,21 @@ static int Open ( vlc_object_t * ); static void Close ( vlc_object_t * ); static void Play ( aout_instance_t * ); -static int Thread ( aout_instance_t * ); +static void* Thread ( vlc_object_t * ); static void InterleaveS16( int16_t *, int16_t * ); /***************************************************************************** * Module descriptor *****************************************************************************/ -vlc_module_begin(); - set_shortname( "Roku HD1000" ); - set_description( _("Roku HD1000 audio output") ); - set_capability( "audio output", 100 ); - set_category( CAT_AUDIO ); - set_subcategory( SUBCAT_AUDIO_AOUT ); - set_callbacks( Open, Close ); -vlc_module_end(); +vlc_module_begin () + set_shortname( "Roku HD1000" ) + set_description( N_("Roku HD1000 audio output") ) + set_capability( "audio output", 100 ) + set_category( CAT_AUDIO ) + set_subcategory( SUBCAT_AUDIO_AOUT ) + set_callbacks( Open, Close ) +vlc_module_end () /***************************************************************************** * Open: open a dummy audio device @@ -96,18 +97,14 @@ static int Open( vlc_object_t * p_this ) p_aout->output.p_sys = p_sys = (aout_sys_t *)malloc( sizeof( aout_sys_t ) ); if( p_aout->output.p_sys == NULL ) - { - msg_Err( p_aout, "out of memory" ); - return VLC_EGENERIC; - } + return VLC_ENOMEM; /* New PCMAudioPlayer */ p_sys->pPlayer = pPlayer = new PCMAudioPlayer(); if( p_sys->pPlayer == NULL ) { - msg_Err( p_aout, "out of memory" ); free( p_sys ); - return VLC_EGENERIC; + return VLC_ENOMEM; } /* Get Buffer Requirements */ @@ -126,10 +123,9 @@ static int Open( vlc_object_t * p_this ) p_sys->ppBuffers = (void **)malloc( p_sys->nBuffers * sizeof( void * ) ); if( p_sys->ppBuffers == NULL ) { - msg_Err( p_aout, "out of memory" ); delete pPlayer; free( p_sys ); - return VLC_EGENERIC; + return VLC_ENOMEM; } /* Open PCMAudioPlayer */ @@ -160,7 +156,7 @@ static int Open( vlc_object_t * p_this ) } } - p_aout->output.output.i_format = AOUT_FMT_S16_NE; + p_aout->output.output.i_format = VLC_CODEC_S16N; p_aout->output.i_nb_samples = FRAME_SIZE; p_aout->output.output.i_physical_channels = AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT; @@ -172,7 +168,7 @@ static int Open( vlc_object_t * p_this ) /* Create thread and wait for its readiness. */ if( vlc_thread_create( p_aout, "aout", Thread, - VLC_THREAD_PRIORITY_OUTPUT, false ) ) + VLC_THREAD_PRIORITY_OUTPUT ) ) { msg_Err( p_aout, "cannot create OSS thread (%m)" ); pPlayer->Close(); @@ -220,13 +216,15 @@ static void Play( aout_instance_t * p_aout ) /***************************************************************************** * Thread: thread used to DMA the data to the device *****************************************************************************/ -static int Thread( aout_instance_t * p_aout ) +static void* Thread( vlc_object_t *p_this ) { + aout_instance_t * p_aout = (aout_instance_t*)p_this; aout_buffer_t * p_buffer; struct aout_sys_t * p_sys = p_aout->output.p_sys; PCMAudioPlayer * pPlayer = p_sys->pPlayer; + int canc = vlc_savecancel (); - while( !p_aout->b_die ) + while( vlc_object_alive (p_aout) ) { pPlayer->WaitForBuffer(); @@ -237,7 +235,7 @@ static int Thread( aout_instance_t * p_aout ) #define i p_sys->nNextBufferIndex if( p_buffer == NULL ) { - p_aout->p_libvlc->pf_memset( p_sys->ppBuffers[ i ], 0, + vlc_memset( p_aout, p_sys->ppBuffers[ i ], 0, p_sys->nBufferSize ); } else @@ -257,7 +255,8 @@ static int Thread( aout_instance_t * p_aout ) #undef i } - return VLC_SUCCESS; + vlc_restorecancel (canc); + return NULL; } /*****************************************************************************