LINUX.ORG.RU
решено ФорумTalks

Прошу проверить баг flash плеера с VDPAU на nVidia

 , ,


0

1

В процессе ковыряния с драйвером VDPAU я наткнулся на баг в flash плеере. Проявляется он в растянутых полосах по краям видео. Это видно вот здесь с правой стороны, тогда как без использования аппаратного ускорения всё хорошо. Долгое время я считал это багом в своём драйвере. А когда пришло время исправлять, всё оказалось не так просто.

Конкретно у этого видео [1] размер кадра составляет 322x240, но flash плагин сообщает размер как 336x240, увеличивая его до ближайшего кратного 16. Я не вижу внятных способов определить реальный размер кадра, он нигде в вызовах VDPAU не проскакивает. Остаётся только проверить на nVidia карте; если он проявляется и там, то нет смысла пытаться исправить баг. К сожалению, у меня нет видеокарты nVidia, а купить что-нибудь простенькое и поставить в комп я не могу, с ноутбуком такое сложнее, чем со стационарным ПК.

И вот собственно просьба: проверить на nVidia с проприетарным драйвером, есть баг или нет. Желательно пару скриншотов с включенным и выключенным ускорением [2]. И вывод vdpauinfo | grep Info. А для полного счастья ещё и выхлоп в консоль браузера, запущенного с установленной переменной VDPAU_TRACE=1.

[1] https://www.youtube.com/watch?v=GL0VnLHpVYQ
[2] Как включить/выключить ускорение: раз, два. Чтобы изменения вступили в силу, страницу надо обновить.

★★★★★

Последнее исправление: i-rinat (всего исправлений: 3)

Баг не воспроизводится.

01:00.0 VGA compatible controller: NVIDIA Corporation GK107M [GeForce GT 650M Mac Edition] (rev a1)

[I] x11-drivers/nvidia-drivers
Installed versions:  325.15^msd(12:46:21 AM 09/24/2013)(X acpi multilib tools -pax_kernel KERNEL="linux -FreeBSD")

Linux himera 3.11.1-gentoo-sta #8 SMP Tue Sep 24 12:48:55 EEST 2013 x86_64 Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz GenuineIntel GNU/Linux
Evil_Wizard ★★★
()
Последнее исправление: Evil_Wizard (всего исправлений: 2)
Ответ на: комментарий от Evil_Wizard

Спасибо.

Как-то драйвер всё же определяет правильный размер. Осталось только выяснить как.

i-rinat ★★★★★
() автор топика

К сожалению, у меня сейчас не так много свободного времени, поэтому ограничусь просто тестом без приложения логов. В общем, карты Nvidia под рукой нет, но есть Radeon HD с рабочим VDPAU. Браузер — Opera, аппаратное ускорение включил (проверил, что в +100500 у Макса физиомордия синяя). Баг не подтверждаю.

carasin ★★★★★
()
Ответ на: комментарий от Evil_Wizard

VDPAU_TRACE=1 нужно? мне немного лень перезапускать броузер :)

Не горит, конечно, но желательно. (Месяц-другой вполне терпит :) )

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от carasin

Баг не подтверждаю

Вряд ли в новонаписанном декодере будет workaround для Flash'а. Остаются два варианта: либо баг всё же у меня, либо оба (amd, nvidia) декодера по какой-то причине не замечают неправильной ширины.

i-rinat ★★★★★
() автор топика

Баг есть - изображение как на указанных скриншотах.

01:00.0 VGA compatible controller: NVIDIA Corporation GT218M [NVS 3100M] (rev a2)
Information string: NVIDIA VDPAU Driver Shared Library  304.108  Wed Jul 31 19:59:42 PDT 2013

Без VDPAU_TRACE - тишина. С VDPAU_TRACE=1 в консоли такое (много):

vdp_output_surface_render_bitmap_surface(5, {0, 0, 640, 390}, 6, {0, 0, 640, 390}, NULL, , 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16{(ver=0) 1, 5, 1, 5, 2, 2, {0,000000, 0,000000, 0,000000, 0,000000}}, 0)
, 16, 16, 16, 16, 16, 16, 16}}, {{15, 0, 1, 1, {126, 126}, 15}, {8, 0, 1, 1, {128, 128}, 0}, {9, 0, 1, 1, {130, 130}, 1}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}    -> 0
vdp_presentation_queue_display(3, 5, 0, 0, 0)
, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}, {4294967295, 0, 0, 0, {0, 0}, 0}}}, 1, {{(ver 0) 15, ...}})
    -> 0
    -> 0
vdp_presentation_queue_block_until_surface_idle(3, 4, -)
vdp_decoder_render(7, 16, {1, {134, 134}, 1, 3, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 1, 1, 0, 1, 0, {{16, 16, 16, 16, 16, 16, 16, 16, 16    -> 0, 1380100341815223936
vdp_generate_csc_matrix(NULL, 1, -)
    -> 0, {{1,164400, 0,000000, 1,792700, -0,972926}, {1,164400, -0,213200, -0,532900, 0,301453}, {1,164400, 2,112400, 0,000000, -1,133402}}
vdp_video_mixer_set_attribute_values(21, 1, {1}, {{{1,164857, 0,000168, 1,792690, -0,969518}, {1,164799, -0,213305, -0,532960, 0,300047}, {1,166498, 2,112500, 0,000066, -1,129475}}})
    -> 0
vdp_video_mixer_render(21, 4294967295, NULL, 2, 0, NULL, 12, 0, NULL, NULL, 20, NULL, NULL, 0, NULL)
, 16, 16, 16, 16, 16, 16, 16}, {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16    -> 0
vdp_output_surface_render_output_surface(4, , 16, 16, 16, 16}, {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16{78, 0, 561, 360}, 20, {0, 0, 336, 240}, NULL, {(ver=0) 1, 0, 1, 0, 2, 2, {0,000000, 0,000000, 0,000000, 0,000000}}, 0)
, 16, 16, 16, 16, 16}, {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16    -> 0
vdp_output_surface_render_bitmap_surface(4, {0, 0, 640, 390}, 6, {0, 0, 640, 390}, NULL, {(ver=0) 1, 5, 1, 5, 2, 2, {0,000000, 0,000000, 0,000000, 0,000000}}, 0)
, 16, 16}, {16, 16, 16, 16    -> 0
vdp_presentation_queue_display(3, 4, 0, 0, 0)

sanwashere ★★
()
Ответ на: комментарий от sanwashere

Баг есть - изображение как на указанных скриншотах.

Ух-ты, не ожидал. Теперь это ещё более непонятно. Получается на некоторых картах проявляется, а на других — нет.

в консоли такое (много)

VDPAU_TRACE включает трассировку и выводит каждый вызов. Их по нескольку штук на каждый кадр. Мне особо вот этот кусок был интересен: «{0, 0, 336, 240}». Flash плеер всё-таки передаёт некорректные значения.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Evil_Wizard

В связи с новопоступившими данными, вопрос. У тебя Flash плеер какой версии? Если не 11.2.202.310, то вполне возможно, что не использовался аппаратный декодер. Какие-то из предыдущих версий 240p декодировали в софтовом декодере, а последняя стала использовать аппаратный.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от carasin

физиомордия синяя

там вроде патч заносили в vdpau, который синие лица исправляет в хромиум и фурифоксе, но не в опере :D

fornlr ★★★★★
()
Ответ на: комментарий от Evil_Wizard

Лови VDPAU_TRACE=1 лог: http://pastebin.com/BW8jSJf3

Спасибо, многое прояснилось.

Теперь меня ещё вопрос (скорее, просто подтвердить). Если в контекстном меню выбрать «статистика для сисадминов» (stats for nerds), там у тебя «accelerated video rendering, software video decoding»? Судя по логу, у тебя не включено аппаратное декодирование.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat
timestamp seconds 6.304
322x240, 0 average kbps, 100% volume
TagStreamPlayer, HTTP, 87635 kbps
10 stage fps, 30 video fps, 3 dropped, 0 kbps
accelerated video rendering, software video decoding
NaN db, 1 audio factor
Evil_Wizard ★★★
()
Ответ на: комментарий от Evil_Wizard

Вот в этом меню http://i.imgur.com/LkBbioZ.png нужно выбрать Stats for nerds. В русском варианте оно называется «Статистика для сисадминов». Появится окошко внутри плеера.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Evil_Wizard

Ну да, это оно. Software video decoding.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Evil_Wizard

Использование аппаратного декодера можно активировать, создав файл /etc/adobe/mms.cfg, и добавив в него строчку EnableLinuxHWVideoDecode=1

Почему-то мне теперь кажется, что после этого баг воспроизведётся.

i-rinat ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.