Страниц: [1]
  Печать  
Автор Тема: mplayer под photon  (Прочитано 6430 раз)
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« : Января 30, 2013, 11:53:43 am »

На выходных я сделал первый более-менее нормальный порт mplayer под photon.

Чем плох SDL? Во-первых, SDL не отдаёт наверх приложению список поддерживаемых форматов пикселей, т.е. если приложение выбрало RGB1555, а он не поддерживается, то будет программная конвертация в рантайме. То же касается и оверлеев, если приложение выбрало YV12, а он тоже поддерживается далеко не всегда, то будет программная поддержка вместо, допустим, аппаратно поддерживаемого YUY2. Во-вторых SDL не умеет растягивать RGB изображения, только оверлеи, из-за чего, если не поддерживаются оверлеи, то растянуть изображение не получится.

В этой версии сделана нормальная поддержка звука, поддерживаются частоты дискретизации до 192KHz и размер семпла до 32х бит (поддерживается драйвером deva-intel_hda). Драйвер нативный. SDL не поддерживал больше 48000/16 бит. Очень удобно, когда декодирование происходит во float формат (AAC/DTS), а затем конвертируется в 32 бита практически без потерь. Особое внимание было уделено синхронизации звука с видео, драйвер постоянно отслеживает содержимое буферов и скорость воспроизведения.

Вывод через фотон. Поддерживается три режима вывода: 1) слои, если не поддерживаются, то 2) через offscreen memory, поддерживается растягивания изображения, например devg-intelhd поддерживает растягивания аппаратно. 3) используется полностью сотфарный вывод, для vesa/vmware, но скорость оставляет желать лучшего. Поддерживается псевдо fullscreen вывод - окно растягивается и выносится за пределы десктопа, так, чтобы на десктопе оставалось только содержимое окна без декораций.

На моём дохленьком ноутбучном Pentium B950 с драйвером devg-intelhd можно смотреть 1280x720 h264 видео с загрузкой процессора порядка 75%. Для FullHD 1920x1080 h264 загрузка составляет порядка 140% и уже начинается торможение и рассинхронизация видео и звука.

Конечно, в этой версии есть огрехи, которые буду исправлять со временем. Я отослал патч, не знаю, примут его или нет. На всякий случай, если кому нужно, патч находится тут: http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2013-January/071376.html

Скомпиленная версия под QNX 6.5.0 с оптимизацией SSE2 и с поддержкой большинства кодеков находится тут http://mike.qnx.org.ru/mplayer-20130121.tar.bz2
Записан

mike
QOR.Moderator
*****
Offline Offline

Сообщений: 1186


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #1 : Января 30, 2013, 12:11:55 pm »

вот тебе делать нефиг Smiley
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #2 : Января 30, 2013, 12:17:07 pm »

вот тебе делать нефиг Smiley
Да нет, как раз есть, что делать. Просто начинал делать аппаратное декодирование видео, а из плееров, которые поддерживают его более-менее нормально нашёлся только mplayer. Тестить то как-то надо аппаратный декодер Smiley
Записан

AG
QOR.Moderator
*****
Offline Offline

Сообщений: 872



Просмотр профиля WWW
« Ответ #3 : Января 30, 2013, 01:23:51 pm »

VLC разве не умеет? Или потому что не портирован на QNX?
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #4 : Января 30, 2013, 07:47:15 pm »

VLC разве не умеет? Или потому что не портирован на QNX?
mplayer тоже не был портирован под QNX изначально. Меня интересовала поддержка VAAPI,
у VLC: http://wiki.videolan.org/VLC_VAAPI
у mplayer: http://gitorious.org/vaapi/mplayer

mplayer показался более развитым в плане VAAPI, да и в качестве поддержки различных модулей более продуманным и зрелым.
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #5 : Марта 25, 2013, 09:28:10 pm »

Я выкладываю полные исходники mplayer+ffmpeg (внутри) с патчами для QNX/Photon. Также выкладываю собранный mplayer. Есть один нехороший ньюанс. У QNX 6.x есть бага с posix_memalign(), которая возвращает невыравненный блок памяти при определённых условиях, из-за чего на некотором видеоматериале mplayer падает, так как происходит unaligned access для SSE команд процессора. Багу в libc недавно исправили, но пока исправленный бинарник недоступен для публичного доступа.

Патчи я так и не смог внести в общую ветку mplayer'а из-за маразма мейнтейнеров. Они выставляют безумные требования к коду, и каждый раз какие-то новые, которые, естественно, нигде не описаны, а берутся от балды, при этом видно явное нежелание вносить какие-либо изменения и придирки к коду просто повод. Так умирают opensource проекты. При этом весь mplayer сейчас являет собой охрененную солянку и кода и мусора. Я честно пытался внести исправления целых пять раз, потом моё терпение лопнуло. Если у кого-то есть больше свободного времени и желания пообщаться, то все исходники я выложил.

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

Исходники: http://mike.qnx.org.ru/mplayer-export-2013-02-03.tar.bz2 (12Mb)
Бинарники: http://mike.qnx.org.ru/mplayer-export-2013-02-03-bin.tar.bz2 (17Mb)
Записан

AG
QOR.Moderator
*****
Offline Offline

Сообщений: 872



Просмотр профиля WWW
« Ответ #6 : Марта 26, 2013, 10:29:28 am »

Можно сделать форк mplayer на sf.net на github и там преспокойно его развивать. Cool

Цитировать
У QNX 6.x есть бага с posix_memalign(), которая возвращает невыравненный блок памяти при определённых условиях, из-за чего на некотором видеоматериале mplayer падает, так как происходит unaligned access для SSE команд процессора.
Ты же знаешь, что в таком случае надо делать... Либо писать свою реализацию глючной функции, либо отключать нестабильные оптимизации. Wink
Записан

splitcamera
Участник
*
Offline Offline

Сообщений: 23



Просмотр профиля
« Ответ #7 : Марта 30, 2013, 03:07:11 am »

Может немного с опозданием, но скачал Ваши исходники, сперва попробовал бинарники, все интуитивно понятно, работает, изображение рендерится, звука у меня сегодня пока нет, но попробую сейчас самое качественное видео, что у меня есть, 1920х1080.

По исходникам, скачал, распаковал под виндой, загрузился под QNX, попробовал make в корневой директории исходников, не собирается, ну дальше попробовал почитать
readme..., не получилось у меня собрать за пять минут.

Lestat, а что вам opensource? Для многих людей есть только QNX и Windows, а прочее они видят лишь изредка.
Если бы ваши исходники открывались в QNX IDE под QNX и Windows, без особых танцев, то думаю вы могли бы их публиковать и под коммерческой лицензией.

Попробовал 1920х1080, 30 fps. Тянет, на intelhd, i3-....
Отлично
« Последнее редактирование: Марта 30, 2013, 03:43:24 am от splitcamera » Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #8 : Марта 30, 2013, 10:13:50 am »

Lestat, а что вам opensource? Для многих людей есть только QNX и Windows, а прочее они видят лишь изредка.
Если бы ваши исходники открывались в QNX IDE под QNX и Windows, без особых танцев, то думаю вы могли бы их публиковать и под коммерческой лицензией.
Под коммерческой нельзя, т.к. базовые исходники mplayer под GPL лицензией. И эти исходники не мои, из всех исходников там только два модуля мои ao_qsa.c и vo_photon.c.

Если честно, то opensource - это работа на себя и инвестиция в себя. А выше я написал, почему я портировал mplayer, мне нужно было тестить драйвер, который реализовывал VAAPI, всё остальное просто побочный продукт. Mplayer портировали на моей памяти раза четыре и каждый раз порт умирал и исходники были недоступны для дальнейшего развития.
Записан

AG
QOR.Moderator
*****
Offline Offline

Сообщений: 872



Просмотр профиля WWW
« Ответ #9 : Апреля 02, 2013, 11:43:06 am »

Если честно, то opensource - это работа на себя и инвестиция в себя. А выше я написал, почему я портировал mplayer, мне нужно было тестить драйвер, который реализовывал VAAPI, всё остальное просто побочный продукт. Mplayer портировали на моей памяти раза четыре и каждый раз порт умирал и исходники были недоступны для дальнейшего развития.

Вот и я о том же. создавай форк-проект на sf.net или github и исходники останутся там, а не потеряются в закромах или ftp-серверах.
Записан

Страниц: [1]
  Печать  
 
Перейти в: