Вступление
Привет хабралюдям!
В своей
предыдущей статье я начал рассказывать о разработке плеера на основе VLC. В данной статье я расскажу об основных аспектах и сложностях, с которыми мне пришлось столкнуться при написании плеера. Вот как выглядит главное окно программы:
Главное окно программы
Отрисовка кадра на экран с помощью Direct3D
Итак, как я уже говорил для декодирования потокового видео используется библиотека LibVLC, которая является основной частью плеера VLC. Плагин VMem позволяет декодировать видео поток, применяя к нему различные фильтры и в конце концов сохранять ее в пользовательский участок памяти. Для того, чтобы ускорить вывод картинки я использовал Direct3D 9. В Direct3D есть понятие поверхностей(surfaces) а также текстур(textures). Поверхность — это массив байтов имеющий размер width x height:
Схематичное изображение поверхности
Т.е. по сути поверхность есть bitmap
Текстура отличается от поверхности тем, что ее можно «накладывать» на примитивы(полигоны). Также текстура имеет mip-map уровни — уменьшенные копии текстуры(применяется в 3D графике)