У 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