Вернуться на главную страницу BeTimes


BeOS Ring
<< Предыдущий Случайный Следующий >>
BeOSring: виртуальное объединение русскоязычных BeOS-ресурсов
Основаная информация
 информация 
Совместимое оборудование
 оборудование 
Руководства пользователя
 руководства 
Программное обеспечение
 приложения 
Полезные рекомендации
 рекомендации 
Национальная Ве-премия
 Ве-премия 

 
СТАТЬИ   ФОРУМ   ССЫЛКИ   ПОИСК   АРХИВ   НАПИСАТЬ  
СЕГОДНЯ
В НОМЕРЕ


ОСНОВНАЯ
ИНФОРМАЦИЯ

Что такое BeOS, история ее появления и становления, основные отличительные особенности



РУКОВОДСТВА
ПОЛЬЗОВАТЕЛЯ

Размещенные как на этом сайте, так и на сайтах, объединных в BeRing, описания работы с BeOS шаг за шагом, которые будут полезны как новичкам, так и опытным пользователям.



СОВМЕСТИМОЕ
ОБОРУДОВАНИЕ

Данные о совместимости BeOS с почти девятью сотнями видов компьютерного оборудования.



ПОЛЕЗНЫЕ
РЕКОМЕНДАЦИИ

Ответы на наиболее часто возникающие у пользователя проблемы, связанные с работой BeOS или ее приложений.


ПОСЛЕДНИЕ ПОПОЛНЕНИЯ:
Перевод шестнадцатого информационного сообщения (NewsLetter16) группы OpenBeOS
 
Закажите загрузочный CD-диск с BeOS 5 PE и кучей софта! Вы платите только стоимость CD-матрицы и за пересылку!
 
ПОСЛЕДНИЕ ПОПОЛНЕНИЯ:
Раздел совместимого оборудования пополнен данными о совместимости 27 устройств

В этом пресс-релизе:


GUI Builder, часть II: погружаясь чуть глубже

Когда мы последний раз расстались с нашим незадачливым героем, он пытался соорудить небольшой язык для создания BeOS GUI. Время и ряд других причин не позволили нам завершить в прошлый раз эту работу. Итак, продолжаем...

Когда мы с ним расстались последний раз, GUI (полагаем, что такое название этой маленькой утилиты достаточно точно и не нарушает ничьих авторских прав) научился создавать окна. Не больше и не меньше. Я полагаю, что сегодня мы можем погрузиться глубже, в дополнительные опции окон. Для достижения этой цели я добавил к языку несколько новых команд:

option: EOS | LABEL NAME {myGui.SetTitle(yytext);} EOS |
LOOK NAME {myGui.SetLook(yytext);} EOS |
FEEL NAME {myGui.SetFeel(yytext);} EOS |
PULSERATE NAME {myGui.SetPulse(yytext);} EOS |
SIZELIMITS NAME {myGui.SetSizeLimits(yytext);} EOS |
ZOOMLIMITS NAME {myGui.SetZoomLimits(yytext);} EOS |
TYPE NAME {myGui.SetType(yytext);} EOS |
FLAGS NAME {myGui.SetFlags(yytext);} EOS |
POSITION NAME {myGui.SetPosition(yytext);} EOS |
SIZE NAME {myGui.SetSize(yytext);} EOS |
WORKSPACE NAME {myGui.SetWorkspace(yytext);} EOS

Обратите внимание, что я не сильно стремился к сокращениям. На мой взгляд это важно при программировании с нуля - код должен быть максимально понятен, тогда и его переработка окажется существенно проще: Вам не придется долго и пристально изучать написанный Вами же класс, для того, чтобы уяснить наконец, что же такое оно должно было делать и что же я обо всем этом думал.

Я предполагаю, что число параметров для каждой из функций должно быть различно. К примеру, bison не будет поддерживать номера в этой версии. Или флаги. Единственное, для чего это сделано - для обработки сообщений об ошибках. Обычно bison может выдать нечто вроде 'parse error' только в случае, если Вы допустили грамматическую ошибку. Не слишком полезно! Задавая параметры для каждой опции в методе этой опции, я смогу получить более полезные сообщения в случае, если произойдут какие бы то ни было ошибки. Есть несколько мест в коде, где можно было бы это отметить, но я этого делать пока не буду. Я рассмотрел это в сравнении с BAlerts, исключениями, классическим printf's и все же пришел к такому решению.

Следующие наши шаги должны будут включать:

  • Возможность ссылок на другие объекты - это потребует определенного уровня в таблице символов
  • Добавление некоторых операторов относительного позиционирования, поскольку не все параметры позиционирования должны быть абсолютными
  • Добавление, как минимум, одного widget'а, который может быть добавлен к окну

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


Исходные коды:
GUI Builder2.zip

Ffmpeg и BeOS

Ffmpeg - сервер кодировки и потоковой передачи мультимедиа (как описано на странице этого проекта). Он состоит из библиотеки использования файлов, библиотеки кодеков, конвертера файлов и граббера бинарной информации, и серверной части.

Ffmpeg в настоящее время используется в нескольких проектах, таких как MPlayer, полноценном медиа-плеере для Linux, использующем библиотеки кодеков ffmpeg. В проект ffmpeg было вовлечено много разработчиков, но в настоящее время они сфокусировали свое внимание на библиотеках кодеков, а работа над серверной частью в настоящее время прекращена.

Поддержка нескольких кодеков в ffmpeg включает:

  • AC3 (Dolby)
  • mpeg audio layer 1, 2, 3 (для кодирования - только layer 2)
  • mpeg 1 и mpeg 2 video
  • RealVideo 1
  • mpeg 4 (OpenDiVx)
  • msmpeg4 (он же DiVX ;-)
Кодеки разрабатывали таким образом, чтобы обеспечивать наибольшую скорость их работы, и первое их использование в качестве обычных кодеков BeOS показало интересный уровень воспроизведения. Будем надеяться, что их развитие сможет в полной мере продемонстрировать мощь BeOS при работе с мультимедиа. Ваш покорный слуга имеет определенные планы на этот счет...

Компиляция в BeOS

Первая попытка была опубликована на BeBits, но в настоящее время компиляция CVS-версии (расположенной на Sourceforge) становится проще, за счет добавления патча, в частности, дополнявшего текущие настройки скрипта конфигурации. Компиляция без BONE не проверялась и, возможно, работа в подобной конфигурации потребует дополнительных патчей. В настоящее время есть ряд следующих ограничений:

  • компилирование с поддержкой mmx нуждается в обновленном gcc с BeBits,
  • граббинг недоступен, поскольку BeOS не поддерживает Video4Linux, а имеет свой собственный API для этих целей (любое содействие в написании beosgrab.c будет приветствоваться :-) ),
  • сетевая поддержка (поддержка http, в том числе запись потокового mp3) не работает при отсутствии BONE.
  • поддержка PPC не проверялась, исключая то, что оптимизация asm (включающая ARM, x86...), в принципе включает в себя код в обычном ANSI C.
  • ffserver не соответствует спецификациям поддержки poll() (вариант select()) в BeOS (и сеть будет работать только при запущенном BONE).
  • ffmpeg по-прежнему время от времени зависает при возврате кодом ошибки, в результате нераспознавания предупреждений и ошибок системы.

Но в любом случае, ffmpeg по-прежнему вполне может использоваться в BeOS и мы можем надеяться на исправление описанных проблем в ближайшем будущем.

Код

Ffmpeg кодирован на C, но код расширен в ряде объектно-ориентированных аспектов, призванных сделать работу более приятной. Проект разбит на несколько частей, описанных ниже:

специфические операции
(включенные в библиотеки)

аудио
граббинг


видео
граббинг

обслуживание
протокола
  mux/
demux
...   mpeg1
кодек
mpeg4
кодек
AC3
кодек
...  
библиотеки
libav


libavcodec

двоичные файлы ffmpeg
ffserver

Архитектура ffmpeg

Каждая из библиотек определяет набор структур C, которым могут быть определены поля, MIME-типы, которые она поддерживает, и функции, которые она предоставляет для открытия, закрытия, чтения, записи, кодирования и декодирования. В качестве примера приведу определение структуры AVCodec:

typedef struct AVCodec {
char *name;
int type;
int id;
int priv_data_size;
int (*init)(AVCodecContext *);
int (*encode)(AVCodecContext *, UINT8 *buf, int buf_size, void *data);
int (*close)(AVCodecContext *);
int (*decode)(AVCodecContext *, void *outdata, int *outdata_size,
UINT8 *buf, int buf_size);
int capabilities;
struct AVCodec *next;
} AVCodec;

После инсталляции, библиотека libavcodec вызывает функцию avcodec_register_all(), которая формирует список ссылок на дескрипторы кодеков (используя поле next в структуре). Библиотека libav делает то же самое.

При чтении файла ffmpeg направляет libav запрос на подключение использования протокола (file или http или иное), после чего библиотека определяет формат потока, использую MIME-тип, расширение файла или сниффинг. После этого вызывается demuxer (.avi, .mpg, .rm ...), который формирует список траков, представленных в потоке. Затем ffmpeg вызывает кодек из libavcodec для каждого потока, который необходимо обработать.

Использование точек в функция в структурах C напоминает методы объектно-ориентированной разработки, при которой проще всего расширять функциональность программы, к примеру достигать поддержки нового протокола простым добавлением структур и функций для чтения байтов потока и при этом demuxer'у будет совершенно безразлично, применяется функция к файлу или к http.

Заключение

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

Возьмемся за руки друзья, чтоб не пропасть поодиночке

Я только что досмотрел 'Все наши вчера', одни из старых эпизодов Star Trek. Там был персонаж по имени Mr. Atoz. Он просматривал библиотеку, содержавшую все знания и историю целой планеты. Каждый кусочек истории был зафиксирован в этой библиотеке.

Я поднял эту тему потому, что на мой взгляд, Ве-сообществу нужно что-то подобное. Достаточно народа создало зеркала www.be.com. Это Большое Дело. Впрочем, достаточно иных ресурсов, информацию которых также следовало бы сохранить. Один из лучших примеров - www.b500.com. Это сайт Джона Вэтта, бывшего работника Metrowerks и Be. Если он решит отказаться от поддержки этого сайта, боюсь мы все многое потеряем.

Все любительские сайты, которые существуют в настоящее время, когда-нибудь исчезнут. Поддержка сайта стоит денег. Живых денег. И совсем не много пользователей Ве намерены их тратить. Они поддерживают свои сайты лишь как свидетельство того, что их мечта не умерла. Когда придет время платить за продление регистрации домена, есть ли гарантия, что все они согласятся вновь потратить на это деньги. И я готов их понять. На их месте, возможно, я поступил бы также.

Я не хочу ни на кого давить. Я сейчас верю в успехи OBOS больше, чем когда-либо раньше. Огромная работа сделана, делается и будет делаться. Но далеко не все обязаны разделять мой оптимизм.

А теперь то, что, по моему мнению, мы все должны сделать. Те группы, условия хостинга и дисковое пространство у которых это позволяет, должны взять шефство над персональными Ве-сайтами. Предложить им, как минимум, создать зеркала их сайтов. Предложить хостинг за меньшие деньги. Предложить редирект URL (чтобы www.myBeSite.com вел на mybesite..com). Стать порталом, выложив ссылки на такие страницы, создав для них необходимую каталогизацию. Дать возможности поиска. Пусть это будет один портал, но чтобы я мог зайти на www.someplace.com и найти все, что касается Be.

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

Нам нужно место, где бы были сосредоточены все зеркала Be, веб-страницы и данные о всем Ве-сообществе. Это было бы лучшим вкладом в работу сообщества. Место, где все мы могли бы увидеть, что Ве-сообщество по-прежнему едино. Место, где ни один сайт не поставлен по отношению к другим в ущербное положение (вне зависимости от реальной ценности его контента). Место, куда бы я мог зайти и сказать, 'А вот я хочу забацать сайт, целиком посвещенный полету в космосе, той самой демонстрашке, которая включена в дистрибутив BeOS' и где я смогу найти возможность создать такой сайт. Может быть там мог бы быть почтовый сервер для Ве-сообщества. Может быть - раздел BeShare. Кто знает, возможно когда-то это место смогло бы включать в себя и полноценные веб-сервисы. Я полагаю, что аналогичная модель работы Apple была замечательна. Когда Стив предложил домен mac.com, я был готов заплатить за него деньги, как бы ненавистен мне не был MacOS.

И еще. Для кого-то это было бы постоянной работой. А может быть таких людей было бы несколько. И была бы справедливая оплата за хостинг. Это не то, что мы можем запустить, используя dial-up. Линия T1, как мне кажется, это минимум. Профессиональный хостинг, сервер, базирующийся на BSD или иной схожей системе (да-да-да, я все понимаю, но не создавалась BeOS как серверная ОС). Машина с горячей заменой дисков, RAID-массив из десяти винчестеров и так далее… Не современный любительский, а настоящий профессиональный уровень. И тогда люди пойдут и будут искать возможность разместить там свой сайт и поддерживать контакты с другими. Копировать и делать зеркала. Это была бы настоящая профессиональная работа, за которую, возможно, не надо было бы много платить.

Каждую неделю я получаю по несколько писем от людей, которые хотят, чтобы BeOS развивался, но не являются разработчиками. Эй, я все понимаю. Я предложил нечто полезное и нужное. Кто готов заняться этим и сделать эти мои мечты реальностью?

НОВОСТИ
ОТОВСЮДУ

4 июля
BeOS Journal:
Выпущен испанский дистрибутив BeOS (edicion del revelador de BeOS), являющийся испаноязычным вариантом BeOS 5.0.4 DE

3 июля
YellowTAB:
Опубликован план выпуска BeOS NG: первая бета-версия в начале августа, вторая бета-версия в конце октября, официальный выпуск Home Edition и Developer Edition - в ноябре, DeLux Edition - в начале будущего года. Все версии будут платными, цена составит от 39 до 99 долларов.

BeOS Journal:
Группа OpenBeOS с 6 июля открывает канал вопросов и ответов на IRC: сервер: irc.openprojects.net, канал #obos_q&a

BeUnited:
BeUnited предложила сделать пожертвования для финансового обеспечения ее участия в процессе против Microsoft.

2 июля
BeOS Journal:
Выпущен двадцать первый Newsletter группы OpenBeOS.

LeBUZZ:
LeBuzz вновь в строю! Более того, LeBuzz.com стал еще краше!

1 июля
BeGroovy:
Вышел релиз Cosmoe 0.5.3, включающий патчи, облегчающие компиляцию.
Открыты полные исходные коды Blender 3D.

30 июня
BeOS Journal:
Долгожданная бета-версия Refraction выпущена.

27 июня
OpenBeOS:
Инго Вейнхолд опубликовал ReadMe по запуску билда OpenBeOS и созданию загрузочной дискеты. ReadMe включен в корневой каталог CVS. Маленькая рекомендация: Инго советует делать все это через Bochs.

BeForever:
Объявлена дата релиза Refraction от Xentronix - 30 июня 2002.

СТАТЬИ   ФОРУМ   ССЫЛКИ   ПОИСК   АРХИВ   НАПИСАТЬ  
Основаная информация Совместимое оборудование Руководства пользователя Программное обеспечение Полезные рекомендации Национальная Ве-премия
SpyLOG
Идея, контент, дизайн: ©Мальчик Зима, 2002