Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Макро блок - схема комплекса
Существует много способов описания, представления алгоритмов. Мы остановимся на четырех: естественном языке, графическом языке, алгоритмическом языке и языке программирования. Каждый вид представления имеет средства описания алгоритмов, ориентированные на своего исполнителя: - естественный язык - слова на естественном языке общения; - графический язык - графические схемы (блок-схемы) с описанием действий; - алгоритмический язык - определенные слова естественного языка, которым придается значение действия или команды для исполнителя; - язык программирования - команды языка программирования. Во всех предложенных способах представления алгоритма, кроме последнего исполнителем является человек, а в последнем четвертом случае исполнитель-компьютер. Алгоритмический язык - это система обозначений и правил для единообразной и точной записи алгоритмов и их исполнения. Алгоритмический язык, с одной стороны, близок к обычному языку, поэтому читается и записывается как обыкновенный текст. С другой стороны, по своей форме алгоритмический язык приближается к языкам программирования, что дает возможность быстрее освоить языки программирования для ЭВМ. Алгоритмический язык имеет свой словарь. Основу его составляют слова, представляющие команды этого языка. В алгоритмическом языке также используются слова, смысл и способ употребления которых не изменяется. Они называются служебными словами. Служебные слова алгоритмического языка подчеркиваются и записываются, как правило, в сокращенной форме и предназначены для оформления алгоритма. Синтаксические конструкции языка подразделяются на два типа: описания данных (величин) и операторов (команд). Представление алгоритмов в виде блок-схем. Наиболее наглядным способом представления алгоритма является его графическое представление в виде блок-схем. Блок-схема - это графическое представление алгоритма, каждое действие алгоритма записывается соответствующей геометрической фигурой.
| ||||||||||||||||||||||||
Выполнил | Муханов А. | 05.12.09. | КР 3706002 000009 ПЗ | лист | ||||||||||||||||||||
Проверила | Енсепова Г. К. | 07.12.09 |
12 | |||||||||||||||||||||
изм | лист | № докум | Подпись | Дата | ||||||||||||||||||||
Таблица идентификаторов комплекса
Для написания программы Speaker1, мы использовали следующие идентификаторы:
| ||||||||||||||||||||||||
Выполнил | Муханов А. | 05.12.09. | КР 3706002 000009 ПЗ | лист | ||||||||||||||||||||
Проверила | Енсепова Г.К. | 07.12.09. |
13 | |||||||||||||||||||||
изм | лист | № докум | Подпись | Дата | ||||||||||||||||||||
Описание наборов данных В основе иерархии классов, обеспечивающих функционирование наборов данных в приложениях баз данных, лежит класс TDataSet. Хотя он почти не содержит методов, реально обеспечивающих работоспособность основных механизмов набора данных, тем не менее его значение трудно переоценить. Этот класс задает структурную основу функционирования набора данных. Другими словами, это скелет набора данных, к методам которого необходимо лишь добавить требуемые вызовы соответствующих функций реальных технологий. При решении наиболее распространенных задач программирования в процессе создания приложений баз данных класс TDataSet не нужен. Тем не менее знание основных принципов работы набора данных всегда полезно. Кроме этого, класс TDataSet может использоваться разработчиками в качестве основы для создания собственных компонентов. Поэтому рассмотрим основные механизмы, реализованные в наборе данных.
Структура записей файлов Multimedia Streaming – это архитектура, используемая в DirectShow для облегчения жизни программиста. Эта архитектура позволяет работать с мультимедиа данными, как с абстрактным потоком, не вдаваясь в подробности форматов хранения мультимедиа-файлов или специфику устройств-источников мультимедиа. Используя эту архитектуру, программист концентрируется не на расшифровке и преобразовании данных, а на управлении потоком данных, кадрами видео или аудио семплами. На вершине иерархии находится базовый объект Multimedia Stream, который является контейнером для объектов Media Stream. Объект Multimedia Stream может содержать один или несколько объектов Media Stream. В то время как каждый объект типа Media Stream предназначен для работы с данными какого-то одного типа (видео, аудио и т.п.) – Multimedia Stream – просто содержит методы для обращения к содержащимся в нем объектам Media Stream и не зависит от типа данных. Сейчас мы создадим объект типа IAMMultiMediaStream. Этот интерфейс унаследован от IMultimediaStream и содержит, кроме прочего, функцию OpenFile, которая автоматически строит граф фильтров для воспроизведения файла: CoCreateInstance ( CLSID _ AMMultiMediaStream, nil, CLSCTX _ INPROC _ SE RVER, IID _ IAMMultiMediaStream, AMStream ); Здесь переменная AMStream имеет тип IAMMultiMediaStream. Мы создали контейнер для мультимедийных потоков. Сверяемся с рисунком - мы на верхнем уровне иерархии. У нас есть объект типа IMultimediaStream – теперь в этот контейнер нужно проинициализировать и добавить один или несколько мультимедиа потоков, нужного нам типа. Сначала инициализация: AMStream.Initialize(STREAMTYPE_READ, AMMSF_NOGRAPHTHREAD, nil); | ||||||||||||||||||||||||
Выполнил | Муханов А. | 05.12.09. | КР 3706002 000009 ПЗ | лист | ||||||||||||||||||||
Проверила | Енсепова Г.К. | 07.12.09. |
14 | |||||||||||||||||||||
изм | лист | № докум | Подпись | Дата | ||||||||||||||||||||
При инициализации указываем, что будут создаваться мультимедиа потоки для чтения, передав значение STREAMTYPE_READ (другие варианты STREAMTYPE_WRITE, STREAMTYPE_TRANSFORM). Создадим теперь мультимедиа потоки для видео и звука: AMStream.AddMediaStream(DDraw, MSPID_PrimaryVideo, 0, NewMediaStremVideo); AMStream.AddMediaStream(nil, MSPID_PrimaryAudio, AMMSF_ADDDEFAULTRENDERER, NewMediaStremAudio); Вызываем метод OpenFile – файл загружается, и автоматически строится граф фильтов: AMStream.OpenFile('cool.avi', 0); Осталось направить видео поток мультимедиа поток на Surface. Вот процедура, которая делает это: procedure TForm1.RenderStreamToSurface(Surface: IDirectDrawSurface; MMStream: IMultiMediaStream); Var PrimaryVidStream: IMediaStream; DDStream: IDirectDrawMediaStream; Sample: IDirectDrawStreamSample; RECT: TRect; ddsd: TDDSURFACEDESC; Z: DWORD; Begin MMStream.GetMediaStream(MSPID_PrimaryVideo, PrimaryVidStream); PrimaryVidStream.QueryInterface(IID_IDirectDrawMediaStream, DDStream); ddsd.dwSize: = sizeof(ddsd); DDStream.GetFormat(ddsd, Palitra, ddsd, Z); rect.top: =(480-ddsd.dwHeight)div 2; rect.left: =(640 - ddsd.dwWidth) div 2; rect.bottom: = rect.top+ddsd.dwHeight; rect.right: = rect.left+ddsd.dwWidth; DDStream.CreateSample(Surface, Rect, 0, Sample); MMStream.SetState(STREAMSTATE_RUN); end ; Метод IDirectDrawStreamSample.Update выводит очередной кадр на Surface. При достижении конца потока он вернет ошибку с кодом $40002 (MS_S_ENDOFSTREAM), я в этом случае просто перематываю поток к началу, методом Seek. В этой программе инициализируется DirectDraw, создается Surface, а затем на него выводится видео из avi-файла. | ||||||||||||||||||||||||
Выполнил | Муханов А. | 05.12.09. | КР 3706002 000009 ПЗ | лист | ||||||||||||||||||||
Проверила | Енсепова Г.К. | 07.12.09. |
15 | |||||||||||||||||||||
изм | лист | № докум | Подпись | Дата | ||||||||||||||||||||
|
Последнее изменение этой страницы: 2020-02-16; Просмотров: 179; Нарушение авторского права страницы