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

List:       helix-datatype-dev
Subject:    [datatype-dev] RE: [Android-port-dev] RESEND: mkv embeded subtitle
From:       Joe Li <Joeli () real ! com>
Date:       2011-07-25 3:31:32
Message-ID: FACFAC06BB4349408E9FD5D9CAAE6F92086B4C71E6 () SEAMBX ! corp ! real ! com
[Download RAW message or body]

This is a MIME-formatted message.  If you see this text it means that your
E-mail software does not support MIME-formatted messages.


According to your comments;
1. Changed the directory of subtitle renderer as: datatype/text/subtitle/renderer
2. used HXBuffer * replace void*
Thanks Jamie
Joe

-----Original Message-----
From: Joe Li 
Sent: Thursday, July 14, 2011 5:57 PM
To: Jamie Gordon
Cc: android-port-dev@helixcommunity.org; datatype-dev
Subject: RE: [Android-port-dev] RESEND: mkv embeded subtitle playback for LeTV \
feature

Hi, Jamie
Thanks for your reviewing.
1. Changed the directory of subtitle renderer as: datatype/text/subtitle/renderer

2. this is a invalid change by mistake
> -#define MIN_VIDEO_TURBO_PUSHDOWN 90				   // ms
> +#define MIN_VIDEO_TURBO_PUSHDOWN 50				   // ms

3. used void* instead of HXBuffer*
because the fileformat will send a lot of packets to the renderer at the same time, \
these packet will used for future display. So we used map to store these rawdata \
(extracted from the HXBuffer), and meanwhile this can be useful for seeking, backward \
etc. Thanks
Joe


-----Original Message-----
From: Jamie Gordon 
Sent: Wednesday, July 13, 2011 9:34 AM
To: Joe Li
Cc: android-port-dev@helixcommunity.org; datatype-dev
Subject: Re: [Android-port-dev] RESEND: mkv embeded subtitle playback for LeTV \
feature

Looks good!

> +    <module id="datatype_insubtitle_renderer" \
> name="datatype/text/internal/renderer" group="renderer">

Still should be under subtitle though, shouldn't it?
datatype/text/subtitle/internal/renderer

Otherwise, datatype/text contains three directories,
"realtext", "subtitle" and "internal" :)

> Index: core/hxsrc.cpp

> -#define MIN_VIDEO_TURBO_PUSHDOWN 90				   // ms
> +#define MIN_VIDEO_TURBO_PUSHDOWN 50				   // ms

Did you mean to include this change?

Please note: don't delay initial check in based on the following
comments, we can always discuss, change, etc. as needed!

 >> 3. still used void* instead of HXBuffer*, because if we play the
video backward it's more efficient with the saved subtitles. Another
reason is: we always buffered much packets, so we can fetched the
exactly packet to display without such a map.

I don't understand why using an IHXBuffer would make it harder to
buffer packets. If anything it should make it easier, shouldn't it?

instead of this:

         if(pBuffer)
	{
	    //added the subtitle into the map
	    SubtitleContentMapIter tmpIter = m_SubtitleContentMap.find(startTime);
	    if(m_SubtitleContentMap.end() == tmpIter)
	    {
		int tmpSize = pBuffer->GetSize();
		SubtitleContent *tmpContent = new SubtitleContent;
		memset(tmpContent,0,sizeof(SubtitleContent));
		tmpContent->startTime = startTime;
		tmpContent->duration = 0;
		if(tmpSize > 0)
		{
		    tmpContent->content = (UINT8 *)malloc(tmpSize);
		    memset(tmpContent->content,0,tmpSize);
		    memcpy(tmpContent->content,pBuffer->GetBuffer(),tmpSize);
		}
		else
		    tmpContent->content = NULL;
		if(m_SubtitleContentMap.size() == 0)
		    m_ulFirstSubtitleTime = startTime;
		m_SubtitleContentMap[startTime] = tmpContent;
	    }
	}


It would be this:

         if(pBuffer)
	{
	    //added the subtitle into the map
	    SubtitleContentMapIter tmpIter = m_SubtitleContentMap.find(startTime);
	    if(m_SubtitleContentMap.end() == tmpIter)
	    {
		tmpContent->startTime = startTime;
		tmpContent->duration = 0;
		if (pBuffer->GetSize() > 0)
		{
			pBuffer->AddRef();
			tmpContent->content = pBuffer;
		}
                 tmpContent->content = pBuffer;

		if(m_SubtitleContentMap.size() == 0)
		    m_ulFirstSubtitleTime = startTime;
		m_SubtitleContentMap[startTime] = tmpContent;
	    }
	}


Then if it is

DrawSubtitleHdr(int type, IHXBuffer* pData);

this doesn't change
m_pSite5->DrawSubtitleHdr(SHOW_TEXT_SUBTITLE,subContent->content);

The site implementation might change from

+		    len = strlen((char *)data);
+		    m_pSubtitleSurf->SetSubtitleText(data, len);	

to

     m_pSubtitleSurf->SetSubtitleText(data->GetBuffer(), data->GetSize());

Or else if SetSubtitleText is updated to take an IHXBuffer* (not sure
where that class is) then it would just be

m_pSubtitleSurf->SetSubtitleText(data);

On 6/26/2011 8:55 AM, Joe Li wrote:
> Thanks Jamie's advice.
> I have updated with the follow modification:
> 1. create a new interface IID_IHXSite5 for subtitle handler.
> 2. removed some multi-stream selection feature's codes
> 3. still used void* instead of HXBuffer*, because if we play the video backward \
> it's more efficient with the saved subtitles. Another reason is: we always buffered \
> much packets, so we can fetched the exactly packet to display without such a map. \
> 4. for the new renderer, used the "internal" stands for embedded-subtitle and \
> "external" reserved for "seperater subtitle files", we will unite all the subtitles \
> if customer insist on. 5. for the RenderingDisabled = 1, for we don't need to care \
> for the packet life cycle after fetched from OnPacket. 6. used a new macro to \
> control the embedded subtitle feature. 7. other modification according to your \
> comments like head file define, ABS, startTime etc. 
> Thanks again. Please help to double check it.
> Joe
> 
> -----Original Message-----
> From: Jamie Gordon
> Sent: Friday, June 24, 2011 9:44 AM
> To: Joe Li
> Cc: android-port-dev@helixcommunity.org; datatype-dev
> Subject: Re: [Android-port-dev] RESEND: mkv embeded subtitle playback for LeTV \
> feature 
> Looks pretty good!
> 
> 
> > +
> > +    STDMETHOD(SetSubtitleHdr)		(THIS) {return HXR_OK;}
> > +    STDMETHOD(RelSubtitleHdr)		(THIS) {return HXR_OK;}
> > +    STDMETHOD(DrawSubtitleHdr)		(THIS_
> > +    					int type,
> > +    					void *data) {return HXR_OK;}
> > +										
> 
> The interface cannot be modified, you need to create a new interface
> to expose these new methods. Also interfaces should be pure virtual,
> not have default implementations. The data should really be an
> IHXBuffer instead of void*, for safety and so the site can hold on to
> it after it returns from DrawSubtitleHdr if it needs it, rather than
> having to copy it.
> 
> 
> mkv:
> > +			    char *pTrkNmae = (trk->pTrackName)?trk->pTrackName:"eng";
> > +			    char *pTrkLang = (trk->pTrackLanguage)?trk->pTrackLanguage:"eng";
> 
> Default should probably be "und" (undefined) rather than "eng".
> 
> New renderer:
> Should probably be under the subtitle subdirectory rather than the
> 'text' root. Something like datatype/text/subtitle/renderer
> 
> What is the "internal" indicating by the way? Is that something about
> using sitelib rather than signaling the app-level or something?
> 
> insubtitlerend.h:
> 
> > #ifndef _EXRENDER_H_
> > #define _EXRENDER_H_
> Was this meant to be _IN... rather than _EX...?
> 
> insubtitle.cpp:
> 
> > #define ABS(x,y) ((x)>(y) ? (x-y):(y-x))
> 
> That is probably not a good name and likely to break on some platforms
> that define ABS as abs(x). Maybe some thing like ABS_DIFF to more
> accurately describe its purpose and avoid name collision?
> 
> > int InSubtitleRenderer::GetSubtitleType(const char* pMimeType)
> > {
> > 	if(pMimeType == NULL)
> > 		return HXR_FAIL;
> > 	if(!strcmp(pMimeType, MIMETYPE_SUBTILE_SRT))
> 
> ....
> > 		m_SubTitleType = TYPE_SUBTITLE_SMI;
> > 	}
> > 	return HXR_OK;
> > }
> 
> 
> 
> Should be declared as HX_RESULT rather than int, right? Also this
> should return a failure instead of HXR_OK in case the mime type did
> not match any of the supported types, and the caller should probably
> check that return and pass the error along.
> 
> > pHeader->SetPropertyULONG32("RenderingDisabled", 1);
> 
> Is that right? What does that disable?
> 
> > tmpContent->content = (UINT8 *)malloc(tmpSize);
> > 		    memset(tmpContent->content,0,tmpSize);
> > 		    memcpy(tmpContent->content,pBuffer->GetBuffer(),tmpSize);
> 
> Why alloc and copy rather than simply keeping a reference to pBuffer?
> 
> > if(it->first == ulTime)
> > {
> > 	    subContent = it->second;
> > }
> 
> I think you need to set startTime = ulTime in this case, or else
> initialize it to ulTime instead of 0.
> 
> > 	if(startTime != m_ulCurrentTime)
> > 	{
> ...
> > 	}
> > 	else
> > 	{
> > 	    //subtitle is under displaying...
> > 	}
> 
> I don't understand this, why would it not want to display the subtitle
> in case the current time is exactly the title's start time??
> 
> If you do not need to link the static library build from outside the
> dll build, there is no need to split it into two makefiles, just one
> Umakefil to build the DLL is all it needs.
> 
> Don't bother with the .pcf files for platforms you haven't built and
> found things that are needed. That unix.pcf is surely not right at all,
> that looks like a copy of a copy of an ancient unix.pcf. :)
> 
> Thanks,
> Jamie
> 
> On 6/23/2011 4:09 AM, Joe Li wrote:
> > Patches updated.
> > Please help to review.
> > Thanks
> > Joe
> > 
> > -----Original Message-----
> > From: Joe Li
> > Sent: Wednesday, June 22, 2011 9:45 PM
> > To: android-port-dev@helixcommunity.org
> > Subject: CR: mkv embeded subtitle playback for LeTV feature
> > 
> > Modified by: joeli@real.com
> > Date: 06/22/2011
> > Project: RealPlayer for Android Smartphone
> > 
> > Synopsis: mkv embeded subtitle playback for LeTV feature
> > 
> > Overview:
> > According to LeTV's sow, we need to support embeded subtitle playback for \
> > mkv/avi/mpeg2: here is subtitle support for mkv container. modification included:
> > 1.parse mkv subtitle track
> > 2.add a subtitle renderer for parsing embeded subtitle
> > 3.modified IHXSite2 interface for videosite interaction
> > 
> > 
> > 
> > Files Added:
> > datatype/text/internal/rendere/android.pcf
> > datatype/text/internal/rendere/insubtitlerend.cpp
> > datatype/text/internal/rendere/insubtitlerend.h
> > datatype/text/internal/rendere/insubtitlerend.ver
> > datatype/text/internal/rendere/insubtitlerenddll
> > datatype/text/internal/rendere/insubtitlerendlib
> > datatype/text/internal/rendere/Umakefil
> > datatype/text/internal/rendere/plugin.cpp
> > 
> > 
> > Files Modified:
> > datatype/mkv/fileformat/mkv_file_format.cpp
> > datatype/mkv/libmatroska/Matroska.cpp
> > datatype/mkv/libmatroska/mkvtypes.h
> > video/sitelib/platform/unix/miniandroidsite.cpp
> > video/sitelib/pub/platform/unix/miniandroidsite.h
> > 
> > 
> > Image Size and Heap Use impact (Client -Only):
> > None
> > 
> > Platforms and Profiles Affected:
> > Platform: hxclient_3_6_1_atlas
> > Profile: helix-client-android-full
> > 
> > Distribution Libraries Affected:
> > None
> > 
> > Distribution library impact and planned action:
> > None
> > 
> > Platforms and Profiles Build Verified:
> > Platform: hxclient_3_6_1_atlas
> > Profile: helix-client-android-full
> > 
> > Platforms and Profiles Functionality verified:
> > Platform: hxclient_3_6_1_atlas
> > Profile: helix-client-android-full
> > 
> > Copyright assignment: I am a RealNetworks employee or contractor
> > 
> > Thanks
> > Joe


["hxclient_3_6_1_atlas.bif.diff" (application/octet-stream)]

Index: hxclient_3_6_1_atlas.bif
===================================================================
RCS file: /cvsroot/client/build/BIF/hxclient_3_6_1_atlas.bif,v
retrieving revision 1.46
diff -u -w -r1.46 hxclient_3_6_1_atlas.bif
--- hxclient_3_6_1_atlas.bif	26 May 2011 02:43:54 -0000	1.46
+++ hxclient_3_6_1_atlas.bif	24 Jul 2011 08:14:04 -0000
@@ -4366,6 +4366,22 @@
                 
     </module>
 
+    <!-- DATATYPE/TEXT/RENDERER -->
+    <module id="datatype_insubtitle_renderer" name="datatype/text/renderer" group="renderer">
+        <cvs root="helix"/>
+        <attribute id="has_version_file"/>
+        
+        <source_dependlist>
+            common_include
+        </source_dependlist>
+                
+        <dependlist>
+            common_runtime
+            common_dbgtool
+            common_system
+        </dependlist>
+    </module>
+
     <!-- DATATYPE/AAC/FILEFORMAT  -->
     <module id="datatype_aac_fileformat" name="datatype/aac/fileformat" group="core">
         <cvs root="helix"/>
@@ -15310,6 +15326,14 @@
       </dependlist>
     </module>
 
+    <!-- Internal Subtitle renderer -->
+    <module id="insubtitlerend" name="datatype/text/renderer" group="core">
+      <attribute id="has_version_file"/>
+      <dependlist>
+        common_include
+        common_runtime
+      </dependlist>
+    </module>
 
 
     <!--Build Targets for SDK samples follow -->
@@ -16473,6 +16497,7 @@
         client_common_container
         client_core
         datatype_null_renderer
+        datatype_insubtitle_renderer
         client_simple_core
         client_medpltfm
         client_resource

["mkv.diff" (application/octet-stream)]

? fileformat/Makefile
? fileformat/Umakefil.upp
? fileformat/android-dbg
? fileformat/mkvffdll.mak
? fileformat/mkvffdll.upp
? libmatroska/Makefile
? libmatroska/Umakefil.upp
? libmatroska/android-dbg
Index: fileformat/mkv_file_format.cpp
===================================================================
RCS file: /cvsroot/datatype/mkv/fileformat/mkv_file_format.cpp,v
retrieving revision 1.11.2.9
diff -u -w -r1.11.2.9 mkv_file_format.cpp
--- fileformat/mkv_file_format.cpp	23 Jun 2011 08:31:27 -0000	1.11.2.9
+++ fileformat/mkv_file_format.cpp	25 Jul 2011 03:14:08 -0000
@@ -51,7 +51,6 @@
 #include "safestring.h"
 #include "chxmaplongtoobj.h"
 #include "hxsrcin.h"
-
 #include "hxheap.h"
 #include "hxprefutil.h"
 
@@ -115,6 +114,12 @@
 	{ "A_EAC3"   , "audio/EAC3"},
 //	{ "A_MPEG/L3", "audio/mp3"},
 	{ "A_MPEG/L3", "audio/MPEG-ELEMENTARY"},
+
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE
+	// Subtitle Codecs
+	{ "S_TEXT/UTF8", "subtitle/srt"},
+	{ "S_TEXT/ASS", "subtitle/ass"}	
+#endif
 };
 
 //Microsoft codecs MimeType Mapping
@@ -557,6 +562,17 @@
             }
             retval = pPacket->Set(pBuffer, INT64_TO_INT32(uTimeCode),strNum, 0, 0);
         }
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE
+        else if(trk->type == TrackText)
+        {
+            if(FAILED(CreatePacketCCF(pPacket, m_pContext)))
+            {
+                retval = HXR_OUTOFMEMORY;
+                return retval;
+            }
+            retval = pPacket->Set(pBuffer, INT64_TO_INT32(uTimeCode),strNum, 0, 0);
+        }
+#endif
     }
 
     return retval;
@@ -768,6 +784,12 @@
 							{
 								retVal=FormAudioPacket(pPacket,strNum,uTimeCode,bKey,trk,pBuffer);
 							}
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE
+							else if(trk->type == TrackText)
+							{
+								retVal = CreatePacket(pPacket,strNum,pBuffer,uTimeCode,uTimeCode,bKey);
+							}
+#endif							
 							if(FAILED(retVal))
 							{
 								HX_RELEASE(pBuffer);
Index: libmatroska/Matroska.cpp
===================================================================
RCS file: /cvsroot/datatype/mkv/libmatroska/Matroska.cpp,v
retrieving revision 1.1.2.14
diff -u -w -r1.1.2.14 Matroska.cpp
--- libmatroska/Matroska.cpp	1 Jul 2011 07:00:27 -0000	1.1.2.14
+++ libmatroska/Matroska.cpp	24 Jul 2011 08:31:28 -0000
@@ -476,7 +476,7 @@
 
 	tracks->Read( *m_pES,*(tracks->Generic().Context), iUpperLevel, el, true );
 
-	MKVTrack *pAudioTrack = NULL, *pVideoTrack = NULL; 
+	MKVTrack *pAudioTrack = NULL, *pVideoTrack = NULL, *pTextTrack = NULL; 
 	for(int i = 0; i < tracks->ListSize(); i++ )
 	{
 		EbmlElement *ele = (*tracks)[i];
@@ -531,6 +531,19 @@
 							    }
 							    break;
 							case track_subtitle:
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE
+							    if (pTextTrack)
+							    {
+							        delete tk;
+							        tk = NULL;
+							    }
+							    else
+							    {
+							        tk->type = TrackAudio;
+							        pTextTrack = tk;
+							    }
+							    break;
+#endif
 							default:
 							    delete tk;
 							    tk = NULL;
@@ -839,8 +852,10 @@
 	// NOTE: Audio must be pushed first
 	if(pAudioTrack)
 	    m_Tracks.push_back( pAudioTrack );
-	
-	
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE
+	if(pTextTrack)
+	    m_Tracks.push_back( pTextTrack );	
+#endif	
 	if(pVideoTrack)
 	    m_Tracks.push_back( pVideoTrack );
 
Index: libmatroska/mkvtypes.h
===================================================================
RCS file: /cvsroot/datatype/mkv/libmatroska/mkvtypes.h,v
retrieving revision 1.1.2.3
diff -u -w -r1.1.2.3 mkvtypes.h
--- libmatroska/mkvtypes.h	26 Nov 2010 02:19:31 -0000	1.1.2.3
+++ libmatroska/mkvtypes.h	24 Jul 2011 08:18:09 -0000
@@ -69,7 +69,7 @@
 	UINT32 uFrameRate;
 };
 
-typedef enum{TrackAudio, TrackVideo, TrackIgnore} TrackType;
+typedef enum{TrackAudio, TrackVideo, TrackText, TrackIgnore} TrackType;
 
 struct MKVTrack
 {

["text.tgz" (application/x-compressed)]
["video.diff" (application/octet-stream)]

? colconverter/Makefile
? colconverter/android-dbg
? colconverter/dllumake.mak
? colconverter/dllumake.upp
? colconverter/leanumake.mak
? colconverter/leanumake.upp
? colconverter/libumake.mak
? colconverter/libumake.upp
? colconverter/noplusumake.mak
? colconverter/noplusumake.upp
? colconverter/umakefil.upp
? site/Makefile
? site/Umakefil.upp
? site/android-dbg
? sitelib/Makefile
? sitelib/Umakefil.upp
? sitelib/android-dbg
? sitelib/ribosome_logs
? sitelib/sitecreatelib.mak
? sitelib/sitecreatelib.upp
? sitelib/sitelib.mak
? sitelib/sitelib.upp
? vidutil/Makefile
? vidutil/Umakefil.upp
? vidutil/android-dbg
Index: sitelib/minisite.cpp
===================================================================
RCS file: /cvsroot/video/sitelib/minisite.cpp,v
retrieving revision 1.23.2.1.38.1
diff -u -w -r1.23.2.1.38.1 minisite.cpp
--- sitelib/minisite.cpp	1 Apr 2011 04:18:33 -0000	1.23.2.1.38.1
+++ sitelib/minisite.cpp	24 Jul 2011 09:45:39 -0000
@@ -167,7 +167,12 @@
     {
         *ppvObj = (IHXSite*)this;
     }
-
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE    
+    else if (IsEqualIID(riid, IID_IHXSite5))
+    {
+        *ppvObj = (IHXSite5*)this;
+    }
+#endif
 #if defined (HELIX_FEATURE_SMIL_SITE)    
     else if (IsEqualIID(riid, IID_IHXSite2))
     {
Index: sitelib/platform/unix/miniandroidsite.cpp
===================================================================
RCS file: /cvsroot/video/sitelib/platform/unix/miniandroidsite.cpp,v
retrieving revision 1.1.2.1.8.3
diff -u -w -r1.1.2.1.8.3 miniandroidsite.cpp
--- sitelib/platform/unix/miniandroidsite.cpp	15 Jun 2011 00:56:43 -0000	1.1.2.1.8.3
+++ sitelib/platform/unix/miniandroidsite.cpp	25 Jul 2011 02:54:28 -0000
@@ -62,12 +62,18 @@
                                 IUnknown* pUnkOuter,
                                 INT32 lZorder)
     :  CMiniBaseSite(pContext, pUnkOuter, lZorder)
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE    
+    ,m_pSubtitleSurf(NULL)
+#endif    
 {
   LOGD("CHXAndroidSite\n");
 }
 
 CHXAndroidSite::~CHXAndroidSite()
 {
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE	
+  HX_DELETE(m_pSubtitleSurf);
+#endif  
   LOGD("~CHXAndroidSite\n");
 }
 
@@ -130,3 +136,49 @@
     return TRUE;
 }
 
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE
+/************************************************************************
+ *  Method:
+ *    IHXSite5::SetSubtitleHdr,RelSubtitleHdr and DrawSubtitleHdr for internal subtitle displaying
+ */
+STDMETHODIMP CHXAndroidSite::SetSubtitleHdr()
+{
+    if(m_pSubtitleSurf == NULL)
+    {
+        m_pSubtitleSurf = new CAndroidSubtitleSurface();	
+    }
+    return HXR_OK;
+}
+
+STDMETHODIMP CHXAndroidSite::RelSubtitleHdr()
+{
+    HX_DELETE(m_pSubtitleSurf);
+    return HXR_OK;
+}
+
+STDMETHODIMP CHXAndroidSite::DrawSubtitleHdr(int type, IHXBuffer *data)
+{
+    if(m_pSubtitleSurf != NULL)
+    {
+	switch(type){
+	    case SHOW_TEXT_SUBTITLE:
+		if(data)
+		{
+		    LOGD("++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
+		    LOGD("Display TEXT_SUBTITLE :%s\n",(char *)data->GetBuffer());
+		    LOGD("++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
+		    m_pSubtitleSurf->SetSubtitleText(data->GetBuffer(), data->GetSize());	
+		}
+		break;
+	    case SHOW_PICT_SUBTITLE:
+	    	break;
+	    case CLEARUP_SUBTITLE:
+	    	m_pSubtitleSurf->Hide();
+	    	break;
+	    default:
+	    	break;
+	}
+    }
+    return HXR_OK;
+}
+#endif
Index: sitelib/pub/minisite.h
===================================================================
RCS file: /cvsroot/video/sitelib/pub/minisite.h,v
retrieving revision 1.16.2.2.38.1
diff -u -w -r1.16.2.2.38.1 minisite.h
--- sitelib/pub/minisite.h	1 Apr 2011 04:20:45 -0000	1.16.2.2.38.1
+++ sitelib/pub/minisite.h	24 Jul 2011 08:36:03 -0000
@@ -84,6 +84,9 @@
 
 
 class CMiniBaseSite : public IHXSite,
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE
+                      public IHXSite5,
+#endif		      
 #if defined (HELIX_FEATURE_SMIL_SITE)                      
                       public IHXSite2,
                       public IHXCallback,
Index: sitelib/pub/platform/unix/miniandroidsite.h
===================================================================
RCS file: /cvsroot/video/sitelib/pub/platform/unix/miniandroidsite.h,v
retrieving revision 1.1.2.1.8.1
diff -u -w -r1.1.2.1.8.1 miniandroidsite.h
--- sitelib/pub/platform/unix/miniandroidsite.h	1 Apr 2011 04:21:37 -0000	1.1.2.1.8.1
+++ sitelib/pub/platform/unix/miniandroidsite.h	25 Jul 2011 02:53:54 -0000
@@ -49,12 +49,22 @@
 
 #ifndef _MINIANDROIDSITE_H
 #define _MINIANDROIDSITE_H
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE
+#include "andrsubtlsurf.h"
+#endif
 
 class CHXAndroidSite : public CMiniBaseSite
 {
   public:
     CHXAndroidSite(IUnknown* pContext, IUnknown* pUnkOuter = NULL, INT32 lZorder = 0);
-
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE    
+    /*
+     * IHXSite5 methods
+     */
+    STDMETHOD(SetSubtitleHdr) (THIS);
+    STDMETHOD(RelSubtitleHdr) (THIS);
+    STDMETHOD(DrawSubtitleHdr) (THIS_ int type, IHXBuffer *data); 
+#endif
   protected:
     
     virtual void* _Create(void* ParentWindow, UINT32 style);
@@ -71,6 +81,9 @@
   private:
 
     virtual ~CHXAndroidSite();
+#ifdef HELIX_FEATURE_EMBEDED_SUBTITLE    
+    CAndroidSubtitleSurface* m_pSubtitleSurf;
+#endif    
 };
 
 

["client.diff" (application/octet-stream)]

Index: hxsite2.h
===================================================================
RCS file: /cvsroot/client/include/hxsite2.h,v
retrieving revision 1.9.2.5
diff -u -w -r1.9.2.5 hxsite2.h
--- hxsite2.h	12 Aug 2008 06:40:04 -0000	1.9.2.5
+++ hxsite2.h	24 Jul 2011 09:42:23 -0000
@@ -210,6 +210,44 @@
  * 
  *  Interface:
  *
+ *	IHXSite5 (Created 06/24/2011)
+ *
+ *  Purpose:for embeded subtitle
+ *
+ *	Interface for IHXSite5 objects.
+ *
+ *  IID_IHXSite5:
+ *
+ *	{0x00000D0A-0901-11d1-8B06-00A024406D79}
+ *
+ */
+DEFINE_GUID(IID_IHXSite5, 0x00000D0A, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
+			0xa0, 0x24, 0x40, 0x6d, 0x79);
+
+
+#undef  INTERFACE
+#define INTERFACE   IHXSite5
+
+DECLARE_INTERFACE_(IHXSite5, IUnknown)
+{
+    /*
+     * IUnknown methods
+     */
+    STDMETHOD(QueryInterface)	(THIS_	REFIID riid, void** ppvObj) PURE;
+
+    STDMETHOD_(ULONG32,AddRef)	(THIS) PURE;
+
+    STDMETHOD_(ULONG32,Release)	(THIS) PURE;
+
+    STDMETHOD(SetSubtitleHdr)		(THIS) PURE;
+    STDMETHOD(RelSubtitleHdr)		(THIS) PURE;
+    STDMETHOD(DrawSubtitleHdr)		(THIS_	int type, IHXBuffer *data) PURE;
+};
+
+/****************************************************************************
+ * 
+ *  Interface:
+ *
  *	IHXSiteTreeNavigation
  *
  *  Purpose:

["common.diff" (application/octet-stream)]

? auth/authmgr/Makefile
? auth/authmgr/Umakefil.upp
? auth/authmgr/android-dbg
? auth/rn5auth/Makefile
? auth/rn5auth/Umakefil.upp
? auth/rn5auth/android-dbg
? container/Makefile
? container/Umakefil.upp
? container/android-dbg
? container/ucontlib.mak
? container/ucontlib.upp
? crypto/lite/Makefile
? crypto/lite/Umakefil.upp
? crypto/lite/android-dbg
? dbgtool/Makefile
? dbgtool/Umakefil.upp
? dbgtool/android-dbg
? fileio/Makefile
? fileio/Umakefil.upp
? fileio/android-dbg
? import/zlib/Makefile
? import/zlib/Umakefil.upp
? import/zlib/android-dbg
? lang/xml/Makefile
? lang/xml/Umakefil.upp
? lang/xml/android-dbg
? lang/xml/xmldll.mak
? lang/xml/xmldll.upp
? lang/xml/xmllib.mak
? lang/xml/xmllib.upp
? log/logutil/Makefile
? log/logutil/Umakefil.upp
? log/logutil/android-dbg
? netio/Makefile
? netio/Umakefil.upp
? netio/android-dbg
? runtime/Makefile
? runtime/Umakefil.upp
? runtime/android-dbg
? system/Makefile
? system/Umakefil.upp
? system/android-dbg
? system/recognizer.cpp.22
? util/Makefile
? util/Umakefil.upp
? util/android-dbg
Index: include/hxcom.h
===================================================================
RCS file: /cvsroot/common/include/hxcom.h,v
retrieving revision 1.33.2.1
diff -u -w -r1.33.2.1 hxcom.h
--- include/hxcom.h	28 Sep 2009 15:20:52 -0000	1.33.2.1
+++ include/hxcom.h	25 Jul 2011 02:48:19 -0000
@@ -54,6 +54,13 @@
 
 // have to use the double expansion to get the prescan level
 
+enum subtitle_operation
+{
+    SHOW_TEXT_SUBTITLE,
+    SHOW_PICT_SUBTITLE,
+    CLEARUP_SUBTITLE,
+};
+
 #define STATCONCAT1(w,x,y,z) STATCONCAT2(w,x,y,z)
 #define STATCONCAT2(w,x,y,z) w##x##y##z  
 
Index: include/hxiids.h
===================================================================
RCS file: /cvsroot/common/include/hxiids.h,v
retrieving revision 1.132.2.16.2.10
diff -u -w -r1.132.2.16.2.10 hxiids.h
--- include/hxiids.h	8 Jul 2011 09:06:13 -0000	1.132.2.16.2.10
+++ include/hxiids.h	24 Jul 2011 09:57:44 -0000
@@ -687,6 +687,7 @@
  *      IID_IHXMultiInstanceSiteUserSupplier:           \
                {00000D09-0901-11d1-8B-6-00A024406D59}
  *      IID_IHXSite2:                                   \
                {00000D0A-0901-11d1-8B-6-00A024406D59}
 *       IID_IHXSite3:                                   \
{00000D0A-0901-11d1-8B-6-00A024406D69} +*       IID_IHXSite5:                         \
                {00000D0A-0901-11d1-8B-6-00A024406D79}
  *      IID_IHXSiteTreeNavigation:                      \
                {b52abc41-a919-11d8-b8a3-0003939ba95e}
  *      IID_IHXSiteFullScreen                           \
                {00000D0B-0901-11d1-8B-6-00A024406D59}
  *      IID_IHXSiteFullScreenExt                        \
{00000D0B-0901-11d1-8B-6-00A024406D69} @@ -727,6 +728,7 @@
 DEFINE_GUID_ENUM(IID_IHXMultiInstanceSiteUserSupplier,  0x00000D09, 0x901, 0x11d1, \
0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59)  DEFINE_GUID_ENUM(IID_IHXSite2,         \
0x00000D0A, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59)  \
DEFINE_GUID_ENUM(IID_IHXSite3,                              0x00000D0A, 0x901, \
0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x69) +DEFINE_GUID_ENUM(IID_IHXSite5, \
0x00000D0A, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x79)  \
DEFINE_GUID_ENUM(IID_IHXSiteTreeNavigation,         0xb52abc41, 0xa919, 0x11d8, 0xb8, \
0xa3, 0x0, 0x03, 0x93, 0x9b, 0xa9, 0x5e)  // $Private:
 DEFINE_GUID_ENUM(IID_IHXSiteControl,                0xdd25ca2e, 0x73a5, 0x4811, \
0x99, 0x6f, 0x7e, 0x67, 0x26, 0xe7, 0x66, 0x8f)



_______________________________________________
Datatype-dev mailing list
Datatype-dev@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-dev


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

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