(Page 41 of 69 in this chapter) Version
{ /* parms related to adiStartPlaying: */
DWORD size; /* size of this structure */
DWORD DTMFabort; /* abort on DTMF */
INT32 gain; /* playing gain in dB */
DWORD speed; /* initial speed in percent */
DWORD maxspeed; /* maximum play speed in percent */
} ADI_PLAY_PARMS;
int NMSSTDCALL readAccess (
void *userarg,
void *buffer,
unsigned size,
unsigned *rsize )
{
FILE *fp = (FILE *)userarg;
*rsize = fread( buffer, 1, size, fp );
if ( ferror( fp ) )
return -1;
if ( feof( fp ) )
return ADI_PLAY_LAST_BUFFER;
return SUCCESS;
}
int myPlayFile( CTAHD ctahd, unsigned encoding, char *filename )
{
CTA_EVENT event;
FILE *fp;
/* note: binary open */
if( (fp = fopen( filename, "wb" )) == NULL )
return MYFAILURE;
if( adiStartPlaying( ctahd, encoding, readAccess, fp, NULL ) != SUCCESS )
return MYFAILURE;
do
{
myGetEvent( &event ); /* see ctaWaitEvent example */
} while( event.id != ADIEVN_PLAY_DONE );
fclose( fp );
if( event.value == CTA_REASON_RELEASED )
return MYDISCONNECT; /* call has been terminated */
else if( CTA_IS_ERROR( event.value ) )
return MYFAILURE; /* API error */
else
return SUCCESS; /* stopped normally */
}
(Page 41 of 69 in this chapter) Version