[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-video-cvs
Subject:    [Video-cvs] sitelib/platform/unix miniandroidsite.cpp, 1.1.2.1,
From:       xzhao () helixcommunity ! org
Date:       2010-07-09 3:18:24
Message-ID: 201007090318.o693IWui025352 () mailer ! progressive-comp ! com
[Download RAW message or body]

Update of /cvsroot/video/sitelib/platform/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv21999/sitelib/platform/unix


Modified Files:
      Tag: hxclient_3_1_0_atlas
	miniandroidsite.cpp miniandroidsurf_omap3.cpp 
Log Message:
CR: Render Optimization for TI Omap3 platform

Index: miniandroidsite.cpp
===================================================================
RCS file: /cvsroot/video/sitelib/platform/unix/miniandroidsite.cpp,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- miniandroidsite.cpp	6 Feb 2009 20:51:44 -0000	1.1.2.1
+++ miniandroidsite.cpp	9 Jul 2010 03:18:21 -0000	1.1.2.2
@@ -107,3 +107,49 @@
     return TRUE;
 }
 
+#ifdef HELIX_FEATURE_USE_SITEBUFFERS
+INT32 CHXAndroidSite::GetNumberOfCustomBuffers(UINT32 ulSize)
+{
+    LOGD("Enter CHXAndroidSite::GetNumberOfCustomBuffers");
+    int ret = 0;
+    if (m_pVideoSurface) 
+    {
+        ret = m_pVideoSurface->GetNumOfBuffer(ulSize);
+    }
+    return ret;
+}
+
+HX_RESULT CHXAndroidSite::CreateCustomBuffers(INT32 nNumBuffers, INT32 nWidth, INT32 \
nHeight, INT32 nColorID) +{
+    LOGD("Enter CHXAndroidSite::CreateCustomBuffers");
+    HX_RESULT res = HXR_OK;
+    if (m_pVideoSurface) 
+    {
+        m_pVideoSurface->m_nSrcCID = nColorID;
+        res = m_pVideoSurface->AllocateDestBuffers((int)nWidth, (int)nHeight, \
(int)nNumBuffers); +    }
+    return res;
+}
+
+HX_RESULT CHXAndroidSite::GetCustomBuffers(BYTE** ppBuffers)
+{
+    LOGD("Enter CHXAndroidSite::GetCustomBuffers");
+    if (m_pVideoSurface && ppBuffers)
+    {
+        m_pVideoSurface->GetBuffer(ppBuffers);
+    }
+    return HXR_OK;
+}
+
+HX_RESULT CHXAndroidSite::ReleaseCustomBuffers()
+{
+    LOGD("Enter CHXAndroidSite::ReleaseCustomBuffers");
+    HX_RESULT res = HXR_OK;
+    if (m_pVideoSurface)
+    {
+        res = m_pVideoSurface->DestroyDestBuffers(0);
+    }
+    return res;
+}
+#endif
+

Index: miniandroidsurf_omap3.cpp
===================================================================
RCS file: /cvsroot/video/sitelib/platform/unix/miniandroidsurf_omap3.cpp,v
retrieving revision 1.1.4.2
retrieving revision 1.1.4.3
diff -u -d -r1.1.4.2 -r1.1.4.3
--- miniandroidsurf_omap3.cpp	2 Mar 2010 20:24:48 -0000	1.1.4.2
+++ miniandroidsurf_omap3.cpp	9 Jul 2010 03:18:21 -0000	1.1.4.3
@@ -221,12 +221,14 @@
 CMiniAndroidSurface::_CreateDestBuffer(int cidIn, int nWidth, int nHeight, int& \
nCount)  {
     HX_RESULT retVal = HXR_OK;
+#ifdef HELIX_FEATURE_USE_SITEBUFFERS
+    GetDstCID(cidIn);
+#endif
 
     // fix site size
     HXxSize size;
     size.cx = nWidth; size.cy = nHeight;
     m_pSite->SetSize(size);
-    m_pSite->GetSize(size);
 
     // get the bitmap information
     HXBitmapInfo bmiTemp;
@@ -282,7 +284,8 @@
                 mapping_data_t* pUserdata = NULL;
 
                 m_nMAXBuffers = m_spOverlay->getBufferCount();
-                m_nMAXBuffers = m_nMAXBuffers > MAX_OVERLAY_BUFFERS ? \
MAX_OVERLAY_BUFFERS : m_nMAXBuffers; +                m_nMAXBuffers = m_nMAXBuffers > \
nCount ? nCount : m_nMAXBuffers; +                LOGD("m_nMAXBuffers %d", \
m_nMAXBuffers);  for (int i=0; i<m_nMAXBuffers; i++)
                 {
                     pUserdata = (mapping_data_t \
*)m_spOverlay->getBufferAddress((void*)i); @@ -398,7 +401,17 @@
         memcpy(pDstBuffer, pSrcBuffer, m_ulFrameSize);
         break;
     case TRANS_OMX_BUFFER :
+#ifdef HELIX_FEATURE_USE_SITEBUFFERS
+        for (int i = 0; i < m_nMAXBuffers; i++)
+        {
+            if (m_buffer_address[i] == pSrcBuffer) 
+            {
+                m_nBufferIndex = i;
+            }
+        }
+#else
         retVal = CMiniBaseSurface::_TransferToDestBuffer(pSrcBuffer, pBitmapInfo, \
prSrcRect, prDstRect, pDstBuffer, nDstPitch); +#endif
         break;
     case TRANS_YUV420P_TO_YCbCr422I :
         I420_to_YCbCr422I(pSrcBuffer, pDstBuffer, pBitmapInfo->biWidth, \
pBitmapInfo->biHeight, m_nStride); @@ -419,7 +432,7 @@
 HX_RESULT
 CMiniAndroidSurface::_RenderDestBuffer(HXxRect* prSrcRect, HXxRect* prDestRect, int \
nIndex)  {
-    HX_RESULT retVal = HXR_FAIL;
+    HX_RESULT retVal = HXR_OK;
 
     if (m_bUseTIOverlay && m_spOverlay != NULL)
     {
@@ -432,6 +445,7 @@
         else
         {
             LOGE("overlay queue buffer(%d) failed, m_nInQueue=%d", m_nBufferIndex, \
m_nInQueue); +            retVal = HXR_FAIL;
         }
         
         // dequeue
@@ -445,6 +459,7 @@
             else
             {
                 LOGE("overlay dequeue buffer failed");
+                retVal = HXR_FAIL;
             }
         }
 
@@ -458,7 +473,6 @@
         // post surface buffer
         m_pISurface->postBuffer(m_nBufferIndex * m_ulFrameSize);
         m_nBufferIndex = (m_nBufferIndex + 1) % m_nMAXBuffers;
-        retVal = HXR_OK;
     }
 
     return retVal;
@@ -553,6 +567,11 @@
             m_eTransferMode = TRANS_YUV420P_TO_YCbCr422I;
 #endif
             break;
+        case CID_UYVY:
+            m_nOverlayFmt = OVERLAY_FORMAT_YCbYCr_422_I;
+            m_cidOut = CID_UYVY;
+            m_eTransferMode = TRANS_OMX_BUFFER;
+            break;
         case CID_I420:
             m_nOverlayFmt = OVERLAY_FORMAT_YCbYCr_422_I;
             m_cidOut = CID_UYVY;
@@ -588,3 +607,11 @@
     LOGD("ISurface = %p", m_pISurface);
     return HXR_OK;
 }
+
+void CMiniAndroidSurface::GetBuffer(THIS_ void** pBuff) 
+{
+    memcpy(pBuff, m_buffer_address, sizeof(m_buffer_address));
+    m_nInQueue = 0;
+    m_nBufferIndex = 0;
+}
+


_______________________________________________
Video-cvs mailing list
Video-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/video-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic