adiGetPlayStatus

Retrieves status for the active or most recently executed play operation.

Supported board types

Prototype

DWORD adiGetPlayStatus ( CTAHD ctahd, ADI_PLAY_STATUS *info, unsigned size)

Argument

Description

ctahd

Context handle returned by ctaCreateContext or ctaAttachContext.

info

Pointer to the ADI_PLAY_STATUS structure, as shown:

typedef struct
{
  DWORD size;       /* returned size (GetPlayStatus())*/
  DWORD reason;     /* reason last play ended         */
  DWORD buffercount;/* counter of buffers submitted   */
  DWORD framecount; /* number of frames submitted     */
  DWORD totalbytes; /* total bytes submitted          */
  void *buffer;     /* last buffer pointer submitted  */
  DWORD bytecount;  /* size of last buffer submitted  */
  DWORD bytesplayed;/* total bytes actually played    */
  DWORD timestarted;/* actual time started (ms units) */
  DWORD underrun;   /* counts out-of-frame events     */
} ADI_PLAY_STATUS;

Refer to the Details section for field descriptions.

size

Amount of memory available at info to receive the ADI_PLAY_STATUS.

Return values

Return value

Description

SUCCESS

 

CTAERR_BAD_ARGUMENT

info is NULL.

CTAERR_BAD_SIZE

size is smaller than the size of DWORD.

CTAERR_INVALID_CTAHD

Context handle is invalid.

CTAERR_INVALID_STATE

Function not valid in the current port state.

CTAERR_SVR_COMM

Server communication error.

Details

Use adiGetPlayStatus to retrieve status information about the active or most recently completed voice play operation for the specified context.

Up to size bytes of the ADI_PLAY_STATUS structure are copied to the address pointed to by info. If size is greater than or equal to the size of ADI_PLAY_STATUS, the complete structure is copied. The number of bytes copied is returned in the ADI_PLAY_STATUS size field.

adiGetPlayStatus can be issued while actively playing. If there is no active play operation, the status information pertains to the most recently completed instance.

The ADI_PLAY_STATUS structure contains the following fields:

Field

Description

size

Number of bytes copied to info.

reason

Termination condition for the last ADIEVN_PLAY_DONE. This field is 0 if the play operation is active, or if it has not been started since the context was last opened.

buffercount

Number of buffers submitted.

framecount

Number of voice frames submitted.

totalbytes

Number of bytes submitted by the application.

buffer

Last buffer pointer submitted.

bytecount

Size of the last buffer submitted.

bytesplayed

Total number of bytes actually processed by the DSP and transmitted.

timestarted

Timestamp for when the play operation started. Refer to adiGetTimeStamp.

underrun

Total number of underruns during the play instance.

See also

adiPlayAsync, adiPlayFromMemory, adiStartPlaying, adiStopPlaying

Example

void myShowPlayStatus( CTAHD ctahd )
{
    ADI_PLAY_STATUS playstatus;

    adiGetPlayStatus
( ctahd, &playstatus, sizeof playstatus );

    printf( "Termination condition=%x bytes played=%d\n",
            playstatus.reason, playstatus.bytesplayed );
}