Share via


IAVIStream::Read

The Read method reads data from a stream and copies it to an application-defined buffer. If no buffer is supplied, it determines the buffer size needed to retrieve the next buffer of data. Called when an application uses the AVIStreamRead function.

HRESULT Read(
  PAVISTREAM ps,   
  LONG lStart,     
  LONG lSamples,   
  LPVOID lpBuffer, 
  LONG cbBuffer,   
  LONG *plBytes,   
  LONG *plSamples  
);

Parameters

ps

Pointer to the interface to a stream.

lStart

Starting sample or frame number to read.

lSamples

Number of samples to read.

lpBuffer

Pointer to the application-defined buffer to contain the stream data. You can also specify NULL to request the required size of the buffer. Many applications precede each read operation with a query for the buffer size to see how large a buffer is needed.

cbBuffer

Size, in bytes, of the buffer specified by lpBuffer.

plBytes

Pointer to a buffer that receives the number of bytes read.

plSamples

Pointer to a buffer that receives the number of samples read.

Return Values

Returns AVIERR_OK if successful or AVIERR_BUFFERTOOSMALL if the buffer is not large enough to hold the data. If successful, Read also returns either a buffer of data with the number of frames (samples) included in the buffer or the required buffer size, in bytes.

Remarks

For handlers written in C++, Read has the following syntax:

HRESULT Read(LONG lStart, LONG lSamples, 
    LPVOID lpBuffer, LONG cbBuffer, 
    LONG *plBytes, LONG *plSamples); 
 

Requirements

**  Windows NT/2000/XP:** Included in Windows NT 3.1 and later.
**  Windows 95/98/Me:** Included in Windows 95 and later.
**  Header:** Declared in Vfw.h.
**  Library:** Use Vfw32.lib.

See Also

Custom File and Stream Handlers, Custom File and Stream Handler Interfaces, AVIStreamRead