Автор Тема: VSFilter  (Прочитано 513 раз)

0 Пользователей и 1 Гость просматривают эту тему.

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2012
VSFilter
« : 09 Февраль 2021, 03:45:41 »
VSFilter (DirectVobSub) - рендерер субтитров, который работает как Transform-фильтр.
Начиная с версии 1.5.7 был выделен из кода MPC-BE.

Исходный код | Source
История изменений | History

Минимальные системные требования:
Windows 7 и новее (возможно заработает на Windows Vista).
Процессор с поддержкой SSE2.

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2012
« Последнее редактирование: 22 Апрель 2021, 17:38:19 от V0lt »

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1779
Re: VSFilter
« Ответ #2 : 09 Февраль 2021, 18: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 данный субмодуль загружается без проблем.

Эпик фэйл :(
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Aleksoid1978

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2466
Re: VSFilter
« Ответ #3 : 09 Февраль 2021, 23:08:09 »
Ну вот опять, что еще за "Эпик фэйл". Завязываем так выражаться, реально бесит. Ну не собирается, ок - отписались спокойно и все. Дозальются необходимые файлы и все.
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /AMD Radeon R9 16Gb@3200 /Kingston 500Gb M.2 /GTX 1650 /Samsung U28R550UQI /LG 47LM620T /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2012
Re: VSFilter
« Ответ #4 : 10 Февраль 2021, 13:43:15 »
Evgeniy1990
Путь к yasm.exe надо прописать в PATH (или у себя локально в YASM.bat).
Файлы проекта BaseClasses добавлены в исходники.
Вечером клонирую репозиторий в пустую папку и перепроверю сборку бинариков.
И прошу воздержаться от грубости.

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1779
Re: VSFilter
« Ответ #5 : 10 Февраль 2021, 14:14:51 »
V0lt,
Цитировать
Путь к yasm.exe надо прописать в PATH (или у себя локально в YASM.bat).
Я прописал путь к yasm.exe в файл YASM.bat, после чего VSFilter успешно построился.
Но, есть ли возможность (способ) поиска yasm.exe без изменений в проектных файлах?
Цитировать
Файлы проекта BaseClasses добавлены в исходники.
Спасибо!
Цитировать
Вечером клонирую репозиторий в пустую папку и перепроверю сборку бинариков.
В данный момент бинарники собираются успешно.
Цитировать
И прошу воздержаться от грубости.
Ок, прошу прощение. Вы уж не обижайтесь на меня, просто вчера я действительно очень сильно намучился со сборкой VSFilter, проверив и использовав все возможные различные способы его построения. Поскольку, в итоге, ничего не получилось и не помогло, я и написал, что прям действительно какой-то полный провал. Это я больше для себя отметил, а не для вас.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1779
Re: VSFilter
« Ответ #6 : 10 Февраль 2021, 14: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\
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2012
Re: VSFilter
« Ответ #7 : 10 Февраль 2021, 15:43:53 »
Evgeniy1990
1. У VSFilter всегда был свой номер версии, который отличался от плеера.
Пример: Релизный VSFilter в About пишет версию 2.46.6000.

В свойствах файла версия плеера 1.5.6.6000.
А VSFilter из MPC-HC 1.7.13 в About пишет версию 2.41.0.
В общем надо разбираться, т.к. VSFilter еще и плагин для VirtualDub и AviSynth.

2. Исправлено в 930aed2.
« Последнее редактирование: 10 Февраль 2021, 16:37:03 от V0lt »

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1779
Re: VSFilter
« Ответ #8 : 10 Февраль 2021, 16:50:33 »
V0lt,
Цитировать
1. У VSFilter всегда был свой номер версии, который отличался от плеера.
Пример: Релизный VSFilter в About пишет версию 2.46.6000.
Да, я знаю, что у него всегда был свой номер версии.
Вот именно, что меняется последнее значение. Когда он был в SVN, ему присваивался порядковый номер билда, т.е. 6000, а теперь, когда он в Git-репозитории, ему присваивается порядковый номер коммита, т.е. тот, который идет по счету (по списку), т.е. 3. Вот в чем прикол. А версия 2.46 так и остается неизменной.
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2012
Re: VSFilter
« Ответ #9 : 10 Февраль 2021, 18:00:08 »
Цитировать
Путь к 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 может быть не определен и все будет работать.
« Последнее редактирование: 10 Февраль 2021, 18:14:09 от V0lt »

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1779
Re: VSFilter
« Ответ #10 : 10 Февраль 2021, 18: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. 

Огромное вам спасибо за вашу оперативность в устранении всех недостатков. :)
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

Evgeniy1990

  • Ветеран
  • *****
  • Сообщений: 1779
Re: VSFilter
« Ответ #11 : 10 Февраль 2021, 19: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".
Motherboards: ASUS P5Q/GIGABYTE EP35C-DS3R, CPU: Core 2 Duo E8300/E8400, Memory: DDR2/DDR3, Video: MSI GTX 465/ASUS EAH5770/GTX 650 Ti, Audio: ASUS Xonar DG 5.1/Creative SB 5.1. VX/X-Fi Xtreme Gamer.

V0lt

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 2012
Re: VSFilter
« Ответ #12 : 11 Февраль 2021, 16:12:15 »
9eb3df8
MPCBE_YASM_PATH заменен на YASM_PATH и теперь должен содержать полный путь к yasm.exe.
Новый пример environments.bat:
@echo OFF
SET YASM_PATH="C:\Soft\MSYS\bin\yasm.exe"

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