Мультимедийные возможности процессора Samsung S3C6410


PDF версия

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


Статья публикуется в рамках совместного проекта компании Promwad и медиагруппы «Электроника»

 

Семейство процессоров Samsung S3C64xx относится к среднему ценовому сегменту и ориентировано на мобильные устройства и «продвинутые» мультимедийные приложения, которые активно используют аппаратные 2D- и 3D-ускорители. Процессор S3C6410 — базовая модель этого семейства.

Итак, S3C6410 аппаратно поддерживает:

– MFC (Multi Format Codec);

– JPEG;

– ускорение 2D- и 3D-графики;

– вывод телевизионного сигнала в форматах PAL и NTSC;

– интерфейс цифровой камеры;

– постобработку изображений и видео, полученных из файлов и камеры;

– покадровое вращение и масштабирование;

– контроллер LCD — встроенный модуль.

Как показано на рисунке 1, для работы с мультимедиа используются встроенные аппаратные блоки. Для ядра процессора эти блоки являются внешними устройствами, и при работе в ОС требуют поддержки на уровне драйверов.

Рис. 1. Структура процессора Samsung S3C6410

Постпроцессор S3C6410

Постпроцессор представляет собой специализированный блок для обработки «сырых» графических данных. Как правило, он является промежуточным звеном между источником данных и кадровым буфером. Постпроцессор предназначен для выполнения таких операций над кадрами изображения, как масштабирование, преобразование цветовых моделей и видеоформатов.

Особенности постпроцессора S3C6410:

– форматы входных и выходных данных — YCbCr420, YCbCr422, RGB565 или RGB888;

– работа в режимах DMA (обработанный кадр помещается в память) или FIFO (обработанный кадр помещается сразу в контроллер LCD);

– возможность задавать размеры входного изображения до 4096×4096 пикселей, а выходного — до 2048×2048 пикселей;

– программируемый коэффициент масштабирования;

– возможность преобразования цветовых пространств YUV в RGB и обратно.

В режиме FIFO изображение передается в буфер контроллера LCD напрямую, минуя операции с системной памятью. Выходные данные могут быть представлены как формате YCbCr444, так и в формате 30-битного RGB. В этом режиме возможен вывод видеоданных как в прогрессивной, так и в чересстрочной развертке.

В режиме DMA изображение передается из постпроцессора в контроллер LCD через промежуточный буфер в системной памяти, причем входные и выходные данные могут быть представлены в форматах YCbCr420, YCbCr422, RGB565 или RGB888.

Модуль TV Scaler

Модуль TV Scaler во многом идентичен постпроцессору, по сути, он и является постпроцессором, только предназначенным для обработки кадров, характерных для телевидения. В режиме FIFO выходной поток из модуля TV Scaler может поступать либо в оверлейные окна Window1 и Window2, либо в модуль TV Encoder.

Контроллер LCD

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

– до 5 оверлейных окон
(Window0 … Window4), которые, в свою очередь, поддерживают различные форматы цвета;

– генерирование сигналов синхронизации;

– 16-уровневое альфа-смешивание;

– прозрачность по цветовому ключу;

– собственные координаты;

– плавную прокрутку по горизонтали и вертикали с шагом 1 пиксель;

– изменение размеров.

Перечисленные возможности позволяют организовать гибкий графический интерфейс в соответствии с нуждами потребителя. Например, система может использовать Window0 для полноэкранного просмотра ТВ, Window1 — как небольшое окно с предварительным просмотром другого ТВ-канала, Window2 — как системное меню, Window3 — для вывода названия канала и Window4 — для вывода информации о канале.

Особенности оверлейных окон иллюстрирует таблица 1. При одновременном использовании окна отображаются в порядке убывания, т.е. при отсутствии прозрачности Window4 будет иметь наибольший приоритет и перекроет остальные окна. Такой же приоритет окон сохраняется и при использовании цветового ключа, который должен быть задан в формате RGB888.

Таблица 1. Оверлейные окна Window0 … Window4

Окно

Форматы цвета

Источники данных

Window0

1, 2, 4 или 8 бит на пиксель (с палитрой) 16, 18 или 24 бита на пиксель (без палитры)

YCbCr (4:4:4) или RGB888 из постпроцессора

Window1

1, 2, 4 или 8 бит на пиксель (с палитрой) 16, 18 или 24 бита на пиксель (без палитры)

YCbCr (4:4:4) или RGB888 из TV Scaler

Window2

1, 2 или 4 бита на пиксель (с палитрой) 16, 18 или 24 бита на пиксель (без палитры)

YCbCr (4:4:4) или RGB888 из TV Scaler

Window3

1, 2 или 4 бита на пиксель (с палитрой) 16, 18 или 24 бита на пиксель (без палитры)

Window4

1 или 2 бита на пиксель (с палитрой) 16, 18 или 24 бита на пиксель (без палитры)

Поддержка 2D-графики

Модуль поддержки 2D-графики обладает следующими возможностями:

– рисование линий и точек;

– ускорение операций BitBlt (преобразование блока пикселей, наподобие переключения страниц в DirectDraw);

– ограничение окна;

– поворот на угол, кратный 90 градусам, и зеркальное отображение;

– попиксельное альфа-смешивание с 256 градациями;

– рисование пользовательского узора размером 8×8 пикселей и глубиной цвета 16 бит;

– поддержка глубины цвета 16, 24 и 32 бита.

Внутренним форматом модуля является ARGB8888, и все данные, поступающие в модуль, преобразуются в этот формат, а после обработки и перед помещением в кадровый буфер снова преобразуются в пользовательский формат.

На рисунке 2 показана последовательность отрисовки конечного изображения. На этапе Рисование примитива определяются пиксели, над которыми производится одна из операций: рисование линии/точки, Bit Block Transfer — преобразование прямоугольного блока пикселей, Color Expansion — разбиение монохромного изображения на цвета переднего плана (foreground) и фона (background). Этап Вращение предполагает вращение на угол, кратный 90 градусам, и зеркальное отображение. Этап Обрезка позволяет отсечь часть изображения, получившегося после вращения. Исходное изображение заключается в прямоугольную область, и все не поместившиеся области игнорируются при последующей обработке. На этапе Проверка стенсила производится анализ каждого пикселя на предмет соответствия цветовому диапазону. Если цвет пикселя укладывается в заданный диапазон, он продолжает обрабатываться, в противном случае — отсекается. Этот этап можно пропускать. На этапе Растровые операции производятся логические операции над тремя операндами: источником, конечным результатом и 8-битным пользовательским значением. Третьим операндом может быть фон либо узор размером 8×8 пикселей в формате RGB565. И наконец, этап Альфа-смешивание смешивает цвета источника и результата в кадровом буфере для получения нового результирующего цвета с 256 градациями прозрачности.

Рис. 2. Отрисовка конечного 2D-изображения

Поддержка 3D-графики

Поддержка ускорения трехмерной графики является одной из наиболее востребованных возможностей любого современного процессора на рынке потребительских устройств. Процессор Samsung S3C6410 обладает следующими возможностями:

– аппаратная поддержка OpenGL ES 1.1 и ES 2.0 (и Direct3D на уровне API);

– пиксельный и вертексный шейдеры;

– форматы текстур — RGB c 1, 2, 4, 8, 16 и 32 битами на пиксель, YUV422, S3TC;

– кадровый буфер, 4096×4096, 16 или 32 бита на пиксель;

– 32-битный Z-буфер;

– билинейная и трилинейная фильтрация.

Подробное описание поддержки 3D-графики выходит за рамки ознакомительной статьи.

Возможности для работы с JPEG

Архитектура процессора предъявляет следующие требования к JPEG-изображению в случае декодирования: размер не более 4096×4096 пикселей и последовательное представление данных (sequential JPEG), предполагающее последовательный обход кодированного изображения поблочно: слева направо, сверху вниз. В случае, когда входной файл имеет данные, записанные в виде набора сканов, каждый из которых описывает изображение полностью со все большей степенью детализации (progressive JPEG), декодер может отказаться воспринять такой файл.

Рассмотрим более подробно типичную задачу по декодированию графических файлов в формате JPEG c выводом на LCD в контексте работы операционной системы:

1. Инициализируется модуль поддержки JPEG при помощи драйвера.

2. Драйвер модуля JPEG выделяет системную память для размещения входного и выходного буферов.

3. Файл JPEG считывается из хранилища и целиком помещается во входной буфер.

4. Посредством обращения к драйверу инициируется процедура декодирования.

5. Декодированные «сырые» данные в формате YUV помещаются в выходной буфер.

6. Постпроцессор обращается к выходному буферу и производит преобразование цветовой модели YUV в RGB.

7. Преобразованное изображение помещается в кадровый буфер.

Более наглядно процесс декодирования показан на рисунке 3.

Рис. 3. Декодирование JPEG-файла и его вывод на LCD

Возможности MFC

Возможности MFC включают в себя декодирование потоков видеоформатов H.264/AVC baseline profile, H.263P3, VC-1 (Windows Media 9) main profile, MPEG-4 simple profile. Для обеспечения возможностей задействования MFC поток MPEG-4 не должен содержать двунаправленных кадров (B-frames), общей компенсации движения (GMC, global motion compensation) и четвертьпиксельной компенсации движения (Qpel). Также поддерживается кодирование несжатого видео в форматы MPEG-4 simple profile, H.263 P3,
H.264/AVC baseline profile и одновременное кодирование одного и декодирование трех потоков. При размерах кадров потоков 640×480 пикселей (VGA) MFC сможет одновременно кодировать и декодировать видео со скоростью до 30 кадров/с. В аналогичном случае, когда размеры кадров составляют 720×480 пикселей (NTSC), скорость обработки будет несколько ниже, и еще ниже она будет при размере кадров 720×576 (PAL).

При кодировании видео появляется возможность задействовать модуль поворота/отзеркаливания изображения (PrP rotator/mirror), способный одновременно как поворачивать кадр на угол, кратный 90 градусам, так и менять стороны кадра местами. Такая обработка может быть полезна при кодировании видео, поступающего с модуля камеры.

Декодирование может быть осуществлено двумя способами:

1. Используя локальный путь. В этом случае данные из постпроцессора поступают напрямую в контроллер LCD, минуя кадровый буфер. Теоретически это позволяет достичь более высокой производительности, но на практике ускорение практически незаметно. Более того, данный способ привносит 2 ограничения. Во-первых, может быть задействовано только оверлейное окно Window0, во-вторых, поддерживается только 24-битный цвет (RGB888) для выходных данных (см. рис. 4).

2. Используя двойную буферизацию. В этом случае процесс декодирования в целом соответствует рисунку 4, за исключением того, что данные из постпроцессора поступают в контроллер LCD не напрямую, а через кадровый буфер.

Рис. 4. Декодирование видеопотока и его вывод на LCD

Как видим, и целой статьи оказалось мало для обзора богатых мультимедийных возможностей процессора Samsung S3C6410. Конечно, эти возможности не осталась незамеченными в среде разработчиков. S3C6410 успешно применяется не только в таких распространенных мобильных устройствах, как смартфоны, но и в автомобильных и навигационных системах; видеопроигрывателях; информационных панелях; мультимедийных пультах управления; портативных игровых приставках; фоторамках и MID-устройствах (Multimedia Internet Device). Тем более что встроенные ускорители графики S3C6410 не ограничивают выбор графических интерфейсов и платформ, позволяя использовать Qt, Google Android, WinCE и многое другое.

 

 

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *