Pull to refresh
2
Karma
0
Rating
Денис Сотников @Ravager

User

Видео-плеер на основе VLC. Часть 2: используем Direct3D

Reading time 3 min
Views 6.5K
Website development *

Вступление


Привет хабралюдям!

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

image
Главное окно программы

Отрисовка кадра на экран с помощью Direct3D


Итак, как я уже говорил для декодирования потокового видео используется библиотека LibVLC, которая является основной частью плеера VLC. Плагин VMem позволяет декодировать видео поток, применяя к нему различные фильтры и в конце концов сохранять ее в пользовательский участок памяти. Для того, чтобы ускорить вывод картинки я использовал Direct3D 9. В Direct3D есть понятие поверхностей(surfaces) а также текстур(textures). Поверхность — это массив байтов имеющий размер width x height:

image
Схематичное изображение поверхности

Т.е. по сути поверхность есть bitmap
Текстура отличается от поверхности тем, что ее можно «накладывать» на примитивы(полигоны). Также текстура имеет mip-map уровни — уменьшенные копии текстуры(применяется в 3D графике)
Читать дальше →
Total votes 49: ↑35 and ↓14 +21
Comments 52

Idle Event в Qt

Reading time 3 min
Views 5.2K
Qt *
Привет, хабралюди!

Встпуление


Не так давно я стал работать с Qt под Windows. Моей задачей является разработка графического приложения с отрисовкой пользовательского интерфейса в реальном времени с анимацией и прочими плюшками. Работает вся эта красота через DirectX, а Qt очень помогает анимацией, окнами, сигналами и прочими полезными вещами.

Зачем это надо?


Если кто занимался разработкой игр, то знает, что перерисовка экрана происходит во время «простоя приложения» — т.е. те моменты, когда очередь сообщений к окну пустая. Это позволяет перерисовывать окно довольно быстро, так в частности пустое окно, может отрисовываться несколько тысяч фреймов в секунду(с отключенной вертикальной синхронизацией).
Читать дальше →
Total votes 7: ↑4 and ↓3 +1
Comments 9

Видео-плеер на основе VLC. Часть 1

Reading time 2 min
Views 22K
Website development *
Sandbox

Вступление, или как все начиналось...


Когда я пришел устраиваться на работу, мне показали макет того, что я должен буду сделать. Это был видео-плеер с довольно симпатичным интерфейсом. Предполагалось, что мой плеер будет использовать плеер VLC (а точнее его библиотеку LibVLC) в качестве видео-движка. Дело в том, что плеер, который все привыкли видеть на своем рабочем столе — VLC по сути лишь интерфейс для библиотеки LibVLC, которая позволяет загружать и декодировать видео файлы с локального диска, мультикаст поток.

С языком разработки определились сразу же — С++. Что касается среды разработки, то у меня, как и у начальства были свои предложения (Visual Studio IDE) — в итоге сошлись на Qt IDE, т.к. SDK имеет множество классов, позволяющих ускорить разработку приложения с пользовательским интерфейсом.
Читать дальше →
Total votes 55: ↑39 and ↓16 +23
Comments 23

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity