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

Форма входа

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

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


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


Новые статьи

Эффективный перенос данн...
Обжим сетевого кабеля (в...
Покупаем компьютер...
Клавиатурные сокращения ...
Что делать, если появляе...

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

«Спорту» осталось недолг...
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)
Просмотров: 1716 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright Himik © 2025 Хостинг от uCoz