Ім'я файлу: Експертна група MPEG.docx
Розширення: docx
Розмір: 228кб.
Дата: 29.11.2021
скачати


http://www.elecard.com/ru/technology/mpeg.html

MPEG: Вопросы и ответы

Содержание

  1. Что такое MPEG?

  2. Имеет ли он отношение к JPEG?

  3. Что такое JBIG и MHEG?

  4. Как работает MPEG видео?

  5. Как кадры соотносятся друг с другом?

  6. Как сжимается аудио?

  7. Странные слухи об MPEG.

  8. Откуда берутся огромные коэфициенты сжатия?

  9. Как достигается сжатие видео?

  10. Как работает MPEG аудио?

  11. Какой уровень MPEG аудио лучше подходит для моего приложения?

  12. Как достигается сжатие аудио?

  13. Где взять исходные тексты программ?

  14. Документация

  15. Ресурсы MPEG в Сети.

  16. От составителя.



Что такое MPEG?

MPEG - это группа людей в ISO (Internation Standards Organization), которые встречаются для выработки стандартов сжатия цифрового видео и аудио. В частности, они определили сжатый поток и декомпрессор для него. Алгоритмы сжатия определяются индивидуально каждым производителем, в чем и достигается преимущество в рамках опубликованного международного стандарта. Группа MPEG собирается приблизительно четыре раза в год примерно на неделю. Основная работа делается между встречами, будучи организованной и спланированной на них.

  • Оглавление


Имеет ли он отношение к JPEG?

Да, названия созвучны, и группы принадлежат одному подкомитету ISO, вместе с JBIG и MHEG, и встречаются они в одно время и в одном месте. Тем не менее, это разные люди с разными целями и запросами. JPEG предназначен для сжатия неподвижных изображений, а MPEG - "живого" видео и сопутствующего аудио.

  • Оглавление


Что такое JBIG и MHEG?

JBIG предназначен для сжатия двоичных изображений (факсов,...), а MHEG - для мультимедиа-данных - интеграция неподвижных изображений, видео, аудио, текста и т.д.

  • Оглавление


Как работает MPEG видео?

Цветное цифровое изображение из сжимаемой последовательности переводится в цветовое пространство YUV (YCbCr). Компонента Y представляет собой интенсивнось, а U и V - цветность. Так как человеческий глаз менее восприимчив к цветности, чем к интенсивности, то разрешений цветовых компонент может быть уменьшено в 2 раза по вертикали, или и по вертикали и по горизонтали. К анимации и высококачественному студийному видео уменьшение разрешения не применяется для сохранения качества, а для бытового применения, где потоки более низкие, а аппаратура более дешевая, такое действие не приводит к заметным потерям в визуальном восприятии, сохраняя в то же время драгоценные биты данных.





Основная идея всей схемы - это предсказывать движение от кадра к кадру, а затем применить дискретное косинусное преобразование (ДКП), чтобы перераспределить избыточность в пространсве. ДКП выполняется на блочках 8х8 точек, предсказание движения выполняется на канале интенсивности (Y) на блоках 16х16 точек, или, в зависимости от характеристик исходной последовательности изображении (черезстрочная развертка, содержимое), на блоках 16х8 точек. Другими словами, данный блок 16х16 точек в текущем кадре ищется в соответсвующей области большего размера в предыдущих или последующих кадрах. Коэфициентны ДКП (исходных данных или разности этого блока и ему соответсвующего) квантуются, то есть делятся на некоторое число, чтобы отбросить несущественные биты. Многие коэфициенты после такой операции оказываются нулями. Коэфициент квантизации может изменяться для каждого "макроблока" (макроблок - блок 16х16 точек из Y-компонент и соответсвующие блоки 8х8 в случае отношения YUV 4:2:0, 16х8 в случае 4:2:2 и 16х16 в случае 4:4:4. Коэфициенты ДКП, параметры квантизации, векторы движения и пр. кодируется по Хаффману с использованием фиксированных таблиц, определенных стандартом. Закодированные данные складываются в пакеты, которые формируют поток согласно синтаксису MPEG.

  • Оглавление


Как кадры соотносятся друг с другом?

Существует три типа закодированных кадров. I-фремы - это кадры, закодированные как неподвижные изображения - без ссылок на последующие или предыдущие. Они используются как стартовые. P-фреймы - это кадры, предсказаные из предыдущих I- или P-кадров. Каждый макроблок в P-фрейме может идти с вектором и разностью коэфициентов ДКП от соответвующего блока последнего раскодированного I или P, или может быть закодирован как в I, если не соответсвующего блока не нашлось.

И, наконец, существуют B-фреймы, которые предсказаны из двух ближайших I или P-фреймов, одного предыдущего и другого - последующего. Соответсвующие блоки ищутся в этих кадрах и из них выбирается лучший. Ищется прямой вектор, затем обратный и вычисляется среднее между соответсвующими макроблоками в прошлом и будущем. Если это не работает, то блок может быть закодирован как в I-фрейме.

Последовательность раскодированных кадров обычно выглядит как

I B B P B B P B B P B B I B B P B B P B ...

Здесь 12 кадров от I до I фрейма. Это основано на требовании произвольного доступа, согласно которому начальная точка должна повторяться каждые 0.4 секунды. Соотношение P и B основано на опыте.

Чтобы декодер мог работать, необходимо, чтобы первый P-фрейм в потоке встретился до первого B, поэтому сжатый поток выгдядит так:

0 x x 3 1 2 6 4 5 ...

где числа - это номера кадров. xx может не быть ничем, если это начало последовательности, или B-фреймы -2 и -1, если это фрагмент из середины потока.

Сначала необходимо раскодировать I-фрейм, затем P, затем, имея их оба в памяти, раскодировать B. Во время декодирования P показывается I-фрейм, B показываются сразу, а раскодированный P показывается во время декодирования следующего.

  • Оглавление


Как сжимается аудио?

При сжатии аудио используются хорошо разработанные психоакустические модели, полученные из экспериментов с самыми взыскательными слушателями, чтобы выбросить звуки, которые не слышны человеческому уху. Это то, что называется "маскированием", например, большая составляющая в некоторой частоте не позволяет услышать компоненты с более низким коэфициентом в близлежащих частотах, где соотношение между энергиями частот, которые маскируются, описывается некоторой эмпирической кривой. Существуют похожие временные эффекты маскирования, а также более сложные взаимодействия, когда временной эффект может выделить частоту или наоборот.

Звук разбивается на спектральные блоки с помощью гибридной схемы, которая объединяет синусные и полосные преобразования, и психоакустической модели, описанной на языке этих блоков. Все, что может быть убрано или сокращено, убирается и сокращается, а остаток посылается в выходной поток. В действительности, все выглядит несколько сложнее, поскольку биты должны распределяться между полосами. И, конечно же, все, что посылается, кодируется с сокращением избыточности.

  • Оглавление


Странные слухи об MPEG.

По прчине новизны, существует множество, зачастую непонятных и надуманных, неправдоподобных слухов об MPEG. Как то:

1. Коэффициет сжатия свыше 100:1

Зачастую статьи в прессе и маркетинговой литературе заявляют, что MPEG достигает необычайно высокого качества видео при степени сжатия свыше 100:1. Эти заявления обычно не включают понижение цветового разрешения исходного цифрового изображения. На практике, поток кодируемого изображения редко превышает величину потока, закодированного в MPEG, более чем в 30 раз. Предварительное сжатие за счет уменьшения цветового разрешения играет основную роль в формировании коэфициетнов сжатия с 3 нулями во всех методах кодирования видео, включая отличные от MPEG.

2. MPEG-1 всегда 352x240

Как MPEG-1, так и MPEG-2, могут быть применены к широкому классу потоков, частот и размеров кадров. MPEG-1, знакомый большинству людей, позволяет передавать 25 кадров/с с разрешением 352x288 в PAL или 30 кадр/с с разрешением 352x240 в NTSC при величине потока менее 1.86 Мбит/с - комбинация, известная как "Constrained Parameters Bitstreams". Это цифры введены спецификацией White Book для видео на CD (VideoCD).

Фактически, синтаксис позволяет кодировать изображения с разрешением до 4095х4095 с потоком до 100 Мбит/с. Эти числа могли бы быть и бесконечными, если бы не ограничение на количество бит в заголовках.

С появлением спецификации MPEG-2, самые популярные комбинации были объединены в уровни и профили. Самые общие из них:

  • Source Input Format (SIF), 352 точки x 240 линий x 30 кадр/с, известный также как Low Level (LL) - нижний уровень,

и

  • "CCIR 601" (например 720 точек/линию x 480 линий x 30 кадр/с), илиMain Level - основной уровень.

3. Компенсация движения заменяет макроблоки макроблоками из предыдущих картинок

Предсказания макроблоков формируются из соответсвующих 16х16 блоков точек (16х8 в MPEG-2) из предыдущих восстановленных кадров. Никаких ограничений на положение макроблока в предыдущей картинке, кроме ее границ, не существует.



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



4. Размер отображаемой картинки совпадает с размером закодированной

В MPEG размеры отображаемой картинки и частота кадров может отличаться от закодированного в потоке. Например, перед кодированием некотрое подмножество кадров в исходной последовательности может быть опущено, а затем каждый кадр фильтруется и обрабатывается. При восстановлении интерполированы для восстановления исходного размера и частоты кадров.

Фактически, три фундаментальных фазы (исходная частота, кодированная и показываемая) могут отличаться в параметрах. Синтаксис MPEG описывает кодированную и показываемую частоту через заголовки, а исходная частота кадров и размер известен только кодеру. Именно поэтому в заголовки MPEG-2 введены элементы, описывающие размер экрана для показа видеоряда.

5. В I, P и B-фреймах все макроблоки одного типа.

В I-фрейме макроблоки должны быть закодированы как внутренние - без ссылок на предыдущие или последующие, если не используются масштабируемые режимы. Однако, макроблоки в P-фрейме могут быть как внутренними, так и ссылаться на предыдущие кадры. Макроблоки в B-фрейме могут быть как внутренними, так и ссылаться на предыдущий кадр, последующий или оба. В заголовке каждого макроблока есть элемент, определяющий его тип.



Без компенсации движения:

С компенсацией движения:

Пропущенные макроблоки в P-фреймах:

Пропущенные макроблоки в B-фреймах:

6. Структура последовательности строго фиксирована шаблоном I,P,B.

Последовательность кадров может иметь любую структуру размещения I, P и B фреймов. В промышленной практике принято иметь фиксированную последовательность (вроде IBBPBBPBBPBBPBB), однако, более мощные кодеры могут оптимизировать выбор типа кадра в зависимости от контекста и глобальных характеристик видеоряда.

Каждый тип кадра имеет свои преимущества в зависимости от особенностей изображения (активность движения, временные эффекты маскирования,...). Например, если последовательность изображений мало меняется от кадра к кадру, есть смысл кодировать больше B-фреймов, чем P. Поскольку B-фреймы не используются в дальнейшем процессе декодирования, они могут быть сжаты сильнее, без влияния на качество видеоряда в целом.

Требования конкретного приложения также влияют на выбор типа кадров: ключевые кадры, переключение каналов, индексирование программ, восстановление от ошибок и т.д.

  • Оглавление


Откуда берутся огромные коэфициенты сжатия?

Коэфициетн сжатия MPEG видео часто заявляется как 100:1, тогда как в действительности он находися в районе от 8:1 до 30:1.

Как получается "более 100:1" для видео на компакт-диске (White Book) с потоком 1.15 Мбит/с.

1. Высокое разрешение исходного видео.

Большинство источников видеосигнала для кодирования имеют большее разрешение, чем то, которое актуально оказывается в закодированном потоке. Самый популярный студийный сигнал, известный как цифровое видео "D-1" или "CCIR 601", кодируется на 270 Мбит/с.

Цифра 270 Мбит/с получается из следующих вычислений:

Интенсивность (Y):

858 точек/линию x 525 линий/кадр x 30 кадр/с x 10 бит/точку = 135 Мбит/с

R-Y (Cb):

429 точек/линию x 525 линий/кадр x 30 кадр/с x 10 бит/точку = 68 Мбит/с

B-Y (Cb):

429 точек/линию x 525 линий/кадр x 30 кадр/с x 10 бит/точку = 68 Мбит/с

Итого:

27 млн. точек/с x 10 бит/точку = 270 Мбит/с

Итак, начинаем с коэффициента сжатия 270/1.15... 235:1!!!!!

2. Выбросим гасяшие интервалы.

Из 858 точек яркости на линию под информацию изображения задействованы только 720. В действительности, количество точек на линию - предмет многих ссор на инженерных семинарах, и это значение лежит в пределах от 704 до 720. Аналогично, только 480 линий из 525 задействованы под изображение по вертикали. Настоящее значение лежит в пределах от 480 до 496. В целях совместимости MPEG-1 и MPEG-2 определяет эти числа как 704х480 точек на интенсивность и 352х480 для цветоразностей. Пересчитывая исходный поток, будем иметь:

Y

704 точек/линию x 480 линий x 30 кадр/с x 10 бит/точку = 104 Мбит/с

C

2 компоненты x 352 точки/линию x 480 линий x 30 кадр/с x 10 бит/точку = 104 Мбит/с

Итого:

207 Мбит/с

Отношение (207/1.15) составляет всего 180:1.

3. Учтем большее количество бит/точку.

В MPEG на точку отводится 8 бит. Принимая во внимание этот фактор, отношение становится 180 * (8/10) = 144:1.

4. Учтем более высокое разрешение цветности. Известный студийный сигнал CCIR-601 представляет сигнал цветности с половинным разрешением по горизонтали, но с полным вертикальным разрешением. Это соотношение частот оцифровки известно как 4:2:2. Однако, MPEG-1 и MPEG-2 Main Profile устанавливают использование формата 4:2:0, который считается достаточным для бытовых приложений. В этом формате разрешение цветоразностных сигналов в 2 раза меньше по горизонтали и вертикали, чем интенсивность. Таки образом, имеем:

720 точек x 480 линий x 30 кадр/с x 8 бит/отсчет x 1.5 остчетов/точку = 124 Мбит/с

...и отношение уже становится 108:1.

5. Учтем размер кодируемого изображения.

Последняя стадия предварительной обработки - это преобразование кадра формата CCIR-601 в формат SIF уменьшением в 2 раза по горизонтали и вертикали. Всего в 4 раза. Качественное масштабирование по горизонтали выполняется с помощью взвешенного цифрового фильтра с 7 или 4-мя узлами, а по вертикали - выбрасыванием каждого второй линии, второго поля или, опять, цифровым фильтром, управляемым алгоритмом оценки движения между полями. Отношение теперь становится

352 точек x 240 линий x 30 кадр/с x 8 бит/отсчет x 1.5 отсчетов/точку

= 30 Мбит/с !!

... 26:1.

Таким образом, настоящее отношение A/B должно вычисляться между исходной последовательностью в стадии 30 Мбит/с перед кодированием, поскольку это есть действительная частота оцифровки, записываемая в заголовках потока и воспроизводимая при декодировании. Так, сжатия можно добиться уже одним сокращением частоты оцифровки.

6. Не забудем о частоте кадров.

Большинство коммерческих видеофильмов снимаются с киноленты, а не с видео. Основная часть фильмов, записанных на компакт-диски, была оцифрована и редактирована при 24 кадр/с. В такой последовательности 6 из 30 кадров, отображаемых на телевизионном мониторе (30 кадр/с или 60 полей/с а NTSC), фактически избыточна, и может быть не кодирована в MPEG поток. Это ведет нас к шокирующему выводу, что действительный поток был всего 24 Мбит/с (24 кадр/с / 30 кадр/с * 30 Мбит/с), и коэффициент сжатия составляет всего каких-то 21:1.

Даже при таком скромном коэффициенте сжатия, как 20:1, несоответствия могут возникнуть между исходной последовательность изображений и восстановленной. Только консервативные коэффициенты в районе 12:1 и 8:1 демонстрируют почти полную прозрачность процесса сжатия последовательностей с сложными пространственно-временными характеристиками (резкие движения, сложные текстуры, резкие контуры и т.д.). Несмотря на это, правильно закодированное видео с использованием предварительной обработки и грамотного распределения битов, может достигать и более высоких коэффициентов сжатия при приемлемом качестве восстановленного изображения.

  • Оглавление


Как достигается сжатие видео?

При сжатии видео используются следующие статистические характеристики:

  1. Пространственная корреляция: дискретное косинусное преобразование 8х8 точек.

  2. Особенности человеческого зрения - невосприимчивость к высокочастотным составляющим: скалярное квантование коэффициентов ДКП с потерей качества.

  3. Большая пространственная корреляция изображения в целом: предсказание первого низкочастотного коэффициента преобразования в блоке 8х8 (среднее значение всего блока).

  4. Статистика появления синтаксических элементов в наиболее вероятном кодируемом потоке: оптимальное кодирование векторов движения, коэффициентов ДКП, типов макроблоков и пр.

  5. Разряженная матрица квантованных коэфициентов ДКП: кодирование повторяющихся нулевых элементов с обозначением конца блока.

  6. Пространственное маскирование: степень квантования макроблока.

  7. Кодирование участков с учетом содержания сцены: степень квантования макроблока.

  8. Адаптация к локальным характеристикам изображения: кодирование блоков, тип макроблока, адаптивное квантование.

  9. Постоянный размер шага при адаптивном квантовании: новая степень квантования устанавливается только специальным типом макроблока и не передается по умолчанию.

  10. Временная избыточность: прямые и обратные векторы движения на уровне макроблоков 16х16 точек.

  11. Кодирование ошибки предсказаний макроблоков с учетом восприятия: адаптивное квантование и квантование коэффициентов преобразования.

  12. Малая ошибка предсказания: для макроблока может быть сигнализировано отсутвие ошибки.

  13. Тонкое кодирование ошибки предсказания на уровне макроблоков: каждый из блоков внутри макроблока может быть кодирован или пропущен.

  14. Векторы движения - медленное движение фрагмента изображения со сложным рисунком: предсказание векторов движения.

  15. Появления и исчезновения: прямое и обратное предсказание в B-фреймах.

  16. Точность межкадрового предсказания: билинейно интерполированные (фильтрованные) разности блоков. В реальном мире движения объектов от кадра к кадру редко попадают на границы точек. Интерполяция позволяет выяснить настоящее положение объекта, зачастую увеличивая эффективность сжатия на 1 дБ.

  17. Ограниченная активность движения в P-фреймах: пропущенные макроблоки. Когда вектор движения и ошибка предсказания нулевые. Пропущенные макроблоки очень желательны в кодированном потоке, поскольку не занимают битов, кроме как в заголовке следующего макроблока.

  18. Компланарное движение в B-фреймах: пропущенные макроблоки. Когда вектор движения тот же, а ошибка предсказания нулевая.

  • Оглавление


Как работает MPEG аудио?

MPEG стандарт определяет три высокопроизводительных схемы сжатия звука, называемых уровнями: Layer 1, 2 и 3. С возрастанием номера возрастает сложность и производительность алгоритма кодирования, задержка кодирования и соотношение качества восстановленного сигнала к величине потока. Эти три схемы иерархически совместимы, то есть декодер уровня 3 может читать уровни 3, 2 и 1, а декодер уровня 2 - 2 и 1. Для каждого уровня стандарт жестко определяет синтаксис потока и алгоритм декодирования.

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

Декодер менее сложен. Его задача - синтезировать звуковой сигнал из спектральных компонент.

Все три уровня используют одну гребенку фильтров (32 полосы). Помимо этого, Уровень 3 применяет модифицированное дискретное косинусное преобразование (МДКП), чтобы увеличить частотную характеристику. Все уровни используют одну структуру потока и одни информационные заголовки, для поддержания иерархической совместимости. Частота оцифровки входного сигнала может быть 32, 44.1 и 48 КГц.

Уровень

Минимальный поток, Кбит/с

Максимальный поток, Кбит/с

Минимальная теоретическая задержка кодера, мс

1

32

448

19 (<50)

2

32

384

35 (100)

3

32

320

59 (150)

В скобках - приблизительная величина реальной задержки.

  • Оглавление


Какой уровень MPEG аудио лучше подходит для моего приложения?

Уровень 1 нацелен на величину выходного потока 192 Кбит/с на канал. Это упрощенная версия Уровня 2. Лучше всего он подходит для больших величин потока в районе 192 Кбит/с. Разновидность Уровня 1 используется в устройствах записи цифровых компакт-кассет (DCC, PASC).

Уровень 2 предназначен для потоков 128 Кбит/с на канал. Он идентичен MUSICAM, и был разработан как "золотая середина" между качеством звука к величине потока и сложностью кодера. Лучше всего подходит для средних величин потока в районе 128 или даже 96 Кбит/с на канал. Уровень 2 было решено использовать DAB (EU 147) для Цифровой Радиовещательной Сети (Digital Audio Broadcasting network).

Уровень 3 предназначается для потоков 64 Кбит/с на канал. Он объединяет в себе лучшее из MUSICAM и ASPEC, и был разработан специально для низких величин потока в районе 64 Кбит/с и ниже. Формат Уровня 3 определяет ряд усовершенствованных методик, служащих для одной цели - сохранить максимальное качество звука даже при низком потоке. Сегодня Уровень 3 используется в различных сетях связи (ISDN, спутниковые каналы) и системах анализа речи.

  • Оглавление


Как достигается сжатие аудио?

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

  • Оглавление


Где взять исходные тексты программ?

Существует несколько бесплатно распространяемых архивов, служащих основой всех коммерческих пакетов. Наибольшего интереса заслуживает работа MPEG Software Simulation Group под руководством Chad Fogg. Это реализация схемы Test Model 5 для MPEG 2 с поддержкой MPEG 1, которая является хорошей отправной точкой для создания собственного кодера и изучения практической части как MPEG 2, так и MPEG 1.

  • Оглавление


Документация

Вводные статьи и обзоры:

  1. Didier Le Gall, "MPEG: A Video Compression Standard for Multimedia Applications," Communications of the ACM, April 1991, Vol.34, No.4, pp. 47-58

Основные документы:

  1. ISO/IEC 11172 "Coding of Moving Pictures and Associated Audio for Digital Storage Media at up to about 1.5 Mbit/s"

  2. ISO/IEC 13818 "Information technology -- Coding of moving pictures and associated audio"

  3. ITU-T Recomendation H.261 (1993): "Video codec for audiovisual services at px64 kbit/s"

  4. MPEG-1 Standard из комитета

  5. MPEG-2 Standard из комитета

  6. MPEG-4 Standard из комитета

  7. MPEG-7 Standard ("Multimedia Content Description Interface") из комитета

  8. MPEG-21 Standard ("Multimedia Framework") из комитета

Официальные документы ISO/IEC JTC1/SC29 WG11

Хороший список документов от Tristan Savatier - MPEG Starting Points and FAQs

  • Оглавление


Ресурсы MPEG в Сети.

MPEG Homepage - официальная страница MPEG комитета - ISO/IEC JTC1/SC29 WG11. Новости, документы, ссылки, контакты.

MPEG Pointers and Resources, Tristan Savatier - хорошая отправная точка для поиска всех ресурсов по MPEG, его вариантам и проявлениям. Ссылки на документы, производителей ПО и АО, видеоархивы, бесплатное ПО, исходные тексты.

Visible Light - обзоры продуктов (ПО и АО), ссылки на производителей. Хороший источник новостей и информации о VideoCD, DVD, HDTV и прочих промышленных применениях MPEG.

C-Cube - пожалуй, основной игрок на рынке аппаратных средств сжатия MPEG. Широкий спектр специализированных микропроцессоров и решений для разработчиков - от мультимедийных до вещательных и high-end.

Элекард - один из немногих разработчиков в сфере сжатия MPEG.

  • Оглавление


От составителя.

"MPEG: Вопросы и Ответы" поддерживается компанией Элекард. Вопросы, пожелания, добавления, поправки, жалобы и предложения направляйте автору.

При составлении данной статьи использовались работы:

  1. Mark Adler (madler@alumni.caltech.edu)

  2. Morten Hjerde (100034,663@compuserve.com)

  3. Harald Popp (layer3@iis.fhg.de)

  4. Chad Fogg (cfogg@chromatic.com)

Peter Gubanov(pgubanov@mail.ru)
скачати

© Усі права захищені
написати до нас