Windows: Improve EVR presenter.

Removed hard dependency to Angle; it's now required only when rendering
to a texture. If Angle is not used, the buffers are now mappable to
system memory.

This enables HW-accelerated video decoding in QML for non-ANGLE
builds. Note that the frame data have to do a round-trip through system
memory, which is not ideal but still faster than SW decoding.

Task-number: QTBUG-45593
Change-Id: Icc3503142df4e8dbb53b4e11f409b161fd2f9bde
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
This commit is contained in:
Yoann Lopes
2015-11-27 11:56:50 +01:00
parent 36549dbe14
commit c7397523e7
11 changed files with 761 additions and 708 deletions

View File

@@ -1,28 +1,20 @@
INCLUDEPATH += $$PWD/evr
qtHaveModule(widgets): QT += widgets
QT += gui-private
LIBS += -lmf -lmfplat -lmfuuid -ld3d9 -ldxva2 -lwinmm -levr
HEADERS += \
$$PWD/evr/evrvideowindowcontrol.h \
$$PWD/evr/evrcustompresenter.h \
$$PWD/evr/evrd3dpresentengine.h \
$$PWD/evr/evrhelpers.h \
$$PWD/evr/evrdefs.h
SOURCES += \
$$PWD/evr/evrvideowindowcontrol.cpp \
$$PWD/evr/evrcustompresenter.cpp \
$$PWD/evr/evrd3dpresentengine.cpp \
$$PWD/evr/evrhelpers.cpp \
$$PWD/evr/evrdefs.cpp
contains(QT_CONFIG, angle)|contains(QT_CONFIG, dynamicgl) {
LIBS += -lmf -lmfplat -lmfuuid -ld3d9 -ldxva2 -lwinmm -levr
QT += gui-private
DEFINES += CUSTOM_EVR_PRESENTER
HEADERS += \
$$PWD/evr/evrcustompresenter.h \
$$PWD/evr/evrd3dpresentengine.h \
$$PWD/evr/evrhelpers.h
SOURCES += \
$$PWD/evr/evrcustompresenter.cpp \
$$PWD/evr/evrd3dpresentengine.cpp \
$$PWD/evr/evrhelpers.cpp
}