dil: (Default)
dil ([personal profile] dil) wrote2008-01-17 07:33 am
Entry tags:

DVB. Часть 3. MPEG2 Video - параметры кадров

Остальные части

Когда говорят о MPEG2, в первую очередь подразумевают видео, которым мы сейчас и займёмся. В общих чертах, конечно.

На самом деле, стандарт MPEG2 включает в себя много всего другого, в частности, кодирование аудио, разбивку данных на пакеты, объединение пакетов в потоки, мультиплексирование потоков, служебную информацию, и прочая, и прочая. Всё это подробно, с картинками и формулами, описано в группе документов под общим названием ISO/IEC 13818.

Кодирование видео описано во второй части стандарта, которую любой желающий может купить себе всего за каких-то 244 швейцарских франка. Если купите, не забудьте прислать мне. Вместе с остальными девятью частями.

Изначально (или после оцифровки) цифровое видео представляет собой набор кадров, каждый из которых состоит из цветных пикселов. Ну, иногда чёрно-белых, но это частный случай цветных.
Кадры должны показываться с определённой частотой.

Количество строк в кадре происходит от систем аналогового телевидения: 576 для PAL и SECAM, 480 для NTSC, либо вдвое уменьшенное: 288 или 240, как в бытовых видеомагнитофонах соответствующих систем.

Количество точек в строке в аналоговом телевидении не имееет физического смысла, по какому принципу оно было выбрано в MPEG2, я не знаю. Их бывает 720, 704, 640, 544, 480 или 352. Все эти числа нацело делятся на 16, что связано с особенностями алгоритмов кодирования.

Замечу, что обычное соотношение сторон кадра - 4:3. Поэтому в абсолютном большинстве случаев пикселы в кадре получаются вовсе не квадратные. Единственное исключение - 640x480. Правда, при кодировании и декодировании это никакого значения не имеет, это следует учитывать только при собственно показе видео.

А ещё от аналогового телевидения по наследству передалась частота кадров - 25 для PAL/SECAM, 24/1.001, 24, 30/1.001 и 30 для NTSC.

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

Проблема была в том, что пока луч в кинескопе доходил до нижней части экрана, в верхней люминофор уже начинал гаснуть, и картинка ощутимо мерцала. Для борьбы с этим явлением придумали поделить кадр на две половины - сначала рисовать четные строки, потом нечётные. А чтобы картинка при показе выглядела цельной, эти две половины сдвинуты по времени на полкадра (1/50 секунды для PAL/SECAM). С телевизорами-то всё нормально, а вот если оба полукадра выводить вместе и с обычной частотой - 25 кадров/с - на устройство с прогрессивной развёрткой (все строки по порядку), например, на компьютерный монитор, то из-за временнОго сдвига половины строк появляется гребёнка.

Современные телевизоры уже давно научились прогрессивной развёртке без мерцания, но чересстрочная так прочно укоренилась, что переползла и в цифровое телевидение, и доставляет много головной боли. Гребёнка, возникающая при перекодировании некоторых DVD в DivX - это она самая.

Upd: как справедливо написал в комментах [livejournal.com profile] jorje, чересстрочность позволяет при просмотре получить более плавные движения из-за фактически удвоенной частоты кадров. Видимо, поэтому она до сих пор и существует.
Вот тут можно почитать (на английском) про телевизионные стандарты и чересстрочность и посмотреть в картинках.

Прогрессивная развёртка в MPEG2 также присутствует.

Ещё раз уточняю, что говорить о PAL, SECAM или NTSC применительно к цифровому изображению - неправильно. Это аналоговые стандарты, от которых в цифре остались только некоторые очень отдельные параметры.

Кроме вышеуказанных, для телевидения высокой чёткости определены и другие варианты размеров кадра, вплоть до 1920 x 1080 пикселов.

[identity profile] sergeax.livejournal.com 2008-01-16 11:26 pm (UTC)(link)
http://www.google.com/search?q=ISO%2FIEC+13818+filetype%3Apdf

[identity profile] dil.livejournal.com 2008-01-17 07:22 am (UTC)(link)
На самом деле, первые три части у меня есть, но в виде драфтов. Они, конечно, процентов на 97-99 совпадают со стандартом, но хочется именно стандарт. А он-то как раз и не находится.

[identity profile] max-gashkov.livejournal.com 2008-01-17 12:45 am (UTC)(link)
Про interlace и de-interlace я бы не отказался отдельный пост почитать.

[identity profile] dil.livejournal.com 2008-01-17 07:38 am (UTC)(link)
"Это вам к доктору надо, а мы маляры..." :)

Про происхождение и реализацию я написал. А деинтерлейсинг - это попытки вернуть картинку в прогрессивное состояние. Простейший способ - просто убрать половину строк. Более сложные - усреднение пар строк, интерполяции, попытки инвертировать алгоритм интерлейсинга, если известно, что исходный материал был прогрессивным. Вкратце можно почитать в википедии: http://en.wikipedia.org/wiki/Deinterlacing

Почему нельзя на компьютере чересстрочную картинку выводить на монитор в два полукадра с удвоенной частотой (50 полукадров в секунду), я не знаю. И почему при перекодировании MPEG2 в MPEG4 (в тот же DivX, например) нельзя оставить интерлейсинг, как он был, раздельно кодируя половинки кадров, - для меня тоже загадка. Сам по себе стандарт MPEG4 чересстрочность допускает.

[identity profile] lazyboa.livejournal.com 2008-01-17 08:21 am (UTC)(link)
Почему нельзя на компьютере чересстрочную картинку выводить на монитор в два полукадра с удвоенной частотой (50 полукадров в секунду), я не знаю.
Можно. PowerDVD так делает когда interlaced dvd проигрывает.

[identity profile] jorje.livejournal.com 2008-01-17 09:21 am (UTC)(link)
>почему при перекодировании MPEG2 в MPEG4 (в тот же DivX, например) нельзя оставить интерлейсинг

можно, Divx понимает черезстрочное видео и при кодировании и при проигрывании, умеет делать деинтерлейсинг если надо.

[identity profile] dil.livejournal.com 2008-01-17 09:53 am (UTC)(link)
Ну вот, я же говорил, что это к доктору надо :)

А почему во всех руководствах по перекодированию в divx написано про много разных способов деинтерлейсинга, а про то, что его можно и не делать, не написано?

[identity profile] jorje.livejournal.com 2008-01-17 10:02 am (UTC)(link)
Version 5.0.3 -- Released 2003-01-24
New:
* Support for interlaced video in both the encoder and decoder. If the content you're encoding is interlaced, you can either de-interlace the content so that it is progressive, or preserve the interlaced fields. Preserving the interlaced fields may sometimes result in better video quality during playback.

[identity profile] jorje.livejournal.com 2008-01-17 10:05 am (UTC)(link)
http://support.divx.com/cgi-bin/divx.cfg/php/enduser/std_adp.php?p_faqid=83&p_created=1059525157&p_sid=5I5oEZVi&p_accessibility=0&p_redirect=&p_lva=&p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NSw1JnBfcHJvZHM9MCZwX2NhdHM9JnBfcHY9JnBfY3Y9JnBfc2VhcmNoX3R5cGU9YW5zd2Vycy5zZWFyY2hfbmwmcF9wYWdlPTEmcF9zZWFyY2hfdGV4dD1pbnRlcmxhY2Vk&p_li=&p_topview=1

[identity profile] jorje.livejournal.com 2008-01-17 09:20 am (UTC)(link)
даже сейчас, во времена цифрового контента, продолжают пользоваться черезстрочной разверткой, потому что она дажет более плавное движение.

[identity profile] dil.livejournal.com 2008-01-17 09:54 am (UTC)(link)
Из-за фактически удвоенной частоты?

[identity profile] jorje.livejournal.com 2008-01-17 09:56 am (UTC)(link)
да, даже когда в 3д делают графику, для статики используют прогрессив, а для быстрых движений - интерлейсед.

а отдельная история - это upper first и lower first!

Просмотр видео удвоенная частота кадров

[identity profile] pingback-bot.livejournal.com 2011-02-23 10:54 pm (UTC)(link)
User [livejournal.com profile] tverdislavzv referenced to your post from Просмотр видео удвоенная частота кадров (http://tverdislavzv.livejournal.com/1548.html) saying: [...] есть не что иное, как . P.S. Завтра уезжаю отдыхать на море, так что пару недель просмотре видео [...]