Графика для Windows средствами DirectDraw
Шрифт:
AVIStreamFindSample
AVIStreamGetFrame
AVIStreamGetFrameClose
AVIStreamGetFrameOpen
AVIStreamInfo
AVIStreamLength
AVIStreamOpenFromFile
AVIStreamRead
AVIStreamReadData
AVIStreamReadFormat
AVIStreamRelease
AVIStreamSampleToTime
AVIStreamSetFormat
AVIStreamStart
AVIStreamTimeToSample
AVIStreamWrite
AVIStreamWriteData
CreateEditableStream
EditStreamClone
EditStreamCopy
EditStreamCut
EditStreamPaste
EditStreamSetInfo
EditStreamSetName
ICClose
ICCompress
ICCompressorChoose
ICCompressorFree
ICDecompress
ICDecompressEx
ICDecompressExBegin
ICDecompressExQuery
ICDraw
ICDrawBegin
ICDrawSuggestFormat
ICGetInfo
ICGetDisplayFormat
ICImageCompress
ICImageDecompress
ICInfo
ICInstall
ICLocate
ICOpen
ICOpenFunction
ICRemove
ICSendMessage
ICSeqCompressFrame
ICCompressFrameEnd
ICCompressFrameStart
ICGetStatusProc
MyStatusProc
Конечно,
Не забудьте включить VFW в проект
Перед тем как пользоваться функциями Video For Windows, необходимо включить в проект заголовочный файл vfw.h и добавить vfw32.lib в список файлов компоновщика.
Для правильной работы функций из табл. 8.1 необходимо инициализировать VFW функцией AVIFileInit. Эта функция не получает аргументов и не возвращает никакого значения, поэтому работать с ней проще простого.
После инициализации VFW можно создавать поток функцией AVIStreamOpenFromFile. Эта функция получает в одном из аргументов имя AVI-файла и инициализирует по нему логический номер потока. Полученный логический номер затем используется как аргумент большинства функций VFW и определяет поток, с которым выполняется операция.
В частности, по логическому номеру, возвращаемому AVIStreamOpenFromFile, можно получить сведения о видеоролике. Функция AVIStreamReadFormat сообщает такие данные, как количество кадров, размер изображения и глубина пикселей; для этого она заполняет структуру BITMAPINFOHEADER (возможно,
Некоторые поля структуры (например, biXPelsPerMeter и biYPelsPerMeter) не имеют отношения к AVI-файлам, но таких полей немного. Размеры, глубина пикселей, алгоритм сжатия и количество цветов — все это можно взять из структуры BITMAPINFOHEADER после успешного вызова функции AVIStreamReadFormat.
Более подробные сведения о потоке можно получить с помощью функции AVIStreamInfo. Функция AVIStreamInfo, как и функция AVIStreamReadFormat, получает в качестве аргумента логический номер и заполняет структуру данными о потоке. Для передачи информации AVIStreamInfo использует структуру AVISTREAMINFO. Ее определение в файле vfw.h выглядит так:
Давайте рассмотрим некоторые ключевые поля этой структуры. Первое поле, fccType, определяет тип потока. В файлах формата AVI поддерживаются четыре типа потоковых данных: видео, аудио, MIDI (музыка) и текст. В этой книге будут рассматриваться только видеопотоки.