Приветствую Вас Прохожий | Получать RSS-новости | Главная | Регистрация | Вход |
Меню сайта

Форма входа

Категория каталога
Linux [51]

Новое на сайте
Новые файлы


Случайные программы


Новые статьи

Спутниковое ТВ на компью...
Переход на виртуальную с...
Установка и настройка пр...
Что делать если Windows ...
Как разбить жесткий диск...

Последние новости

«Спорту» осталось недолг...
Eutelsat W7. 36E Радуга-...
Astra 1H. 19.2E
Профилактика на спутнике...
Радуга-Интернет на Eutel...

Облако тегов


Друзья сайта
Дискуссионный клуб
Шаблоны для uCoz, скрипты для uCoz  Желтые страницы по спутниковому и кабельному ТВ


Для проживающих в городе Иваново:

Ремонт и настройка вашего компьютера
Установка программ
Защита. Удаление вирусов

Оцифровка видео и аудио материалов с возможностью компьютерного монтажа

Создание небольших сайтов, персональных страничек

Монтаж и настройка спутникового Интернета
и телевидения...

и прочие компьютерные услуги...

По всем вопросам обращаться по тел. 89605108897


Счетчики
Были сегодня:



Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Про Linux » Linux

Показ изображений в Linux с помощью фреймбуфера
            В предыдущей статье (http://ivanovo.clan.su/publ/1-1-0-35) описывалась процедура настройки компьютера Mac mini, полностью готового к разработке мультимедийного приложения. В этой статье рассказывается о том, как сделать первый шаг на пути к разработке медиа-проигрывателя. Проигрыватель будет пока поддерживать только формат JPEG, но его функции легко расширить для поддержки других медиаформатов.
 
Доступ к фреймбуферу

 

Доступ к фреймбуферу чаще всего получают через устройства /dev/fb* (в большинстве случаев — /dev/fb0). Переключение режимов может осуществляться через интерфейс ioctl, либо из командной строки при помощи утилиты fbset. Для нее, в свою очередь, требуется конфигурационный файл /etc/fb.modes, где указываются частоты и глубина цвета для различных видеорежимов.

Можно указать видеорежим, используемый при запуске PowerPC®-системы, добавив соответствующий параметр ядра в файл настроек yaboot. Если вы привыкли работать на системах x86, то вам будет приятно узнать, что загрузчик yaboot практически идентичен загрузчику LILO в плане настройки и использования; по умолчанию файл настроек расположен в /etc/yaboot.conf, и когда вы внесете в него изменения, вы можете применить их, запустив утилиту ybin. Чтобы явно задать конкретный видеорежим на этапе загрузки, просто добавьте параметр append="video=ВИДЕОРЕЖИМ" в конец команды yaboot, запускающей ядро, и запустите ybin, чтобы применить сделанные изменения (дальше будет подробнее рассказано о редактировании этих параметров). Например, файл yaboot.conf для Mac mini может выглядеть следующим образом:

 

Листинг 1. Пример файла yaboot.conf               

boot=/dev/hda6

init-message="Нажмите TAB для получения списка вариантов или подождите..."

partition=8

timeout=30

install=/usr/lib/yaboot/yaboot

magicboot=/usr/lib/yaboot/ofboot

delay=10

enablecdboot

 

image=/boot/vmlinux-2.6.10-1.ydl.1

label=linux

read-only

initrd=/boot/initrd-2.6.10-1.ydl.1.img

root=/dev/hda8

append="video=radeonfb:1024x768-16"

 

(Если вы настраиваете iMac, то нужно указать видеодрайвер atyfb, так как в этом компьютере используется старый видеочип Mach64. Для задания корректных частот на iMac следует указывать видеорежим следующим образом: atyfb:vmode:17,cmode:16 — см. ниже).

 

Параметры в строке "video=" можно указывать в двух форматах: либо video=driver:hresxyres-depth (где hres — физическое разрешение по горизонтали, yres — разрешение по вертикали и depth — код глубины цвета), либо video=driver:vmode:V,cmode:C (где V — номер видеорежима, а C - код глубины цвета). Обратите внимание, что коды vmode не несут какой-либо смысловой нагрузки, а просто обозначают номер режима из устаревшей спецификации Apple на содержимое PRAM. Эти коды перечислены в ядре Linux в файле drivers/video/macmodes.h.

Кстати, если Linux не сможет найти подходящий видеорежим на вашем компьютере, вы можете использовать параметр "video=ofonly" (ofonly означает «только режим Open Firmware»). Это похоже на режимы VESA BIOS в компьютерах на базе процессоров Intel®.

 

Если вы хотите оставить загрузочные видеопараметры такими, как они были определены автоматически, то изменять видеорежим можно по своему усмотрению командой fbset. Сначала добавьте следующие строки в файл /etc/fb.modes:

 

Листинг 2. Определение режимов фреймбуфера               

mode "1024x768-universal"

geometry 1024 768 1024 768 16

timings 12735 160 32 28 1 96 3

hsync high

vsync high

endmode

 

Сохранив этот файл, вы сможете переключаться в режим 1024x768 с 16-битной глубиной цвета с помощью команды fbset 1024x768-universal.

Чтобы компьютер автоматически переходил в нужный видеорежим при загрузке, добавьте следующие строки в файл /etc/rc.d/rc.local сразу перед строкой "touch...":

fbset 1024x768-universal setterm -blank 0

 

Вывод на экран

 

Теперь, когда видеорежим почти настроен, нужно сделать, чтобы выводить на экран данные. Все, что нужно — выяснить, где находится видеопамять и каков ее формат. Вкратце, шаги следующие:

1) Открыть устройство фреймбуфера — /dev/fb0.

2) Получить информацию о "фиксированном" и "изменяющемся" экранах (fb_fix_screeninfo и fb_var_screeninfo), включая физические и виртуальные размеры, глубину цвета, физический адрес видеопамяти.

3) Вызвать mmap(2), чтобы добавить память фреймбуфера в адресное пространство данного процесса.

4) Выделить достаточное количество основной памяти для закадрового буфера («черновика»).

5) Отключить курсор текстового режима. Заглянете в конец функции GR_InitGraphics, там должно быть:

 

Листинг 3. Инициализация фреймбуфера                

// Отключаем курсор

handle = open(FB_TTY, O_RDWR);

if (0 < handle) {

            write(handle, "\033[?1c", 5);

            close(handle);

}

 

Поиск файлов

 

Основной цикл программы следующий:

 - Запустить функцию FL_Scan() для поиска изображений. Если изображений не найдено, то подождать 10 секунд и повторить поиск.

 - Проиграть слайдшоу из всех найденных изображений; между изображениями делать паузу в 10 секунд.

 - Повторять бесконечно.

 

 Для простоты можно применить библиотеку JPEG, которая входит в состав Yellow Dog Linux.  Сведения о вызове декомпрессора JPEG содержатся в файле codecs.c. Не обойдется без некоторого количества возни — в основном, нужно создать точки возврата setjmp для всех ошибок, возникающих глубоко внутри библиотеки JPEG.

 

Запускаем

 

Теперь запишите пару JPEG-файлов в каталог /web и запустите программу ibmslides. Если все настроено корректно, то изображения будут отображаться одно за другим (без масштабирования и центрирования).

На iMac цвета отображаются абсолютно неправильно. Создается ощущение, что ЦАП в чипе Mach64 все еще работает в палитровом видеорежиме (с использованием CLUT), а не в режиме direct color (с непосредственным представлением цвета).

 

Если с первого раза у вас не получилось...

 

Можно пойти более хитрым путем и инициализировать видеоподсистему как-то иначе. Мы будем делать это при помощи XFree86 — сервера оконной системы X11.

 

Сначала откройте файл /etc/X11/XF86Config и внесите следующие изменения в раздел Screen:

 

Листинг 4. Файл XF86Config               

Section "Screen"

        Identifier      "Screen0"

        Device          "Card0"

        Monitor         "Monitor0"

        DefaultDepth    16

        SubSection "Display"

                Depth           16

                Modes           "1024x768"

        EndSubSection

EndSection

 

Теперь скопируйте файл blank.xbm в каталог /etc (или любое другое удобное место) и выполните следующие команды (предполагается, что программа ibmslides находится в текущем каталоге):

 

Листинг 5. Запуск X       
X & sleep 10 ; DISPLAY=:0 ; export DISPLAY ; twm & xsetroot -cursor

/etc/blank.xbm /etc/blank.xbm ; xset -dpms s off ; ./ibmslides

 

Вот и всё — идеальные изображения!



Источник: http://www.ibm.com
Категория: Linux | Добавил: Tana (16.07.2008)
Просмотров: 1692 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright Himik © 2024