Changeset 846 for trunk/src/3rdparty/phonon/ds9
- Timestamp:
- May 5, 2011, 5:36:53 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
- 5 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.7.2 (added) merged: 845 /branches/vendor/nokia/qt/current merged: 844 /branches/vendor/nokia/qt/4.6.3 removed
- Property svn:mergeinfo changed
-
trunk/src/3rdparty/phonon/ds9/backendnode.cpp
r561 r846 68 68 HRESULT hr = info.pGraph->RemoveFilter(filter); 69 69 70 if ( hr == VFW_E_NOT_STOPPED&& m_mediaObject) {70 if (FAILED(hr) && m_mediaObject) { 71 71 m_mediaObject->ensureStopped(); 72 72 -
trunk/src/3rdparty/phonon/ds9/iodevicereader.cpp
r561 r846 129 129 while (m_buffer.size() < int(length)) { 130 130 needData(); 131 if (m_mediaGraph->isStopping()) {132 return VFW_E_WRONG_STATE;133 }134 131 135 132 if (oldSize == m_buffer.size()) { -
trunk/src/3rdparty/phonon/ds9/mediagraph.cpp
r561 r846 380 380 filter->QueryFilterInfo(&info); 381 381 #ifdef GRAPH_DEBUG 382 qDebug() << "removeFilter" << QString ::fromUtf16(info.achName);382 qDebug() << "removeFilter" << QString((const QChar *)info.achName); 383 383 #endif 384 384 if (info.pGraph) { … … 876 876 FILTER_INFO info; 877 877 filter->QueryFilterInfo(&info); 878 qDebug() << Q_FUNC_INFO << QString ::fromUtf16(info.achName);878 qDebug() << Q_FUNC_INFO << QString((const QChar *)info.achName); 879 879 if (info.pGraph) { 880 880 info.pGraph->Release(); … … 922 922 FILTER_INFO info; 923 923 filter->QueryFilterInfo(&info); 924 qDebug() << "found a decoder filter" << QString ::fromUtf16(info.achName);924 qDebug() << "found a decoder filter" << QString((const QChar *)info.achName); 925 925 if (info.pGraph) { 926 926 info.pGraph->Release(); … … 938 938 FILTER_INFO info; 939 939 filter->QueryFilterInfo(&info); 940 qDebug() << Q_FUNC_INFO << QString ::fromUtf16(info.achName);940 qDebug() << Q_FUNC_INFO << QString((const QChar *)info.achName); 941 941 if (info.pGraph) { 942 942 info.pGraph->Release(); … … 957 957 FILTER_INFO info; 958 958 filter->QueryFilterInfo(&info); 959 qDebug() << Q_FUNC_INFO << QString ::fromUtf16(info.achName);959 qDebug() << Q_FUNC_INFO << QString((const QChar *)info.achName); 960 960 if (info.pGraph) { 961 961 info.pGraph->Release(); … … 991 991 FILTER_INFO info; 992 992 filter->QueryFilterInfo(&info); 993 qDebug() << "found a demuxer filter" << QString ::fromUtf16(info.achName);993 qDebug() << "found a demuxer filter" << QString((const QChar *)info.achName); 994 994 if (info.pGraph) { 995 995 info.pGraph->Release(); -
trunk/src/3rdparty/phonon/ds9/mediaobject.cpp
r561 r846 28 28 #include <initguid.h> 29 29 #include <qnetwork.h> 30 #ifdef Q_CC_MSVC 31 # include <comdef.h> 32 #endif 30 33 #include <evcode.h> 31 34 -
trunk/src/3rdparty/phonon/ds9/videorenderer_soft.cpp
r561 r846 46 46 47 47 #ifndef QT_NO_OPENGL 48 #include < gl/gl.h>48 #include <GL/gl.h> 49 49 #ifndef GL_FRAGMENT_PROGRAM_ARB 50 50 #define GL_FRAGMENT_PROGRAM_ARB 0x8804 -
trunk/src/3rdparty/phonon/ds9/videorenderer_vmr9.cpp
r561 r846 23 23 #include <QtGui/QWidget> 24 24 #include <QtGui/QPainter> 25 #include <QtCore/QTimerEvent> 26 27 #ifndef Q_OS_WINCE 25 28 26 #include <d3d9.h> 29 27 #include <vmr9.h> 30 #else31 #include <uuids.h>32 #endif33 28 34 29 QT_BEGIN_NAMESPACE … … 49 44 50 45 51 #ifdef Q_OS_WINCE52 VideoRendererVMR9::VideoRendererVMR9(QWidget *target) : m_target(target)53 {54 m_target->setAttribute(Qt::WA_PaintOnScreen, true);55 m_filter = Filter(CLSID_VideoRenderer, IID_IBaseFilter);56 }57 58 QSize VideoRendererVMR9::videoSize() const59 {60 LONG w = 0,61 h = 0;62 ComPointer<IBasicVideo> basic(m_filter, IID_IBasicVideo);63 if (basic) {64 basic->GetVideoSize( &w, &h);65 }66 return QSize(w, h);67 }68 69 void VideoRendererVMR9::repaintCurrentFrame(QWidget * /*target*/, const QRect & /*rect*/)70 {71 //nothing to do here: the renderer paints everything72 }73 74 void VideoRendererVMR9::notifyResize(const QSize &size, Phonon::VideoWidget::AspectRatio aspectRatio,75 Phonon::VideoWidget::ScaleMode scaleMode)76 {77 if (!isActive()) {78 ComPointer<IBasicVideo> basic(m_filter, IID_IBasicVideo);79 if (basic) {80 basic->SetDestinationPosition(0, 0, 0, 0);81 }82 return;83 }84 85 ComPointer<IVideoWindow> video(m_filter, IID_IVideoWindow);86 87 OAHWND owner;88 HRESULT hr = video->get_Owner(&owner);89 if (FAILED(hr)) {90 return;91 }92 93 const OAHWND newOwner = reinterpret_cast<OAHWND>(m_target->winId());94 if (owner != newOwner) {95 video->put_Owner(newOwner);96 video->put_MessageDrain(newOwner);97 video->put_WindowStyle(WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);98 }99 100 //make sure the widget takes the whole size of the parent101 video->SetWindowPosition(0, 0, size.width(), size.height());102 103 const QSize vsize = videoSize();104 internalNotifyResize(size, vsize, aspectRatio, scaleMode);105 106 ComPointer<IBasicVideo> basic(m_filter, IID_IBasicVideo);107 if (basic) {108 basic->SetDestinationPosition(m_dstX, m_dstY, m_dstWidth, m_dstHeight);109 }110 }111 112 void VideoRendererVMR9::applyMixerSettings(qreal /*brightness*/, qreal /*contrast*/, qreal /*m_hue*/, qreal /*saturation*/)113 {114 //this can't be supported for WinCE115 }116 117 QImage VideoRendererVMR9::snapshot() const118 {119 ComPointer<IBasicVideo> basic(m_filter, IID_IBasicVideo);120 if (basic) {121 LONG bufferSize = 0;122 //1st we get the buffer size123 basic->GetCurrentImage(&bufferSize, 0);124 125 QByteArray buffer;126 buffer.resize(bufferSize);127 HRESULT hr = basic->GetCurrentImage(&bufferSize, reinterpret_cast<long*>(buffer.data()));128 129 if (SUCCEEDED(hr)) {130 131 const BITMAPINFOHEADER *bmi = reinterpret_cast<const BITMAPINFOHEADER*>(buffer.constData());132 133 const int w = qAbs(bmi->biWidth),134 h = qAbs(bmi->biHeight);135 136 // Create image and copy data into image.137 QImage ret(w, h, QImage::Format_RGB32);138 139 if (!ret.isNull()) {140 const char *data = buffer.constData() + bmi->biSize;141 const int bytes_per_line = w * sizeof(QRgb);142 for (int y = h - 1; y >= 0; --y) {143 qMemCopy(ret.scanLine(y), //destination144 data, //source145 bytes_per_line);146 data += bytes_per_line;147 }148 }149 return ret;150 }151 }152 return QImage();153 }154 155 #else156 46 VideoRendererVMR9::VideoRendererVMR9(QWidget *target) : m_target(target) 157 47 { 158 48 m_filter = Filter(CLSID_VideoMixingRenderer9, IID_IBaseFilter); 159 49 if (!m_filter) { 160 qWarning("the video widget could not be initialized correctly");161 50 return; 162 51 } … … 326 215 mixer->SetProcAmpControl(0, &ctrl); 327 216 } 328 #endif329 217 } 330 218 } -
trunk/src/3rdparty/phonon/ds9/videorenderer_vmr9.h
r2 r846 20 20 21 21 #include "abstractvideorenderer.h" 22 #include "compointer.h"23 22 24 23 QT_BEGIN_NAMESPACE -
trunk/src/3rdparty/phonon/ds9/videowidget.cpp
r769 r846 25 25 #include "mediaobject.h" 26 26 27 #ifndef Q_OS_WINCE 28 #include "videorenderer_evr.h" 27 29 #include "videorenderer_vmr9.h" 30 #else 31 #include "videorenderer_default.h" 32 #endif 28 33 #include "videorenderer_soft.h" 29 34 … … 353 358 if (m_renderers[index] == 0 && autoCreate) { 354 359 AbstractVideoRenderer *renderer = 0; 355 if (type == Native) { 356 renderer = new VideoRendererVMR9(m_widget); 360 if (type == Native) { 361 #ifndef Q_OS_WINCE 362 renderer = new VideoRendererEVR(m_widget); 357 363 if (renderer->getFilter() == 0) { 358 //instanciating the renderer might fail with error VFW_E_DDRAW_CAPS_NOT_SUITABLE (0x80040273) 364 delete renderer; 365 //EVR not present, let's try VMR 366 renderer = new VideoRendererVMR9(m_widget); 367 if (renderer->getFilter() == 0) { 368 //instanciating the renderer might fail 369 m_noNativeRendererSupported = true; 370 delete renderer; 371 renderer = 0; 372 } 373 } 374 #else 375 renderer = new VideoRendererDefault(m_widget); 376 if (renderer->getFilter() == 0) { 377 //instanciating the renderer might fail 359 378 m_noNativeRendererSupported = true; 360 379 delete renderer; 361 380 renderer = 0; 362 381 } 382 #endif 363 383 } 364 384
Note:
See TracChangeset
for help on using the changeset viewer.