[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