MPC-BE forum

MPC-BE => Внешние фильтры / External filters => Тема начата: V0lt от 09 февраля 2021, 06:45:41

Название: VSFilter
Отправлено: V0lt от 09 февраля 2021, 06:45:41
VSFilter (DirectVobSub) - рендерер субтитров, который работает как Transform-фильтр.
Начиная с версии 1.5.7 был выделен из кода MPC-BE.

Исходный код | Source (https://github.com/v0lt/VSFilter)
История изменений | History (https://github.com/v0lt/VSFilter/commits/master)

Минимальные системные требования:
Windows 7 и новее (возможно заработает на Windows Vista).
Процессор с поддержкой SSE2.
Название: Re: VSFilter
Отправлено: V0lt от 09 февраля 2021, 06:45:50
Аналоги
Оригинальный VSFilter 2.37 (https://sourceforge.net/projects/guliverkli/files/VSFilter/VSFilter%202.37/) (только x86)
VSFilter MPC-HC 1.7.13 (https://github.com/mpc-hc/mpc-hc/releases/) (см. архив standalone filters)
xy-VSFilter 3.0.0.306 от Cyberbeing (https://github.com/Cyberbeing/xy-VSFilter/releases/tag/3.0.0.306)
xy-VSFilter v3.2.0.810 (20240123) от pinterf (https://github.com/pinterf/xy-VSFilter/releases)

XySubFilter
XySubFilter 3.1.0.752 от Cyberbeing (https://github.com/Cyberbeing/xy-VSFilter/releases)
XySubFilter v3.2.0.810 (20240123) от pinterf (https://github.com/pinterf/xy-VSFilter/releases)
XySubFilter with libass (20230505) от Masaiki (https://github.com/Masaiki/xy-VSFilter/releases)
Название: Re: VSFilter
Отправлено: Evgeniy1990 от 09 февраля 2021, 21:54:45
V0lt,
Попробовал собрать VSFilter, а он и не собирается вовсе. Выдает ошибки, еще и на VS2019 ругается. Жесть какая-то...

20:34:00.503     1>C:\VSFilter (DirectVobSub)\VSFilter\VSFilter.sln.metaproj : error MSB3202: Файл "C:\VSFilter (DirectVobSub)\VSFilter\external\BaseClasses.vcxproj" не найден. [C:\VSFilter (DirectVobSub)\VSFilter\VSFilter.sln]
20:34:02.739     3>C:\VSFilter (DirectVobSub)\VSFilter\src\YASM.targets(45,5): error MSB3721: выход из команды ""C:\VSFilter (DirectVobSub)\VSFilter\src\YASM.bat" -X vc -f win32    -o "C:\VSFilter (DirectVobSub)\VSFilter\_bin\obj\Release_x86\system\a_memory.obj" "C:\VSFilter (DirectVobSub)\VSFilter\src\ExtLib\VirtualDub\system\source\a_memory.asm"" с кодом "1". [C:\VSFilter (DirectVobSub)\VSFilter\src\ExtLib\VirtualDub\system\system.vcxproj]


Ругань на VS2019:
20:34:01.901     8>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(1889,5): warning : The referenced project 'C:\VSFilter (DirectVobSub)\VSFilter\\external\BaseClasses.vcxproj' does not exist. [C:\VSFilter (DirectVobSub)\VSFilter\src\filters\transform\BaseVideoFilter\BaseVideoFilter.vcxproj]
И это еще не все...

BaseClasses не загружает и вовсе, хотя у меня присутствует данный подмодуль (субмодуль). Странно и непонятно. В том же MPC-VR данный субмодуль загружается без проблем.

Эпик фэйл :(
Название: Re: VSFilter
Отправлено: Aleksoid1978 от 10 февраля 2021, 02:08:09
Ну вот опять, что еще за "Эпик фэйл". Завязываем так выражаться, реально бесит. Ну не собирается, ок - отписались спокойно и все. Дозальются необходимые файлы и все.
Название: Re: VSFilter
Отправлено: V0lt от 10 февраля 2021, 16:43:15
Evgeniy1990
Путь к yasm.exe надо прописать в PATH (или у себя локально в YASM.bat).
Файлы проекта BaseClasses добавлены в исходники.
Вечером клонирую репозиторий в пустую папку и перепроверю сборку бинариков.
И прошу воздержаться от грубости.
Название: Re: VSFilter
Отправлено: Evgeniy1990 от 10 февраля 2021, 17:14:51
V0lt,
ЦитироватьПуть к yasm.exe надо прописать в PATH (или у себя локально в YASM.bat).
Я прописал путь к yasm.exe в файл YASM.bat, после чего VSFilter успешно построился.
Но, есть ли возможность (способ) поиска yasm.exe без изменений в проектных файлах?
ЦитироватьФайлы проекта BaseClasses добавлены в исходники.
Спасибо!
ЦитироватьВечером клонирую репозиторий в пустую папку и перепроверю сборку бинариков.
В данный момент бинарники собираются успешно.
ЦитироватьИ прошу воздержаться от грубости.
Ок, прошу прощение. Вы уж не обижайтесь на меня, просто вчера я действительно очень сильно намучился со сборкой VSFilter, проверив и использовав все возможные различные способы его построения. Поскольку, в итоге, ничего не получилось и не помогло, я и написал, что прям действительно какой-то полный провал. Это я больше для себя отметил, а не для вас.
Название: Re: VSFilter
Отправлено: Evgeniy1990 от 10 февраля 2021, 17:26:43
V0lt,
Пока заметил следующие проблемы самого VSFilter:

1. Это версия проекта. Если открыть окно About, то увидим что меняется только последняя цифра, остальные не меняются вовсе.
Т.е., по сути, сама версия остается неизменной, да и вообще не соответствует компилируемой:
VSFilter-1.5.7.3_git2021.02.10-0bb6744.
Также, сюда относится и сам копирайт. Его желательно обновить.

2. Это файл "Reset_Settings".
Заметил, что он не сбрасывает настройки по умолчанию. Открыв его, я был очень сильно удивлен тому, что он вообще не соответствует VSFilter.
Т.е. в нем вот такая строка: REM start /min reg delete "HKEY_CURRENT_USER\Software\MPC-BE Filters\MPC Image Source" /f
1) Причем тут вообще фильтр:MPC Image Source?
2) Да и сами настройки VSFilter явно хранит не по этому указанному адресу: HKEY_CURRENT_USER\Software\MPC-BE Filters\
Название: Re: VSFilter
Отправлено: V0lt от 10 февраля 2021, 18:43:53
Evgeniy1990
1. У VSFilter всегда был свой номер версии, который отличался от плеера.
Пример: Релизный VSFilter в About пишет версию 2.46.6000.
(https://jpegshare.net/thumbs/55/10/5510a2ef6cc9be1200400b5b413a767a.jpg) (https://jpegshare.net/55/10/5510a2ef6cc9be1200400b5b413a767a.png.html)
В свойствах файла версия плеера 1.5.6.6000.
А VSFilter из MPC-HC 1.7.13 в About пишет версию 2.41.0.
В общем надо разбираться, т.к. VSFilter еще и плагин для VirtualDub и AviSynth.

2. Исправлено в 930aed2 (https://github.com/v0lt/VSFilter/commit/930aed2d76857e91009314d2fa13f37c52f8f97c).
Название: Re: VSFilter
Отправлено: Evgeniy1990 от 10 февраля 2021, 19:50:33
V0lt,
Цитировать1. У VSFilter всегда был свой номер версии, который отличался от плеера.
Пример: Релизный VSFilter в About пишет версию 2.46.6000.
Да, я знаю, что у него всегда был свой номер версии.
Вот именно, что меняется последнее значение. Когда он был в SVN, ему присваивался порядковый номер билда, т.е. 6000, а теперь, когда он в Git-репозитории, ему присваивается порядковый номер коммита, т.е. тот, который идет по счету (по списку), т.е. 3. Вот в чем прикол. А версия 2.46 так и остается неизменной.
Название: Re: VSFilter
Отправлено: V0lt от 10 февраля 2021, 21:00:08
Цитата: Evgeniy1990 от 10 февраля 2021, 17:14:51
ЦитироватьПуть к yasm.exe надо прописать в PATH (или у себя локально в YASM.bat).
Я прописал путь к yasm.exe в файл YASM.bat, после чего VSFilter успешно построился.
Но, есть ли возможность (способ) поиска yasm.exe без изменений в проектных файлах?
Прописать путь к yasm.exe в переменную PATH (в пользовательской или системной секции настроек).

Ну или вновь обновиться и создать environments.bat со следующим содержимым:
@ECHO OFF
SET "MPCBE_YASM_PATH=C:\MSYS\bin"

где "C:\MSYS\bin" - путь к yasm.exe (у тебя может быть другим).

PS: Делать по аналогии с MPC-BE и кидать ошибку, если MPCBE_YASM_PATH неопределен, не стал. Т.к. на самом деле MPCBE_YASM_PATH может быть не определен и все будет работать.
Название: Re: VSFilter
Отправлено: Evgeniy1990 от 10 февраля 2021, 21:55:54
V0lt,
Я пробовал утром через переменные среды указать путь к yasm.exe. Указал имя/значение переменной, а компилятор все равно не может найти этот yasm.exe.

Ну и также попробовал взять файл YASM.bat из проекта MPC-BE, при этом добавив уже готовый файл environments.bat.
Вот с ними проект VSFilter стал успешно собираться.

И последний способ - это прописать путь в самом YASM.bat. Тогда проект VSFilter также строится успешно.
ЦитироватьНу или вновь обновиться и создать environments.bat со следующим содержимым:
Код: [Выделить]

@ECHO OFF
SET "MPCBE_YASM_PATH=C:\MSYS\bin"

где "C:\MSYS\bin" - путь к yasm.exe (у тебя может быть другим).
Отлично! Пусть тогда будет именно так, как и с проектом MPC-BE, т.е. по аналогии, с использованием environments.bat, дабы не затрагивать основной проектный файл YASM.bat. 

Огромное вам спасибо за вашу оперативность в устранении всех недостатков. :)
Название: Re: VSFilter
Отправлено: Evgeniy1990 от 10 февраля 2021, 22:17:51
V0lt,
Вот еще что, при построении Debug-билда, выскакивает Warning C4996:

22:06:46.102     9>C:\VSFilter\src\filters\transform\VSFilter\plugins.cpp(569,5): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\VSFilter\src\filters\transform\VSFilter\VSFilter.vcxproj]
22:06:46.112     9>C:\VSFilter\src\filters\transform\VSFilter\plugins.cpp(614,6): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\VSFilter\src\filters\transform\VSFilter\VSFilter.vcxproj]
22:06:46.112     9>C:\VSFilter\src\filters\transform\VSFilter\plugins.cpp(616,6): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [C:\VSFilter\src\filters\transform\VSFilter\VSFilter.vcxproj]

Компилятор говорит, что переменная (функция) "sprintf" является незащищенной (небезопасной) и рекомендует использовать более безопасную переменную (функцию) "sprintf_s".
Название: Re: VSFilter
Отправлено: V0lt от 11 февраля 2021, 19:12:15
9eb3df8 (https://github.com/v0lt/VSFilter/commit/9eb3df8e48c1e00aa83ae6a3641b2c2bfc21c8ef)
MPCBE_YASM_PATH заменен на YASM_PATH и теперь должен содержать полный путь к yasm.exe.
Новый пример environments.bat:
@echo OFF
SET YASM_PATH="C:\Soft\MSYS\bin\yasm.exe"


Цитата: Evgeniy1990 от 10 февраля 2021, 22:17:51Вот еще что, при построении Debug-билда, выскакивает Warning C4996
Исправлено.
Но теперь, когда VSFilter является плагином VirtualDub, путь к субтитрам должен быть не более 127 символов, т.к. буфер для строки ограничен 128 байт согласно VirtualDub Filters SDK.