Чтение из потока

[Функция, связанная с этой страницей, функции и макросы AVIFile, является устаревшей функцией. Был заменён ридером на. средство чтения источников оптимизировано для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует новый код использовать Source Reader вместо функций и макросов AVIFile, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Вы можете получить сведения об открытом потоке с помощью функции AVIStreamInfo. Эта функция заполняет структуруAVISTREAMINFO, например тип данных в потоке, метод сжатия, используемый при записи данных потока, предлагаемый размер буфера, скорость воспроизведения и текстовое описание потока.

Некоторые члены структурыAVISTREAMINFOтакже присутствуют в структуреAVIFILEINFO. Сведения в структуре AVIFILEINFO применяются ко всему файлу. Сведения в структуре AVISTREAMINFO относятся к доступному потоку и имеют приоритет над информацией в структуре AVIFILEINFO.

Если с потоком связаны дополнительные сведения, эти сведения можно получить с помощью функции AVIStreamReadData. Эта функция возвращает сведения в буфере, предоставленном приложением. Дополнительные сведения о потоке могут включать параметры конфигурации для методов сжатия и декомпрессии, используемых в потоке. Требуемый размер буфера можно получить с помощью макроса AVIStreamDataSize.

Вы можете получить сведения о форматировании потока с помощью функции AVIStreamReadFormat. Эта функция возвращает зависимую от потока структуру в буфере, предоставленном приложением. Для видеопотока буфер содержит сведения о форматировании в структуре BITMAPINFO. Для аудиопотока буфер содержит информацию о форматировании в структуре WAVEFORMATEX или PCMWAVEFORMAT. Для других типов потоков обработчик потоков возвращает сведения, относящиеся к потоку. Требуемый размер буфера можно определить с помощью AVIStreamReadFormat и указания адреса буфера NULL или с помощью макросаAVIStreamFormatSize.

Содержимое мультимедиа можно получить в потоке с помощью функции AVIStreamRead. Эта функция копирует необработанные данные из потока в буфер, предоставленный приложением. Для видеопотоков эта функция извлекает битовые изображения, составляющие содержимое кадра. Для аудиопотоков эта функция получает образцы звука в формате волны, составляющие звуковое содержимое. Требуемый размер буфера можно определить с помощью AVIStreamRead и указания адреса буфера NULL или с помощью макроса AVIStreamSampleSize.

Некоторые обработчики потоков AVI представляют задержки, связанные с инициализацией программного обеспечения и оборудования или координации. Вы можете проинформировать этих обработчиков о подготовке к потоковой передаче данных с помощью функции AVIStreamBeginStreaming. Эта функция позволяет обработчику потоков выделять и инициализировать необходимые ресурсы. Чтобы сообщить этим обработчикам о завершении потоковой передачи, используйте функциюAVIStreamEndStreaming. Эта функция позволяет обработчику потока освободить ресурсы, выделенные для AVIStreamBeginStreaming.

Функция AVIStreamRead не предоставляет службы распаковки. Сведения о сжатии и распаковке звуковых потоков см. в Диспетчере сжатия звука. Сведения о сжатии и распаковке видеопотоков см. в разделе Диспетчер сжатия видео. Сведения о сжатии и распаковке отдельных кадров в видеопотоке см. в работе с сжатыми видеоданными в видеопотоке.

операции потоковой передачи