Browse
 
Tools
Rss Categories

LV_SRE_StreamSendData

Reference Number: AA-00730 Views: 1714 0 Rating/ Voters

Send data buffer of sound data to stream.

Function

  • int LV_SRE_StreamSendData(HPORT hport, void* SoundData, int SoundDataLength)

Parameters

hport

The port's handle.

SoundData

Pointer to the memory buffer containing the sound data.

SoundDataLength

Size of the sound data, in bytes.

Return Values

LV_SUCCESS

No errors; data accepted.

LV_INVALID_HPORT

The input hport is not a valid one.

LV_FAILURE

The operation failed because the port was shutting down.

LV_STREAM_NOT_ACCEPTED

The data was not accepted, likely because the port was not ready to receive data. Ensure that LV_SRE_StreamStart was called first.

LV_EXCEPTION

An exception occurred while processing the request.

Remarks

This function is used to do the actual streaming. Call it with each filled sound data buffer. This call copies sound data to an internal buffer and returns immediately. The processing of sound data takes place on a background thread.

C Code

  1. // Here, audio_length is the length of the audio file being streamed.
  2. // pStreamingUserData contains information about the given audio stream.
  3. unsigned char* audio_buffer = (unsigned char*)malloc(audio_length);
  4. unsigned char* CurrentPos = audio_buffer;
  5. int StreamedBytes = 0;
  6. int ChunkBytes = 2400;

  7. while (CurrentPos != (audio_buffer + audio_length))
  8. {
  9. if (pStreamingUserData->StopStreaming == true)
  10. pStreamingUserData->Streaming = -1;

  11. // Check to see if streaming has stopped; if so, break. Next, make sure
  12. // that you are not trying to send in more than the entire length of the
  13. // audio. Once these conditions are accounted for, then you can pass the
  14. // audio chunk to the ASR.
  15. SpeechPortReturnValue = LV_SRE_StreamSendData(
  16. pStreamingUserData->PortHandle, CurrentPos, ChunkBytes);

  17. // Sleep to allow streaming to finish.
  18. SLEEP_MS(ChunkBytes/8)

  19. // Make another check to see if streaming has stopped
  20. // Finally, append the amount we just passed to our total so far, and
  21. // move the current position accordingly
  22. StreamedBytes += ChunkBytes;
  23. CurrentPos += ChunkBytes;
  24. }

See Also