mmReadStream

Reads media data out of a stream at the current position. Only entire media samples are read. Media samples are also called frames for audio and video data.

Prototype

DWORD mmReadStream ( MMSTREAM *pMMStream, unsigned sampleCount, BYTE *pBuffer, unsigned bufferSize, unsigned *pByteCount)

Argument

Description

pMMStream

Returns a pointer to the object that controls the stream.

sampleCount

The number of samples to read. Specify SAMPLE_COUNT_MAX to read as many entire samples as the buffer can contain.

pBuffer

A pointer to the recipient buffer where the media data is copied.

bufferSize

The maximum size of the recipient buffer, in bytes.

pByteCount

A pointer to the actual number of bytes copied. The Video Messaging Server Interface returns this value after the end of stream is reached (return value MMERR_END_OF_STREAM).

Return values

Return value

Description

SUCCESS

 

MMERR_BUFFER_TOO_SMALL

Recipient buffer is too small to receive the entire media sample.

MMERR_END_OF_STREAM

End of stream reached. Check the pByteCount value.

MMERR_FILE_FORMAT

Error in file format.

MMERR_FILE_READ_FAILURE

File read failure.

MMERR_INCOMP_ACCESS_MODE

Stream was not opened for read operation.

MMERR_INVALID_POINTER

Either pBuffer or pByteCount is null.

MMERR_INVALID_STREAM

pMMStream is invalid.

Example

DWORD ret;
unsigned char *pBuffer;
unsigned byteCount;
pBuffer = (unsigned char *)malloc(bufferSize);

ret = mmReadStream(&mmStream, SAMPLE_COUNT_MAX, pBuffer,
bufferSize, &byteCount);

if ((ret != SUCCESS) && (ret != MMERR_END_OF_STREAM))
    {
      printf("\nERROR: failed to read the stream from file. ret (%d)\n", ret);
    }