Как создать встроенный видеоплеер с открытым исходным кодом
автор: Майкл Треттер, На FOSDEM, 2017 Для воспроизведения видео на встроенных устройствах, таких как информационно-развлекательные системы и медиацентры, требуются аппаратные ускорители для достижения приемлемой производительности.К сожалению, производители предоставляют драйверы для ускорителей только в виде двоичных двоичных объектов. Мы демонстрируем, как мы создали систему воспроизведения видео, которая использует аппаратное ускорение на i.MX6, используя исключительно программное обеспечение с открытым исходным кодом, включая GStreamer, Qt QML, драйвер графического процессора etnaviv и драйвер видеодекодера coda. Хотя аппаратные ускорители необходимы для обеспечения приемлемой производительности при воспроизведении видео на встроенных устройствах, драйверы, которые поставляются производителями оборудования в виде двоичных двоичных объектов, вызывают множество проблем. Они связаны с конкретными версиями ядра Linux, могут содержать проблемы с безопасностью и производительностью, и их практически невозможно отладить разработчикам, пытающимся создать систему на основе этих драйверов. Мы создали встроенную систему на базе i.MX6, которая одновременно декодирует и отображает четыре видео. В нашей системе используются исключительно драйверы с открытым исходным кодом для управления доступными аппаратными ускорителями. Графический интерфейс пользователя состоит из приложения Qt, основанного на QML. Использование Qt и QML позволяет использовать OpenGL для компоновки пользовательского интерфейса. OpenGL поддерживается графическим драйвером etnativ с открытым исходным кодом и графическим процессором Vivante. Приложение Qt получает видеопотоки из конвейера Gstreamer (используя playbin). Конвейер Gstreamer содержит элемент декодера v4l2, который использует драйвер coda v4l2 для видеокодера и IP-ядра декодера CODA 960 (VPU в справочном руководстве Freescale/NXP), и элемент приемника, который делает кадры доступными для приложения Qt. Весь конвейер, включая передачу данных из Gstreamer в Qt, использует dma_bufs для предотвращения копирования в программном обеспечении. В этом примере показано, как использовать драйверы с открытым исходным кодом для упрощения разработки видео- и графических приложений во встроенных системах.
автор: Майкл Треттер, На FOSDEM, 2017 Для воспроизведения видео на встроенных устройствах, таких как информационно-развлекательные системы и медиацентры, требуются аппаратные ускорители для достижения приемлемой производительности.К сожалению, производители предоставляют драйверы для ускорителей только в виде двоичных двоичных объектов. Мы демонстрируем, как мы создали систему воспроизведения видео, которая использует аппаратное ускорение на i.MX6, используя исключительно программное обеспечение с открытым исходным кодом, включая GStreamer, Qt QML, драйвер графического процессора etnaviv и драйвер видеодекодера coda. Хотя аппаратные ускорители необходимы для обеспечения приемлемой производительности при воспроизведении видео на встроенных устройствах, драйверы, которые поставляются производителями оборудования в виде двоичных двоичных объектов, вызывают множество проблем. Они связаны с конкретными версиями ядра Linux, могут содержать проблемы с безопасностью и производительностью, и их практически невозможно отладить разработчикам, пытающимся создать систему на основе этих драйверов. Мы создали встроенную систему на базе i.MX6, которая одновременно декодирует и отображает четыре видео. В нашей системе используются исключительно драйверы с открытым исходным кодом для управления доступными аппаратными ускорителями. Графический интерфейс пользователя состоит из приложения Qt, основанного на QML. Использование Qt и QML позволяет использовать OpenGL для компоновки пользовательского интерфейса. OpenGL поддерживается графическим драйвером etnativ с открытым исходным кодом и графическим процессором Vivante. Приложение Qt получает видеопотоки из конвейера Gstreamer (используя playbin). Конвейер Gstreamer содержит элемент декодера v4l2, который использует драйвер coda v4l2 для видеокодера и IP-ядра декодера CODA 960 (VPU в справочном руководстве Freescale/NXP), и элемент приемника, который делает кадры доступными для приложения Qt. Весь конвейер, включая передачу данных из Gstreamer в Qt, использует dma_bufs для предотвращения копирования в программном обеспечении. В этом примере показано, как использовать драйверы с открытым исходным кодом для упрощения разработки видео- и графических приложений во встроенных системах.
