src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
changeset 22 79de32ba3296
parent 19 fcece45ef507
child 33 3e2da88830cd
equal deleted inserted replaced
19:fcece45ef507 22:79de32ba3296
   188     void SetActive() { CActive::SetActive(); }
   188     void SetActive() { CActive::SetActive(); }
   189 };
   189 };
   190 
   190 
   191 void getDsaRegion(RWsSession &session, const RWindowBase &window)
   191 void getDsaRegion(RWsSession &session, const RWindowBase &window)
   192 {
   192 {
       
   193     // Dump complete window tree
       
   194     session.LogCommand(RWsSession::ELoggingStatusDump);
       
   195 
   193     RDirectScreenAccess dsa(session);
   196     RDirectScreenAccess dsa(session);
   194     TInt err = dsa.Construct();
   197     TInt err = dsa.Construct();
   195     CDummyAO ao;
   198     CDummyAO ao;
   196     RRegion* region;
   199     RRegion* region;
   197     err = dsa.Request(region, ao.Status(), window);
   200     err = dsa.Request(region, ao.Status(), window);
   212 #endif // QT_NO_DEBUG
   215 #endif // QT_NO_DEBUG
   213 
   216 
   214 void MMF::DsaVideoPlayer::handleParametersChanged(VideoParameters parameters)
   217 void MMF::DsaVideoPlayer::handleParametersChanged(VideoParameters parameters)
   215 {
   218 {
   216     TRACE_CONTEXT(DsaVideoPlayer::handleParametersChanged, EVideoInternal);
   219     TRACE_CONTEXT(DsaVideoPlayer::handleParametersChanged, EVideoInternal);
   217     TRACE_ENTRY_0();
   220     TRACE_ENTRY("parameters 0x%x", parameters.operator int());
   218 
   221 
   219     if (!m_window)
   222     if (!m_window)
   220         return;
   223         return;
   221 
   224 
   222 #ifndef QT_NO_DEBUG
   225 #ifndef QT_NO_DEBUG
   223     getDsaRegion(m_wsSession, *m_window);
   226     getDsaRegion(m_wsSession, *m_window);
   224 #endif
   227 #endif
   225 
   228 
   226     static const TBool antialias = ETrue;
   229     if (m_player) {
   227     int err = KErrNone;
   230         static const TBool antialias = ETrue;
   228 
   231         int err = KErrNone;
   229     if (parameters & ScaleFactors) {
   232 
   230         TRAP(err, m_player->SetScaleFactorL(m_scaleWidth, m_scaleHeight,
   233         if (parameters & ScaleFactors) {
   231                                             antialias));
   234             TRAP(err, m_player->SetScaleFactorL(m_scaleWidth, m_scaleHeight,
   232         if(KErrNone != err) {
   235                                                 antialias));
   233             TRACE("SetScaleFactorL (1) err %d", err);
   236             if(KErrNone != err) {
   234             setError(tr("Video display error"), err);
   237                 TRACE("SetScaleFactorL (1) err %d", err);
       
   238                 setError(tr("Video display error"), err);
       
   239             }
   235         }
   240         }
   236     }
   241 
   237 
   242         if (KErrNone == err) {
   238     if (KErrNone == err) {
   243             if (parameters & WindowHandle || parameters & WindowScreenRect) {
   239         if (parameters & WindowHandle || parameters & WindowScreenRect) {
   244                 TRAP(err,
   240             TRAP(err,
   245                     m_player->SetDisplayWindowL(m_wsSession, m_screenDevice,
   241                 m_player->SetDisplayWindowL(m_wsSession, m_screenDevice,
   246                                                 *m_window,
   242                                             *m_window,
   247                                                 m_videoScreenRect,
   243                                             m_videoScreenRect,
   248                                                 m_videoScreenRect));
   244                                             m_videoScreenRect));
   249             }
   245         }
   250 
   246 
   251             if (KErrNone != err) {
   247         if (KErrNone != err) {
   252                 TRACE("SetDisplayWindowL err %d", err);
   248             TRACE("SetDisplayWindowL err %d", err);
   253                 setError(tr("Video display error"), err);
   249             setError(tr("Video display error"), err);
   254             } else {
   250         } else {
   255                 m_dsaActive = true;
   251             m_dsaActive = true;
   256                 if (parameters & ScaleFactors) {
   252             if (parameters & ScaleFactors) {
   257                     TRAP(err, m_player->SetScaleFactorL(m_scaleWidth, m_scaleHeight,
   253                 TRAP(err, m_player->SetScaleFactorL(m_scaleWidth, m_scaleHeight,
   258                                                         antialias));
   254                                                     antialias));
   259                     if (KErrNone != err) {
   255                 if (KErrNone != err) {
   260                         TRACE("SetScaleFactorL (2) err %d", err);
   256                     TRACE("SetScaleFactorL (2) err %d", err);
   261                         setError(tr("Video display error"), err);
   257                     setError(tr("Video display error"), err);
   262                     }
   258                 }
   263                 }
   259             }
   264             }
   260         }
   265         }
   261     }
   266     }
   262 
   267 
   263     TRACE_EXIT_0();
   268     TRACE_EXIT_0();
   264 }
   269 }
   265 
   270 
   266 void MMF::DsaVideoPlayer::startDirectScreenAccess()
   271 void MMF::DsaVideoPlayer::startDirectScreenAccess()
   267 {
   272 {
       
   273     TRACE_CONTEXT(DsaVideoPlayer::startDirectScreenAccess, EVideoInternal);
       
   274     TRACE_ENTRY("dsaActive %d", m_dsaActive);
       
   275 
       
   276     int err = KErrNone;
       
   277 
   268     if (!m_dsaActive) {
   278     if (!m_dsaActive) {
   269         TRAPD(err, m_player->StartDirectScreenAccessL());
   279         TRAP(err, m_player->StartDirectScreenAccessL());
   270         if (KErrNone == err)
   280         if (KErrNone == err)
   271             m_dsaActive = true;
   281             m_dsaActive = true;
   272         else
   282         else
   273             setError(tr("Video display error"), err);
   283             setError(tr("Video display error"), err);
   274     }
   284     }
       
   285 
       
   286     if (m_videoOutput)
       
   287         m_videoOutput->dump();
       
   288 
       
   289     TRACE_EXIT("error %d", err);
   275 }
   290 }
   276 
   291 
   277 bool MMF::DsaVideoPlayer::stopDirectScreenAccess()
   292 bool MMF::DsaVideoPlayer::stopDirectScreenAccess()
   278 {
   293 {
       
   294     TRACE_CONTEXT(DsaVideoPlayer::stopDirectScreenAccess, EVideoInternal);
       
   295     TRACE_ENTRY("dsaActive %d", m_dsaActive);
       
   296 
       
   297     int err = KErrNone;
       
   298 
   279     const bool dsaWasActive = m_dsaActive;
   299     const bool dsaWasActive = m_dsaActive;
   280     if (m_dsaActive) {
   300     if (m_dsaActive) {
   281         TRAPD(err, m_player->StopDirectScreenAccessL());
   301         TRAP(err, m_player->StopDirectScreenAccessL());
   282         if (KErrNone == err)
   302         if (KErrNone == err)
   283             m_dsaActive = false;
   303             m_dsaActive = false;
   284         else
   304         else
   285             setError(tr("Video display error"), err);
   305             setError(tr("Video display error"), err);
   286     }
   306     }
       
   307 
       
   308     TRACE_EXIT("error %d", err);
       
   309 
   287     return dsaWasActive;
   310     return dsaWasActive;
   288 }
   311 }
   289 
   312 
   290 QT_END_NAMESPACE
   313 QT_END_NAMESPACE
   291 
   314