Реферат: Обзор элементов языка программирования

Для работы с таймером используются порты (всего 4), на которых для нас интерес представляют порт $42 (порт второго канала таймера) и порт $43 (порт управляющего слова — открыт только для записи). Каждый канал имеет свой

Выполнил Муханов А. 05.12.09. КР 3706002 000009 ПЗ лист Проверила Енсепова Г.К. 07.12.09.

6

изм лист № докум Подпись Дата

счетчик, содержимое которого уменьшается от некоторого максимального значения. Для второго канала определена константа $1234DD. Это значение представляет собой число, которое нужно разделить на частоту в герцах, чтобы получить значение счётчика для таймера.

Итак, мы выяснили, что единичное значение управляющего бита b0 означает, что динамик подключён к каналу, а нулевое значение – что он отключён от канала. Динамик включён, если бит b1равен единице. Таким образом, прежде всего надо научиться «включать» биты b0 и b1, записывая в них единичные значение, не изменяя значений всех прочих битов. Чтобы сообщить таймеру о том, что следующие два байта являются значением типа Word, обратно пропорциональным частоте, и что на выходе должен быть прямоугольный импульс, в порт микросхемы таймера $43 должно быть записано значение $86. После этого таймер будет включать и выключать динамик с определённой частотой.

Выполнил Муханов А. 05.12.09. КР 3706002 000009 ПЗ лист Проверила Енсепова Г. К. 07.12.09.

7

изм лист № докум Подпись Дата

2 Специальная часть

2.1 Общая постановка задачи

Темой данной курсовой работы, который был выполнен в ходе изучения курса “Основы алгоритмизации и программирования” является, - «Обработка потока, поступающего с видео и аудио устройства».

Далее мы обсудим: что такое DirectShow, для чего он предназначен, как он работает и рассмотрим технологию программирования звука. Потом нам предстоит написать программу, которая генерирует последовательности прямоугольных звуковых импульсов (стр. 21-22)

DirectShow – это архитектура для воспроизведения, перехвата и обработки потоков мультимедиа. С помощью этого API можно:

· проигрывать мультимедийные файлы различного формата, такие как MPEG (Motion Picture Experts Group), AVI (Audio-Video Interleaved), MP2 (MPEG Audio Layer-2), DVD и конечно WAV;

· перехватывать видео-поток с различного рода TV-карт, видеокамер и т.п.;

· создавать нестандартные обработчики мультимедиа-потоков и свои собственные форматы файлов;

· обращаться непосредственно к видео и аудио потокам, чтобы выводить их на SurfaceDirectDraw.

DirectShow интегрирован с DirectX так, что использует DirectDraw и DirectSound для вывода изображения и звука, и, при наличии аппаратного ускорения, автоматически им воспользуется.

В концепции DirectShow мультимедийные данные – это поток, который проходит через несколько обрабатывающих блоков. Блоки, обрабатывающие поток данных, передают данные по цепочке друг другу, таким образом можно представить себе несколько “устройств”, каждое из которых выполняет какую-то обработку данных и передает их соседнему “устройству”. Эти “устройства” или “блоки обработки” данных называют фильтрами. Цепочка, по которой передаются данные, содержит несколько фильтров, связанных определенным образом.

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

Для создания такой “цепочки обработки” (которая, кстати, официально называются Filter Graph – “граф фильтров” или, в несколько вольном переводе - “схема соединения фильтров”), так вот для создания схемы соединения фильтров, предназначен самый базовый и лежащий в основе всех основ компонент DirectShow, под названием Filter Graph Manager – Менеджер Графа Фильтров.

Например, программа показывающая видео из AVI-файла может построить такой граф фильтров:

Выполнил Муханов А. 05.12.09. КР 3706002 000009 ПЗ лист Проверила Енсепова Г.К. 07.12.09

8

изм лист № докум Подпись Дата

В этом примере пять фильтров, первый (File Source) просто читает данные с диска, второй фильтр (AVI Splitter) разделяет данные на кадры и передает упакованные видео данные фильтру AVI Decompressor, который их распаковывает и передает фильтру Default DirectSound Device, выводящему звук. AVI Decompressor передает распакованные данные фильтру Video Renderer, который выводит кадры видео на экран.

Фильтры делятся на три типа:

Фильтры-источники (Sourcefilters) - эти фильтры просто получают данные из какого-то источника, с диска (как фильтр File Source (Async) на рисунке), с CD или DVD дисковода или с TV – карты или карты, к которой подключена цифровая видеокамера.

Фильтры-преобразователи (Transform filters) – эти фильтры как видно из названия преобразуют поток данных, проходящий через них каким-либо образом, например – разделяет поток данных на кадры, производят декомпрессию и т.п. На нашем рисунке к таким фильтрам относятся AVI Splitter и AVI Decompressor.

Фильтры вывода (Renderer filters) – фильтры, которые получают полностью обработанные данные и выводят их на монитор, звуковую карту, пишут на диск или выводят на еще какое-нибудь устройство.

Итак из фильтров-кубиков можно выстраивать граф. Делается это с помощью интерфейса IGraphBuilder. Создать объект типа IGraphBuilder можно так:

CoCreateInstance ( CLSID _ FilterGraph , nil , CLSCTX _ INPROC _ SERVER , IID _ IG raphBuilder , MyGraphBuilder );

Здесь переменная MyGraphBuilderимеет тип IGraphBuilder; идентификатор класса CLSID_FilterGraphи IID_IGraphBuilderобьявлены в файле DShow.pas, поэтому не забудьте добавить:

uses DShow.pas

Итак, интерфейс IGraphBuilder получен. Можно построить граф фильтров, такой, какой нам нужно. Впрочем, все не так сложно, IGraphBuilder достаточно интеллектуален, он может сам, автоматически, построить граф, в зависимости от

того какие файлы мы собираемся воспроизводить. Интерфейс IGraphBuilder имеет метод RenderFile, который получает имя файла в качестве параметра и, в зависимости от типа файла (которое определяется по расширению и по

К-во Просмотров: 313
Бесплатно скачать Реферат: Обзор элементов языка программирования