LINUX.ORG.RU
ФорумTalks

[mplayer][libass][ненависть!]

 


0

0

У mplayer'а отличная рендерилка сабов, но время от времени мне попадались сабы, где указанные PlayResX/PlayResY отличаются от размеров самого видеоряда. Как в итоге определил, это вызывало проблемы с позиционированием субтитров на экране(используя \pos в ass). До того как «прозрел», постоянно матерился сквозь зубы на фансаберов за коряво составленные сабы. И ничего не оставалось, как сидеть и переправлять координаты 8) Последней каплей стало «Nodame Cantbile», в котором количество «ляпов» просто зашкаливало... просмотрев сериал, и подправив координаты всеравно оставались огрехи и корявое позиционирование. Но вчера подвернулась машина с вендой, где была установлена рендерилка DirectVobSub... в общем, счастливы те, кто живет в неведении :) Начал ковыряться в исходниках mplayer'а, и чего только там не накуралесил с коррекцией аспекта, чтобы сабы созданные для 640x480 корректно ложились на видеоряд в 1280х720 или еще куда. В итоге оказалось все проще. В libass/ass_render.c в функции ass_start_frame есть строчки:

  if (frame_context.orig_width * track->PlayResY == frame_context.orig_height * track->PlayResX)
    frame_context.font_scale_x = 1.;
  else
    frame_context.font_scale_x = ((double)(frame_context.orig_width * track->PlayResY)) / (frame_context.orig_height * track->PlayResX);
К чертям закомментировав все и оставив лишь:
    frame_context.font_scale_x = 1.;

добился желаемого результата :) Для сравнения привожу скрины «до» и «после»(хотя тут не самые кошмарные ситуации):

до: http://s59.radikal.ru/i164/0902/4d/7d669ea37465.jpg

после: http://i056.radikal.ru/0902/87/790cc4e27dcd.jpg

до: http://s59.radikal.ru/i165/0902/68/3b562add6367.jpg

после: http://s41.radikal.ru/i093/0902/fd/d38ef1201180.jpg

Сейчас у меня нет постоянного выхода в сеть, да и с разговорным английским не так все гладко. Может ли кто в багзиллу mplayer'а запостить?

ЗЫ: эх... теперь надо бы перебрать свои DVD, и глянуть где вернуть сабы в обратное состояние... ЗЫЫ: кстати, таже трабла и в AegiSub

★★★★

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

Fredy
()

но ведь результат то лучше ))

reliktt
()
Ответ на: комментарий от Fredy

Возможно проблема была в размере шрифта

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

выше написал - DirectVobSub под вендой рисовал все корректно. И именно так оно и должно быть :) Причем проверял ведь не две или три анимешки, а довольно много.

2:sin_a
>>Возможно проблема была в размере шрифта
Не, трабла именно в коррекции по x в libass. По сути чуть ли не из астрала брался font_scale_x. Видать с условием что-то не так, толи нужно ввести epsilon для проверки float значений, либо еще чего(порой указанный размер фрейма возвращается 639 а не 640), но было лень уже разбираться и посему закомментил, хотя не представляю ситуацию когда понадобиось то значение для font_scale_x что они рассчитывают.

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

>>вот чтобы в ключе указывать эту опцию - это тру будет
а смысла? Сабы с правильным аспектом рисуются тоже правильно.

Andru ★★★★
() автор топика

Автор, ты проделал большую работу и теперь у тебя на руках тесты, знание механизма, поведения в разных рендерилках. Если кто-то за тебя запостит багрепорт, то получится испорченный телефон. Пофиг на английский, главное, чтоб разработчики поняли тебя. Лучше запость сам.

JackYF ★★★★
()

Вообще-то, топикстартер, ты костыль сделал, который будет корежить нормальные сабы кое-где.
Проблема, я так понимаю, в этом:
>чтобы сабы созданные для 640x480 корректно ложились на видеоряд в 1280х720


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

>И ничего не оставалось, как сидеть и переправлять координаты


А что, эдиторы не умеют сабы сами под другое разрешение перегонять? Тогда потрать пару минут на написание скрипта, математика уровня второго класса, программирование уровня шестого.

ПыСы Мне бы ваши проблемы, при отстутствии безлимитки выбирать версии не приходится, а энти сучьи хардсаберы ингуришные таку траву порой курят. Как они в моей версии (я так понимаю, из _разных_ релизгрупп состряпаную нашими фансабирами и дополненую ужасным руссабом) извращались на Гандам Сидом, это же кошмар, проще японский выучить.

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

>> Автор, ты проделал большую работу и теперь у тебя на руках тесты, знание механизма, поведения в разных рендерилках.

Наковырялся не мало, да... но вот только толку в итоге не особо от разбора механизма, ведь все свелось к банальной мелкой ошибке в коде 8)

>> Лучше запость сам.

Запостил... кошмар еще тот :) Т.к. автор libass, судя по email'у, скорее всего русский, решил запостить и русский вариант бага.
http://bugzilla.mplayerhq.hu/show_bug.cgi?id=1410

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

>> Вообще-то, топикстартер, ты костыль сделал, который будет корежить нормальные сабы кое-где.

Проверял и там где PlayResX/PlayResY совпадает с разрешением видео - все рендерится ок. Думаю в коде font_scale_x остался как излишество, т.к. там есть еще учет аспекта и пр.

>> А что, эдиторы не умеют сабы сами под другое разрешение перегонять?

проблема в том, что нужно рассчитать не только новые координаты для текста, а и размер шрифта и его "ужимку" по высоте/ширине, а это придется в сабы доп. скрипты вставлять 8) В общем этим должен заниматься именно libass.

ЗЫ:
>> Мне бы ваши проблемы, при отстутствии безлимитки выбирать версии не приходится

да я тоже без анлима :) Но кое-как выкручиваюсь за счет казенного инета и знакомых )

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

Я два месяца все к тебе собираюсь, никак дорогу перейти не могу :) Сегодня свободен, ближе к вечеру? (Сейчас в базе ковыряюсь на работе)

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

А пока можно закачать Kodomo nio Jikan последние три серии, Mai Hime - последние четыре (22-26), Air Master 21 и 27, Ayashi no Ceres 20-24. ;)

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

>> Кинь им линк на эту тему.

Я боюсь за последствия, ведь не каждый осилит манеру общения на ЛОР'е :) Или я не так понял, и ссылку на баг нужно куда-то еще скинуть?

ЗЫ: Да и сейчас уже дома... использую дорогущий GPRS, следственно возможности что-то еще делать особо нет... только ЛОР смотреть, да и то скоро в оффлайн пойду.

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

> Я боюсь за последствия, ведь не каждый осилит манеру общения на ЛОР'е :)

Англоязычные не поймут в любом случае. Русскоязычные разберутся.

> Или я не так понял, и ссылку на баг нужно куда-то еще скинуть?


Не-не-не, ты все правильно понял.

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

>Само же призналось!

Лучше уж быть rip чем ass.

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

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

Ты идиот. Каждый пользователь должен править сабы под разрешение своего экрана?

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

>> Каждый пользователь должен править сабы под разрешение своего рипа?

fixed

ЗЫ: Все, я в оффлайн, надеюсь разработчики чего-нить предпримут до вторника.

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

>И? Для вас открытие, что сабы делаются под конкретный релиз?

Первый пост, на который я и отвечал, прочитать не судьба значит?

>сабы, где указанные PlayResX/PlayResY отличаются от размеров самого видеоряда


>отличаются


>отличаются


>отличаются


>отличаются


ЕЯ ИДО?

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