24 #include <QMutexLocker>
26 #include <hybris/media/media_codec_layer.h>
27 #include <hybris/media/surface_texture_client_hybris.h>
44 thiz->onFrameAvailable();
49 gl_texture{gl_texture},
50 graphics_buffer_consumer{decoding_service_get_igraphicbufferconsumer()},
51 gl_texture_consumer{gl_consumer_create_by_id_with_igbc(gl_texture, graphics_buffer_consumer)}
53 if (not graphics_buffer_consumer) {
54 MH_ERROR(
"video::HybrisGlSink: Could not connect to remote buffer queue.");
58 if (not gl_texture_consumer) {
59 MH_ERROR(
"video::HybrisGlSink: Could not associate local texture id with remote buffer streak.");
63 gl_consumer_set_frame_available_cb(gl_texture_consumer,
64 HybrisVideoSinkPrivate::on_frame_available_callback,
71 gl_consumer_set_frame_available_cb(gl_texture_consumer,
72 HybrisVideoSinkPrivate::on_frame_available_callback,
78 gl_consumer_get_transformation_matrix(gl_texture_consumer,
79 m_transformationMatrix.data());
90 HybrisVideoSink::HybrisVideoSink(uint32_t gl_texture,
100 void HybrisVideoSink::onFrameAvailable()
103 d->updateTransformationMatrix();
111 static QHash<PlayerKey, DSSessionWrapperHybris> lut;
112 static QMutex lut_guard;
116 QMutexLocker lg(&lut_guard);
117 if (!lut.contains(key))
118 lut[key] = decoding_service_create_session(key);
121 return [](uint32_t textureId,
QObject *parent) {
131 gl_consumer_update_texture(d->gl_texture_consumer);