Pull to refresh

Comments 8

Всё что здесь описано так же подходит и для других ЯП… Как раз есть задумка писать ядро видеоплеера с ffmpeg на С++ и работать с ним через интерфейсы в Delphi.
В данный момент оно и используется, но есть много НО… использование SDL (для меня это минус), отсутствие аппаратного воспроизведения на любой видеокарте, очень сильно отстает товарищ от самого ffmpeg по версионности, оно и понятно портировать вагон заголовочных файлов с C++ на Delphi — то ещё удовольствие. Проще действительно писать ядро на C++ не портируя вообще ничего, а гуй на Delphi. Пока обходимся 4096x4096@60fps h264 на процессоре, но в планах 8х8k hevc main, паскали такое умеют аппаратно, правда вроде только 30fps. Очень надеюсь, что тьюринги смогут и 60fps для 8x8k. Перебросить текстуры из DX в GL — не проблема. Пока декодер софтварный, а стриминг текстур, нужные преобразования и отображение — OpenGL (GLSL) (возможно будет Vulkan, и поддержка Linux). Хочется отвязаться от SDL и его потоков и написать простое, своё, без кучи лишних вреймворков и библиотек, ну кроме ffmpeg, разумеется.
Если интересно, это плеер для планетариев (одно- и много-проекторные системы)
Если у читателя остались вопросы касательно тонкостей взаимодействия с DLL (т. е. не по InternetTools), то рекомендую серию статей, которая послужила основой для данной.
А можно поподробнее, в чём сложность полного портирования под Delphi?
  1. InternetTools не является простой, состоящей из нескольких модулей, библиотекой: если брать в расчёт только inc- и pas-файлы, то их общее количество составит около 65-и, а размер примерно 5,5 МБ.
  2. Специфичность и низкоуровневость некоторых модулей: в качестве образца можно привести bbutils.pas, который способен подарить разработчику, до этого использовавшему строки только в прикладном ключе, новые неожиданные «удовольствия».
  3. Вопрос качества. Хотя библиотека и содержит автотесты (тоже, к слову, требующие портирования), их успешное прохождение не гарантирует отсутствия таких проблем, как, например, утечки памяти — это потребует отдельных тестовых сценариев.

Косвенно трудоёмкость задачи можно оценить из того факта, что запрос на портирование существует уже 5 лет, однако до сих пор ни автор InternetTools, ни кто-то ещё подобное не сделали.
Последний раздел — «Освобождение ресурсов» — теперь, скорее всего, становится неактуальным — была сделана доработка по автоматическому освобождению в некоторых случаях.
В некотором роде, вышло продолжение данной статьи, описывающее способ работы с динамическими сайтами — теми, для которых недостаточно только HTTP-запросов, а требуется ещё и выполнение JS-кода.
Sign up to leave a comment.

Articles