![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Некоторые виды цифрового звука в сравнении
Цифровое видео бывает двух видов: сжатое и несжатое. Первое нынче используется, в основном, для записи на цифровые кассеты видеокамер, например, в формате DV, miniDV, Digital8. О сжатом поговорим подробнее. Сжимается видео так. Через некоторые интервалы (обычно в начале каждой новой сцены) устанавливаются ключевые кадры, являющиеся полноценными картинками. Далее, вплоть до следующего ключевого кадра, — только данные о том, как картинка меняется. Описание движения, попросту говоря. При воспроизведении программа, основываясь на таких данных, вырисовывает каждый кадр на лету, воспроизводя изменения, следующие за ключевыми кадрами. (Исключением является MJPEG, у которого каждый кадр — изображение в формате JPEG. Но это занимает очень много места, да и технология уже малость устарела.) Чем больше данных отводится для отрисовки кадров (чем выше битрейт, количество килобит в секунду), тем выше качество видео, тем меньше артефактов сжатия — ряби. Итак, сжатое цифровое видео — это фильм, состоящий из ключевых кадров и их изменений. Плюс дорожки сжатого аудио, конечно. Экономичность мультимедийных потоков. Кодеки. Дополнительно Структуры данных Мы рассмотрели, как различные данные представляются в двоичном виде. Но, как правило, компьютер обрабатывает не одиночные данные, а их большие совокупности. Естественно встает вопрос об организации совокупности данных и удобства их обработки. Рассмотрим основные структуры данных. Списки (Кнут т.1 гл.2) Линейный список — это множество, состоящее из п > = 0 элементов Х [1], Х [2],..., Х [n], структурные свойства которого по сути ограничиваются лишь линейным (одномерным) относительным положением элементов, т. е. теми условиями, что если п > 0, то Х [1] является первым элементом; если 1 <: k <: п, то за k-м элементом Х [k] следует Х [k + 1]; Х [n] является последним элементом. Т.е., вообще говоря, элементы могут иметь различную структуру, размеры и т.д. Операции, которые мы имеем право выполнять с линейными списками, включают, например, следующие: 1) Получить доступ к k-му элементу списка, чтобы проанализировать и/или изменить содержимое его полей. 2) Включить новый узел непосредственно перед k-м элементом. 3) Исключить k-й. узел. 4) Объединить два (или более) линейных списка в один список. 5) Разбить линейный список на два (или более) списка. 6) Сделать копию линейного списка. 7) Определить количество элементов в списке. 8) Выполнить сортировку элементов списка в возрастающем порядке по некоторым полям в элементах. 9) Найти в списке узел с заданным значением в некотором поле. В машинных приложениях редко требуются все девять из перечисленных выше операций в самом общем виде. По-видимому, трудно спроектировать единственный метод представления для линейных списков, при котором все эти операции выполняются эффективно; например, сравнительно трудно эффективно реализовать доступ к k-му узлу в длинном списке для произвольного k, если в то же время мы включаем и исключаем элементы в середине списка. Следовательно, мы будем различать типы линейных списков по главным операциям, которые с ними выполняются. Очень часто встречаются линейные списки, в которых включение, исключение или доступ к значениям почти всегда производятся в первом или последнем узлах, и мы дадим им специальные названия: Стек — линейный список, в котором все включения и исключения (и обычно всякий доступ) делаются в одном конце списка (LIFO). Очередь — линейный список, в котором все включения производятся на одном конце списка, а все исключения (и обычно всякий доступ) делаются на другом его конце(FIFO). Дек (double ended queue - очередь с двумя концами) — линейный список, в котором все включения и исключения (и обычно всякий доступ) делаются на обоих концах списка.
циклические списки. Иногда удобно использовать циклические списки – это списки, в которых последний элемент ссылается на 1-й. Двунаправленные списки. Все рассмотренные выше списки имеют строгую упорядоченность в одном направлении: вперед. Для удобства поиска строят двунаправленные списки, для которых существует не только «следующий», но и «предыдущий» элемент. Двунаправленность, естественно, требует дополнительных затрат как по памяти, так и по дополнительным операциям (надо менять две ссылки вместо одной). Одним из простейших обобщений списков являются массивы. Массивы представляют собой упорядоченную совокупность однородных элементов. Как правило, элементы массива располагаются в памяти последовательно. Т.о. для одномерного массива а0, а1, …, аn положение к-го элемента определяется по формуле а[0]+к. Для двумерного a[i, j] = a[0, 0]+n*i+j.
|