Thursday, January 17th, 2008 07:33 am
Остальные части

Когда говорят о 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 пикселов.
Tags:
Wednesday, January 16th, 2008 11:26 pm (UTC)
http://www.google.com/search?q=ISO%2FIEC+13818+filetype%3Apdf
Thursday, January 17th, 2008 12:45 am (UTC)
Про interlace и de-interlace я бы не отказался отдельный пост почитать.
Thursday, January 17th, 2008 07:22 am (UTC)
На самом деле, первые три части у меня есть, но в виде драфтов. Они, конечно, процентов на 97-99 совпадают со стандартом, но хочется именно стандарт. А он-то как раз и не находится.
Thursday, January 17th, 2008 07:38 am (UTC)
"Это вам к доктору надо, а мы маляры..." :)

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

Почему нельзя на компьютере чересстрочную картинку выводить на монитор в два полукадра с удвоенной частотой (50 полукадров в секунду), я не знаю. И почему при перекодировании MPEG2 в MPEG4 (в тот же DivX, например) нельзя оставить интерлейсинг, как он был, раздельно кодируя половинки кадров, - для меня тоже загадка. Сам по себе стандарт MPEG4 чересстрочность допускает.
Thursday, January 17th, 2008 08:21 am (UTC)
Почему нельзя на компьютере чересстрочную картинку выводить на монитор в два полукадра с удвоенной частотой (50 полукадров в секунду), я не знаю.
Можно. PowerDVD так делает когда interlaced dvd проигрывает.
Thursday, January 17th, 2008 09:20 am (UTC)
даже сейчас, во времена цифрового контента, продолжают пользоваться черезстрочной разверткой, потому что она дажет более плавное движение.
Thursday, January 17th, 2008 09:21 am (UTC)
>почему при перекодировании MPEG2 в MPEG4 (в тот же DivX, например) нельзя оставить интерлейсинг

можно, Divx понимает черезстрочное видео и при кодировании и при проигрывании, умеет делать деинтерлейсинг если надо.
Thursday, January 17th, 2008 09:53 am (UTC)
Ну вот, я же говорил, что это к доктору надо :)

А почему во всех руководствах по перекодированию в divx написано про много разных способов деинтерлейсинга, а про то, что его можно и не делать, не написано?
Thursday, January 17th, 2008 09:54 am (UTC)
Из-за фактически удвоенной частоты?
Thursday, January 17th, 2008 09:56 am (UTC)
да, даже когда в 3д делают графику, для статики используют прогрессив, а для быстрых движений - интерлейсед.

а отдельная история - это upper first и lower first!
Thursday, January 17th, 2008 10:02 am (UTC)
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.
Thursday, January 17th, 2008 10:05 am (UTC)
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
Wednesday, February 23rd, 2011 10:54 pm (UTC)
User [livejournal.com profile] tverdislavzv referenced to your post from Просмотр видео удвоенная частота кадров (http://tverdislavzv.livejournal.com/1548.html) saying: [...] есть не что иное, как . P.S. Завтра уезжаю отдыхать на море, так что пару недель просмотре видео [...]