# adiGetPlayStatus

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

#### Supported board types

- AG

- CG

#### 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 );
}