57 // Public functions |
57 // Public functions |
58 //----------------------------------------------------------------------------- |
58 //----------------------------------------------------------------------------- |
59 |
59 |
60 void MMF::SurfaceVideoPlayer::videoWindowSizeChanged() |
60 void MMF::SurfaceVideoPlayer::videoWindowSizeChanged() |
61 { |
61 { |
62 updateScaleFactors(m_videoOutput->videoWindowSize()); |
62 if (m_videoOutput) |
|
63 updateScaleFactors(m_videoOutput->videoWindowSize()); |
63 } |
64 } |
64 |
65 |
65 |
66 |
66 //----------------------------------------------------------------------------- |
67 //----------------------------------------------------------------------------- |
67 // Private functions |
68 // Private functions |
78 m_player.reset(player); |
79 m_player.reset(player); |
79 } |
80 } |
80 |
81 |
81 void MMF::SurfaceVideoPlayer::initVideoOutput() |
82 void MMF::SurfaceVideoPlayer::initVideoOutput() |
82 { |
83 { |
|
84 Q_ASSERT(m_videoOutput); |
|
85 |
83 bool connected = connect( |
86 bool connected = connect( |
84 m_videoOutput, SIGNAL(videoWindowSizeChanged()), |
87 m_videoOutput, SIGNAL(videoWindowSizeChanged()), |
85 this, SLOT(videoWindowSizeChanged()) |
88 this, SLOT(videoWindowSizeChanged()) |
86 ); |
89 ); |
87 Q_ASSERT(connected); |
90 Q_ASSERT(connected); |
102 parametersChanged(WindowHandle); |
105 parametersChanged(WindowHandle); |
103 } |
106 } |
104 |
107 |
105 void MMF::SurfaceVideoPlayer::handleParametersChanged(VideoParameters parameters) |
108 void MMF::SurfaceVideoPlayer::handleParametersChanged(VideoParameters parameters) |
106 { |
109 { |
|
110 TRACE_CONTEXT(SurfaceVideoPlayer::handleParametersChanged, EVideoApi); |
|
111 TRACE_ENTRY("parameters 0x%x", parameters.operator int()); |
|
112 |
107 TRect rect; |
113 TRect rect; |
108 if (m_videoOutput) { |
114 if (m_videoOutput) { |
109 m_videoOutput->dump(); |
115 m_videoOutput->dump(); |
110 const QSize size = m_videoOutput->videoWindowSize(); |
116 const QSize size = m_videoOutput->videoWindowSize(); |
111 rect.SetSize(TSize(size.width(), size.height())); |
117 rect.SetSize(TSize(size.width(), size.height())); |
113 |
119 |
114 CVideoPlayerUtility2 *player = static_cast<CVideoPlayerUtility2 *>(m_player.data()); |
120 CVideoPlayerUtility2 *player = static_cast<CVideoPlayerUtility2 *>(m_player.data()); |
115 if (player) { |
121 if (player) { |
116 int err = KErrNone; |
122 int err = KErrNone; |
117 if (parameters & WindowHandle) { |
123 if (parameters & WindowHandle) { |
118 if (m_displayWindow) |
124 removeDisplayWindow(); |
119 player->RemoveDisplayWindow(*m_displayWindow); |
125 addDisplayWindow(rect); |
120 |
|
121 RWindow *window = static_cast<RWindow *>(m_window); |
|
122 if (window) { |
|
123 window->SetBackgroundColor(TRgb(0, 0, 0, 255)); |
|
124 TRAP(err, player->AddDisplayWindowL(m_wsSession, m_screenDevice, *window, rect, rect)); |
|
125 if (KErrNone != err) { |
|
126 setError(tr("Video display error"), err); |
|
127 window = 0; |
|
128 } |
|
129 } |
|
130 m_displayWindow = window; |
|
131 } |
126 } |
132 |
127 |
133 if (KErrNone == err) { |
128 if (KErrNone == err) { |
134 if (parameters & ScaleFactors) { |
129 if (parameters & ScaleFactors) { |
|
130 if (!m_displayWindow) |
|
131 addDisplayWindow(rect); |
135 Q_ASSERT(m_displayWindow); |
132 Q_ASSERT(m_displayWindow); |
136 TRAP(err, player->SetVideoExtentL(*m_displayWindow, rect)); |
133 TRAP(err, player->SetVideoExtentL(*m_displayWindow, rect)); |
137 if (KErrNone == err) |
134 if (KErrNone == err) |
138 TRAP(err, player->SetWindowClipRectL(*m_displayWindow, rect)); |
135 TRAP(err, player->SetWindowClipRectL(*m_displayWindow, rect)); |
139 if (KErrNone == err) |
136 if (KErrNone == err) |
141 if (KErrNone != err) |
138 if (KErrNone != err) |
142 setError(tr("Video display error"), err); |
139 setError(tr("Video display error"), err); |
143 } |
140 } |
144 } |
141 } |
145 } |
142 } |
|
143 |
|
144 TRACE_EXIT_0(); |
|
145 } |
|
146 |
|
147 void MMF::SurfaceVideoPlayer::addDisplayWindow(const TRect &rect) |
|
148 { |
|
149 TRACE_CONTEXT(SurfaceVideoPlayer::addDisplayWindow, EVideoApi); |
|
150 TRACE_ENTRY("rect %d %d - %d %d", rect.iTl.iX, rect.iTl.iY, rect.iBr.iX, rect.iBr.iY); |
|
151 |
|
152 Q_ASSERT(!m_displayWindow); |
|
153 RWindow *window = static_cast<RWindow *>(m_window); |
|
154 |
|
155 TRACE("window 0x%08x", window); |
|
156 |
|
157 if (window) { |
|
158 window->SetBackgroundColor(TRgb(0, 0, 0, 255)); |
|
159 CVideoPlayerUtility2 *player = static_cast<CVideoPlayerUtility2 *>(m_player.data()); |
|
160 Q_ASSERT(player); |
|
161 TRAPD(err, player->AddDisplayWindowL(m_wsSession, m_screenDevice, *window, rect, rect)); |
|
162 if (KErrNone == err) |
|
163 m_displayWindow = window; |
|
164 else |
|
165 setError(tr("Video display error"), err); |
|
166 TRACE("err %d", err); |
|
167 } |
|
168 |
|
169 TRACE_EXIT_0(); |
|
170 } |
|
171 |
|
172 void MMF::SurfaceVideoPlayer::removeDisplayWindow() |
|
173 { |
|
174 TRACE_CONTEXT(SurfaceVideoPlayer::removeDisplayWindow, EVideoApi); |
|
175 TRACE("player 0x%08x window 0x%08x", m_player.data(), m_displayWindow); |
|
176 |
|
177 CVideoPlayerUtility2 *player = static_cast<CVideoPlayerUtility2 *>(m_player.data()); |
|
178 if (player && m_displayWindow) { |
|
179 player->RemoveDisplayWindow(*m_displayWindow); |
|
180 m_displayWindow = 0; |
|
181 } |
146 } |
182 } |
147 |
183 |
148 QT_END_NAMESPACE |
184 QT_END_NAMESPACE |
149 |
185 |