Cтраница 1
В-кадры; кадры, сжатые с использованием ссылки на два изображения. [1]
![]() |
Три последовательных кадра. [2] |
В-кадры подобны Р - кадрам с той разницей, что позволяют привязывать макроблок либо к предыдущему, либо к следующему кадру. Такая дополнительная свобода позволяет достичь лучшей компенсации движения. Для декодирования В-кадров необходимо удерживать в памяти сразу три кадра: предыдущий, текущий и следующий. Для упрощения декодирования кадры должны присутствовать в потоке MPEG не в порядке их отображения, а в порядке зависимостей друг от друга. Это означает, что при передаче видео по сети необходима буферизация данных на машине пользователя, чтобы изменить порядок кадров для их правильного отображения. Поскольку порядок отображения кадров не совпадает с порядком их взаимозависимостей, для воспроизведения фильма задом наперед потребуется значительная буферизация и сложные алгоритмы. [3]
В-frames - В-кадры; кадры, сжатые с использованием ссылки на два изображения. [4]
С файлами в формате MPEG такая схема не работает даже в теории, так как в данном стандарте используются I -, Р - и В-кадры. Пропуск k кадров может привести к тому, что программа получит следующим Р - кадр, для правильной расшифровки которого необходим пропущенный I-кадр. Без базового кадра относительные величины, хранящиеся в Р - кадре, бесполезны. Таким образом, стандарт MPEG требует последовательного воспроизведения файла. [5]
К сожалению, простой алгоритм поочередного планирования редко может быть применен в реальной жизни. Количество пользователей меняется со временем, размеры кадров варьируются в широчайших пределах благодаря самой природе видеосжатия ( I-кадры значительно крупнее Р - кадров и В-кадров), кроме того, в различных фильмах может использоваться различное разрешение. В результате может оказаться, что разным процессам потребуется работа с разной частотой для выполнения различного объема работ и с различными сроками их окончания. [6]
При использовании фиксированных буферов каждый буфер должен быть достаточно большим, чтобы вместить самый большой 1-кадр. С другой стороны, при динамическом выделении буфера для чтения каждого кадра и размере кадра, известном до операции чтения, для Р - кадров и В-кадров может выделяться буфер меньшего размера. [7]
Первая из них, представляющая собой использование дисковых блоков небольшого размера, показана на рис. 7.17. В данной схеме размер блоков диска выбирается существенно меньшим, чем средний размер кадра, даже Р - кадров и В-кадров. Для формата MPEG-2 со скоростью 4 Мбит / с при 30 кадрах в секунду средний кадр имеет размер около 16 Кбайт, поэтому в данном варианте хорошо подойдут дисковые блоки размером 1 Кбайт или 2 Кбайт. Идея заключается в том, чтобы получить структуру данных, а именно индекс кадров для каждого фильма, с указателями на начало каждого кадра. Таким образом, чтобы прочитать кадр k, нужно найти в индексе k - й элемент, а затем считать весь кадр за одну дисковую операцию. Поскольку различные кадры имеют различный размер, этот размер ( в блоках) должен содержаться в индексе. Но при 1-килобайтных дисковых блоках 8-битового поля будет вполне достаточно, чтобы поддерживать кадры размером до 255 Кбайт, а этого достаточно для несжатого NTSC, даже при большом количестве звуковых дорожек. [8]
![]() |
Три последовательных кадра. [9] |
В-кадры подобны Р - кадрам с той разницей, что позволяют привязывать макроблок либо к предыдущему, либо к следующему кадру. Такая дополнительная свобода позволяет достичь лучшей компенсации движения. Для декодирования В-кадров необходимо удерживать в памяти сразу три кадра: предыдущий, текущий и следующий. Для упрощения декодирования кадры должны присутствовать в потоке MPEG не в порядке их отображения, а в порядке зависимостей друг от друга. Это означает, что при передаче видео по сети необходима буферизация данных на машине пользователя, чтобы изменить порядок кадров для их правильного отображения. Поскольку порядок отображения кадров не совпадает с порядком их взаимозависимостей, для воспроизведения фильма задом наперед потребуется значительная буферизация и сложные алгоритмы. [10]
К звуковому сигналу может быть применена компрессия, позволяющая уменьшить размеры данных примерно в 10 раз. Последний алгоритм представляет Р - кадры в виде разностей относительно предыдущего кадра. В алгоритме MPEG также используются В-кадры, базирующиеся либо на предыдущем, либо на последующем кадре. [11]
Еще одним фактором сравнения двух подходов является производительность диска. При использовании больших дисковых блоков диск работает на полной скорости, что часто является главной заботой разработчиков. Чтение маленьких Р - кадров и В-кадров по отдельности неэффективно. Кроме того, возможно хранение больших дисковых блоков на чередующихся наборах дисков ( описывалось в главе 5), тогда как подобная операция с отдельными кадрами не имеет смысла. [12]