[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-video-dev
Subject: [Video-dev] CR: Graphics surface support for Helix
From: <Praveen.Thimmashetty () nokia ! com>
Date: 2009-01-23 16:08:52
Message-ID: E2BCA93C601173448A14BD179A27A7FD07D9A17944 () NOK-EUMSG-03 ! mgdnok ! nokia ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
"Nokia submits this code under the terms of a commercial contribution agreement with \
RealNetworks, and I am authorized to contribute this code under said agreement."
Modified by: praveen.thimmashetty@nokia.com
Reviewed by:
SUB ID:
Date: 01/22/2008
Project: SymbianMmf_rel
Synopsis: Graphics surface support for Helix
Overview:
Changes in helix code(video) to support New Graphics Composition Engine. Please refer \
attached design doc for more details. All code changes are done under feature flag \
HELIX_FEATURE_GRAPHIC_SURFACES which is defined under helix-client-s60--common.pfi. \
And for backward compatibility with other branches S60_HX_GRAPHICS_SURFACE has been \
defined in helix_features.h file in epoc\include\domain\middleware.
Files modified & changes:
video\sitelib\pub\platform\symbian\minisymbiansite.h
video\sitelib\platform\symbian\minisymbiansite.cpp
Image Size and Heap Use impact: None
Module Release testing (STIF) : Passed
Test case(s) Added : None
Memory leak check performed : Passed, No leaks found
Platforms and Profiles Build Verified: helix-client-s60-50-mmf-mdf-arm
Platforms and Profiles Functionality verified: armv5
Branch: Head, 210CayS
===========================
DIFF enclosed as text files
===========================
[Attachment #5 (text/html)]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 \
2px solid; } --></style> </head>
<body>
<font face="Tahoma, sans-serif" size="3">
<div style="padding-left: 72pt; text-indent: -72pt; "> </div>
<div style="padding-left: 72pt; text-indent: -72pt; "> </div>
<div><font face="Arial, sans-serif" size="2">"Nokia submits this code under the \
terms of a commercial contribution agreement with RealNetworks, and I am authorized \
to contribute this code under said agreement."</font></div> <div><font \
face="Arial, sans-serif" size="2"> </font></div> <div><font face="Arial, \
sans-serif" size="2"> </font></div> <div><font face="Arial, sans-serif" \
size="2">Modified by: praveen.thimmashetty@nokia.com</font></div> <div><font \
face="Arial, sans-serif" size="2"> </font></div> <div><font face="Arial, \
sans-serif" size="2">Reviewed by: </font></div> <div><font face="Arial, sans-serif" \
size="2"> </font></div> <div><font face="Arial, sans-serif" size="2">SUB ID: \
</font></div> <div><font face="Arial, sans-serif" size="2"> </font></div>
<div><font face="Arial, sans-serif" size="2">Date: 01/22/2008</font></div>
<div><font face="Arial, sans-serif" size="2"> </font></div>
<div><font face="Arial, sans-serif" size="2">Project: SymbianMmf_rel</font></div>
<div><font face="Arial, sans-serif" size="2"> </font></div>
<div><font face="Arial, sans-serif" size="2">Synopsis: Graphics surface support for \
Helix</font></div> <div><font face="Arial, sans-serif" size="2"> </font></div>
<div><font face="Arial, sans-serif" size="2">Overview:</font></div>
<div><font face="Arial, sans-serif" size="2">Changes in helix code(video) to support \
New Graphics Composition Engine. Please refer attached design doc for more \
details.</font></div> <div><font face="Arial, sans-serif" size="2">All code changes \
are done under feature flag HELIX_FEATURE_GRAPHIC_SURFACES which is defined \
under</font></div> <div><font face="Arial, sans-serif" \
size="2">helix-client-s60--common.pfi. And for backward compatibility with other \
branches S60_HX_GRAPHICS_SURFACE </font></div> <div><font face="Arial, sans-serif" \
size="2">has been defined in helix_features.h file in \
epoc\include\domain\middleware.</font></div> <div><font face="Arial, sans-serif" \
size="2"> </font></div> <div><font face="Arial, sans-serif" \
size="2"> </font></div> <div><font face="Arial, sans-serif" size="2">Files \
modified & changes:</font></div> <div><font face="Arial, sans-serif" \
size="2">video\sitelib\pub\platform\symbian\minisymbiansite.h</font></div> <div><font \
face="Arial, sans-serif" \
size="2">video\sitelib\platform\symbian\minisymbiansite.cpp</font></div> <div><font \
face="Arial, sans-serif" size="2"> </font></div> <div><font face="Arial, \
sans-serif" size="2">Image Size and Heap Use impact: None</font></div> <div><font \
face="Arial, sans-serif" size="2"> </font></div> <div><font face="Arial, \
sans-serif" size="2">Module Release testing (STIF) : Passed</font></div> <div><font \
face="Arial, sans-serif" size="2"> </font></div> <div><font face="Arial, \
sans-serif" size="2">Test case(s) Added : None </font></div> <div><font \
face="Arial, sans-serif" size="2"> </font></div> <div><font face="Arial, \
sans-serif" size="2">Memory leak check performed : Passed, No leaks \
found</font></div> <div><font face="Arial, sans-serif" size="2"> </font></div>
<div><font face="Arial, sans-serif" size="2">Platforms and Profiles Build Verified: \
helix-client-s60-50-mmf-mdf-arm</font></div> <div><font face="Arial, sans-serif" \
size="2"> </font></div> <div><font face="Arial, sans-serif" size="2">Platforms \
and Profiles Functionality verified: armv5</font></div> <div><font face="Arial, \
sans-serif" size="2"> </font></div> <div><font face="Arial, sans-serif" \
size="2">Branch: Head, 210CayS</font></div> <div><font face="Arial, sans-serif" \
size="2"> </font></div> <div><font face="Arial, sans-serif" \
size="2">===========================</font></div> <div><font face="Arial, sans-serif" \
size="2">DIFF enclosed as text files</font></div> <div><font face="Arial, sans-serif" \
size="2">===========================</font></div> <div><font face="Arial, sans-serif" \
size="2"> </font></div> <div><font face="Arial, sans-serif" \
size="2"> </font></div> </font>
</body>
</html>
["diff.txt" (text/plain)]
Index: sitelib/platform/symbian/minisymbiansite.cpp
===================================================================
RCS file: /cvsroot/video/sitelib/platform/symbian/minisymbiansite.cpp,v
retrieving revision 1.24.2.6
diff -w -u -b -r1.24.2.6 minisymbiansite.cpp
--- sitelib/platform/symbian/minisymbiansite.cpp 15 Aug 2007 21:56:30 -0000 1.24.2.6
+++ sitelib/platform/symbian/minisymbiansite.cpp 22 Jan 2009 21:35:24 -0000
@@ -74,6 +74,9 @@
INTERFACE_LIST_ENTRY(IID_IHXSurfaceControl, IHXSurfaceControl)
INTERFACE_LIST_ENTRY(IID_IHXSiteRegister, IHXSiteRegister)
INTERFACE_LIST_ENTRY(IID_IHXDSAControl, IHXDSAControl)
+#if defined(HELIX_FEATURE_GRAPHIC_SURFACES)
+INTERFACE_LIST_ENTRY(IID_IHXGraphicsSurface, IHXGraphicsSurface)
+#endif //HELIX_FEATURE_GRAPHIC_SURFACES
INTERFACE_LIST_ENTRY_DELEGATE_BLIND(CMiniBaseSite::QueryInterface)
END_INTERFACE_LIST
@@ -86,6 +89,9 @@
#if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
,m_pSurfaceControlSite(NULL)
,m_pDSAControl(NULL)
+#if defined (HELIX_FEATURE_GRAPHIC_SURFACES)
+ ,m_pGraphicsSurface(NULL)
+#endif //HELIX_FEATURE_GRAPHIC_SURFACES
,m_bWindowRectValid(FALSE)
,m_eRotation(Rotate0)
,m_bBlitting(TRUE)
@@ -271,6 +277,77 @@
}
#if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
+#if defined(HELIX_FEATURE_GRAPHIC_SURFACES)
+STDMETHODIMP
+CHXSymbianSite::UseSurfaces()
+{
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::UseSurfaces()++");
+ HX_RESULT retVal = HXR_FAIL;
+ if(m_pGraphicsSurface != NULL)
+ {
+ m_pGraphicsSurface->UseSurfaces();
+ retVal = HXR_OK;
+ }
+
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::UseSurfaces()-- retVal = %d", retVal);
+ return retVal;
+}
+
+STDMETHODIMP
+CHXSymbianSite::AddDisplay(INT32 lValue)
+{
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::AddDisplay()++");
+ HX_RESULT retVal = HXR_FAIL;
+ if(m_pGraphicsSurface != NULL)
+ {
+ m_pGraphicsSurface->AddDisplay(lValue);
+ retVal = HXR_OK;
+ }
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::AddDisplay()-- retVal = %d", retVal);
+ return retVal;
+}
+
+STDMETHODIMP
+CHXSymbianSite::GetSurfaceParameters(INT32 lValue, HXSurfaceId& sVideosurfaceId, \
HXxRect& sCroprect, HXVideoAspectRatio& sPixelAspectRatio) +{
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::GetSurfaceParameters()++");
+ HX_RESULT retVal = HXR_FAIL;
+ if(m_pGraphicsSurface != NULL)
+ {
+ m_pGraphicsSurface->GetSurfaceParameters(lValue, sVideosurfaceId, sCroprect, \
sPixelAspectRatio); + retVal = HXR_OK;
+ }
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::GetSurfaceParameters()-- retVal = %d", \
retVal); + return retVal;
+}
+
+STDMETHODIMP
+CHXSymbianSite::UpdateDisplay(INT32 lValue)
+{
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::UpdateDisplay()++");
+ HX_RESULT retVal = HXR_FAIL;
+ if(m_pGraphicsSurface != NULL)
+ {
+ m_pGraphicsSurface->UpdateDisplay(lValue);
+ retVal = HXR_OK;
+ }
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::UpdateDisplay()-- retVal = %d", retVal);
+ return retVal;
+}
+
+STDMETHODIMP
+CHXSymbianSite::RemoveDisplay(INT32 lValue)
+{
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::RemoveDisplay()++");
+ HX_RESULT retVal = HXR_FAIL;
+ if(m_pGraphicsSurface != NULL)
+ {
+ m_pGraphicsSurface->RemoveDisplay(lValue);
+ retVal = HXR_OK;
+ }
+ HXLOGL2( HXLOG_SITE, "CHXSymbianSite::RemoveDisplay()-- retVal = %d", retVal);
+}
+#endif //HELIX_FEATURE_GRAPHIC_SURFACES
STDMETHODIMP
CHXSymbianSite::SetRotation(UINT32 ulValue)
@@ -439,7 +516,14 @@
{
return HXR_FAIL;
}
-
+#if defined(HELIX_FEATURE_GRAPHIC_SURFACES)
+ pMdfVideoAdapter->QueryInterface(IID_IHXGraphicsSurface, (void**) \
&m_pGraphicsSurface); + if(!m_pGraphicsSurface)
+ {
+ HXLOGL1( HXLOG_SITE, "CHXSymbianSite::RegisterAdapter() for NGA FAIL --");
+ return HXR_FAIL;
+ }
+#endif //HELIX_FEATURE_GRAPHIC_SURFACES
//Get control of DSA interface
m_pSurfaceControlSite->QueryInterface(IID_IHXDSAControl, (void**) \
&m_pDSAControl); if(!m_pDSAControl)
@@ -450,7 +534,8 @@
HXxRect tmpWinRect;
HXxRect tmpClipRect;
-
+ if(m_pWindow)
+ {
HXxRect_SetWithSize(tmpWinRect,
m_pWindow->x,
m_pWindow->y,
@@ -462,6 +547,7 @@
m_pWindow->clipRect.top,
m_pWindow->clipRect.right,
m_pWindow->clipRect.bottom);
+ }
SetWindowParameters(tmpWinRect, tmpClipRect);
}
@@ -473,6 +559,9 @@
//Release control of DSA interface & Surface Control
HX_RELEASE( m_pDSAControl );
HX_RELEASE( m_pSurfaceControlSite );
+#if defined(HELIX_FEATURE_GRAPHIC_SURFACES)
+ HX_RELEASE( m_pGraphicsSurface );
+#endif //HELIX_FEATURE_GRAPHIC_SURFACES
}
Index: sitelib/pub/platform/symbian/minisymbiansite.h
===================================================================
RCS file: /cvsroot/video/sitelib/pub/platform/symbian/minisymbiansite.h,v
retrieving revision 1.11.8.4
diff -w -u -b -r1.11.8.4 minisymbiansite.h
--- sitelib/pub/platform/symbian/minisymbiansite.h 15 Aug 2007 21:56:10 \
-0000 1.11.8.4
+++ sitelib/pub/platform/symbian/minisymbiansite.h 22 Jan 2009 21:35:24 -0000
@@ -56,6 +56,9 @@
#if defined(HELIX_FEATURE_MMF_SITE_CONTROL)
#include "hxsite3.h"
+#if defined(HELIX_FEATURE_GRAPHIC_SURFACES)
+#include "hxvideographicsurface.h"
+#endif //HELIX_FEATURE_GRAPHIC_SURFACES
#endif
class CHXSymbianSite : public CMiniBaseSite
@@ -64,7 +67,9 @@
,public CUnknownIMP
,public IHXSiteRegister
,public IHXDSAControl
-
+#if defined(HELIX_FEATURE_GRAPHIC_SURFACES)
+,public IHXGraphicsSurface
+#endif //HELIX_FEATURE_GRAPHIC_SURFACES
#endif
{
public:
@@ -110,7 +115,14 @@
STDMETHOD(DirectScreenAccessEvent) (THIS_ HXBOOL bValue);
STDMETHOD(UpdateDisplayRegion) (THIS_ HXxRegion Region);
STDMETHOD(RefreshWindow) (THIS_);
-
+#if defined(HELIX_FEATURE_GRAPHIC_SURFACES)
+ //IHXGraphicsSurface methods
+ STDMETHOD(UseSurfaces) (THIS_ );
+ STDMETHOD(AddDisplay) (THIS_ INT32 lValue);
+ STDMETHOD(GetSurfaceParameters) (THIS_ INT32 lValue,HXSurfaceId& \
sVideosurfaceId, HXxRect& sCroprect, HXVideoAspectRatio& sPixelAspectRatio); + \
STDMETHOD(UpdateDisplay) (THIS_ INT32 lValue); + STDMETHOD(RemoveDisplay) (THIS_ \
INT32 lValue); +#endif //HELIX_FEATURE_GRAPHIC_SURFACES
#ifdef SYMBIAN_ENABLE_MMF_MULTISCREEN_SUPPORT
STDMETHOD(SetInitScreenNumber) (THIS_ INT32 lScreenNumber);
#endif //SYMBIAN_ENABLE_MMF_MULTISCREEN_SUPPORT
@@ -123,6 +135,9 @@
HXBOOL m_bBlitting;
IHXSurfaceControl* m_pSurfaceControlSite;
IHXDSAControl* m_pDSAControl;
+#if defined(HELIX_FEATURE_GRAPHIC_SURFACES)
+ IHXGraphicsSurface* m_pGraphicsSurface;
+#endif //HELIX_FEATURE_GRAPHIC_SURFACES
HXBOOL m_bWindowRectValid;
RotationType m_eRotation;
UINT32 m_uiContrast;
["Helix_NGA.dot" (application/msword)]
_______________________________________________
Video-dev mailing list
Video-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/video-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic