From js at reciva.com  Tue Jul  1 08:58:02 2008
From: js at reciva.com (John Stirling)
Date: Tue Jul  1 07:38:03 2008
Subject: [Helix-client-dev] target with smallest number of files
Message-ID: <486A540A.2080102@reciva.com>

Anyone got any ideas on which target has the smallest number of files ?

We just need something that has enough to allows us to compile one of 
our plugins (filesystem, fileformat and renderer).

John

From gwright at real.com  Tue Jul  1 09:18:20 2008
From: gwright at real.com (Greg Wright)
Date: Tue Jul  1 07:54:58 2008
Subject: [Helix-client-dev] target with smallest number of files
In-Reply-To: <486A540A.2080102@reciva.com>
References: <486A540A.2080102@reciva.com>
Message-ID: <486A58CC.4030003@real.com>

John Stirling wrote:
> Anyone got any ideas on which target has the smallest number of files ?
> 
> We just need something that has enough to allows us to compile one of 
> our plugins (filesystem, fileformat and renderer).

Assuming you have proper BIF entries for your targets, your target
should be the minimal build you can do. That is, if you added a
'fooFileFormat' plugin to Helix, added a BIF entry for it and
have all of the proper dependencies listed, then just choosing
'fooFileFormat' from the build menu will be your minimal build
for that target.

--greg.


> 
> John
> 
> _______________________________________________
> Helix-client-dev mailing list
> Helix-client-dev@helixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
> 


From js at reciva.com  Tue Jul  1 09:23:48 2008
From: js at reciva.com (John Stirling)
Date: Tue Jul  1 08:03:23 2008
Subject: [Helix-client-dev] target with smallest number of files
In-Reply-To: <486A58CC.4030003@real.com>
References: <486A540A.2080102@reciva.com> <486A58CC.4030003@real.com>
Message-ID: <486A5A14.9000408@reciva.com>

We don't have proper BIF entries for our plugins.

I was planning to
. check out an existing target (eg filesystem/http)
. import that into a local cvs repository
. build our plugin by checking out the locally imported module and then 
building the plugin

I can do that already via filesystem/http but it would speed it up if I 
had a target with fewer files for this step.



Greg Wright wrote:
> John Stirling wrote:
>> Anyone got any ideas on which target has the smallest number of files ?
>>
>> We just need something that has enough to allows us to compile one of 
>> our plugins (filesystem, fileformat and renderer).
>
> Assuming you have proper BIF entries for your targets, your target
> should be the minimal build you can do. That is, if you added a
> 'fooFileFormat' plugin to Helix, added a BIF entry for it and
> have all of the proper dependencies listed, then just choosing
> 'fooFileFormat' from the build menu will be your minimal build
> for that target.
>
> --greg.
>
>
>>
>> John
>>
>> _______________________________________________
>> Helix-client-dev mailing list
>> Helix-client-dev@helixcommunity.org
>> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
>>
>


From harshapriya at gmail.com  Tue Jul  1 23:39:25 2008
From: harshapriya at gmail.com (Harsha priya gupta)
Date: Tue Jul  1 22:16:16 2008
Subject: [Helix-client-dev] time stamps on every stage
Message-ID: <827ad74d0807012339gd4f190cp9f18b881ee4019f0@mail.gmail.com>

Hi,
I am new to helix and was trying to do a small experiment. I need to
measure the time spent in each stage of pipeline like decode, post
processing, etc, for playback of MP3 file. Is there a way I can get
the time stamp + messages printed out after each stage of the
pipeline? This would help me do my experiment

Thanks,
Harsha

From ldhawan at real.com  Wed Jul  2 00:25:36 2008
From: ldhawan at real.com (Lovish Dhawan)
Date: Tue Jul  1 23:02:15 2008
Subject: [Helix-client-dev] time stamps on every stage
References: <827ad74d0807012339gd4f190cp9f18b881ee4019f0@mail.gmail.com>
Message-ID: <000d01c8dc14$d4fbaf60$8001a8c0@dhawan>

Hi Harsha,

You can achieve this using HXLogs. This prints the messages along with the 
timestamp.

https://common.helixcommunity.org/2005/devdocs/UnifiedLogging.html

Other than this if you want to see the timestamp you can use
HX_GET_TICKCOUNT() macro.

Thanks,
Lovish
----- Original Message ----- 
From: "Harsha priya gupta" 
To: 
Sent: Wednesday, July 02, 2008 12:09 PM
Subject: [Helix-client-dev] time stamps on every stage


> Hi,
> I am new to helix and was trying to do a small experiment. I need to
> measure the time spent in each stage of pipeline like decode, post
> processing, etc, for playback of MP3 file. Is there a way I can get
> the time stamp + messages printed out after each stage of the
> pipeline? This would help me do my experiment
>
> Thanks,
> Harsha
>
> _______________________________________________
> Helix-client-dev mailing list
> Helix-client-dev@helixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev 


From harshapriya at gmail.com  Wed Jul  2 03:04:58 2008
From: harshapriya at gmail.com (Harsha priya gupta)
Date: Wed Jul  2 01:43:05 2008
Subject: [Helix-client-dev] time stamps on every stage
In-Reply-To: <000d01c8dc14$d4fbaf60$8001a8c0@dhawan>
References: <827ad74d0807012339gd4f190cp9f18b881ee4019f0@mail.gmail.com>
	<000d01c8dc14$d4fbaf60$8001a8c0@dhawan>
Message-ID: <827ad74d0807020304u7153cbf8p59082f42ea3019d8@mail.gmail.com>

 Hi Lovish,

Thanks for the quick reply. I am actually not looking at instrumenting
the code with debug messages. I am looking for if I can set the
environment and get a dump of what is happening and at what time...
probably through dmesg or something. I am not sure if this is
available. It would be great if you can give me pointers to anything
if available.

Also I tried using a tool to see which modules take the most CPU time.
When I run an mp3 file, I found that at an instance 3 helix dna server
threads are running out of which 2 of them are using the mp3 shared
library. The most of part of the CPU time in the mp3 library is spent
in xmp3_window_dual. Can you also help me understand what does this
module do and why does it take up a lot of CPU time?

Thanks,
Harsha


On Wed, Jul 2, 2008 at 12:55 PM, Lovish Dhawan  wrote:
> Hi Harsha,
>
> You can achieve this using HXLogs. This prints the messages along with the
> timestamp.
>
> https://common.helixcommunity.org/2005/devdocs/UnifiedLogging.html
>
> Other than this if you want to see the timestamp you can use
> HX_GET_TICKCOUNT() macro.
>
> Thanks,
> Lovish
> ----- Original Message ----- From: "Harsha priya gupta"
> 
> To: 
> Sent: Wednesday, July 02, 2008 12:09 PM
> Subject: [Helix-client-dev] time stamps on every stage
>
>
>> Hi,
>> I am new to helix and was trying to do a small experiment. I need to
>> measure the time spent in each stage of pipeline like decode, post
>> processing, etc, for playback of MP3 file. Is there a way I can get
>> the time stamp + messages printed out after each stage of the
>> pipeline? This would help me do my experiment
>>
>> Thanks,
>> Harsha
>>
>> _______________________________________________
>> Helix-client-dev mailing list
>> Helix-client-dev@helixcommunity.org
>> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
>
>



-- 
-Harsha

From harshapriya at gmail.com  Wed Jul  2 05:28:30 2008
From: harshapriya at gmail.com (Harsha priya gupta)
Date: Wed Jul  2 04:05:30 2008
Subject: [Helix-client-dev] question on xmp3_windows_dual
Message-ID: <827ad74d0807020528t35455ad8lb1a0d5e2ea51a14f@mail.gmail.com>

Hi,

We tried running a performance tool that lists the modules with their
CPU usage time and other performance related metrics.

When running an mp3 file, at any instance we get 3 helix server
threads. 2 of them use
mp3 libraries.

1. Any ides why are there 3 threads running? Is one of them the helix dna
client? What are these threads responsible for?
2. Most of the CPU time is spent in the xmp3_windows_dual. can anyone
help me understand what that function is doing? Also I guess this
function is a part of 'decode and render'; correct me if am wrong.

Thanks,
Harsha

From narendra1310 at gmail.com  Sun Jul  6 23:48:41 2008
From: narendra1310 at gmail.com (Narendra Parimi)
Date: Sun Jul  6 22:24:23 2008
Subject: [Helix-client-dev] Fwd: build options to build the complete
	realplayer
In-Reply-To: <327debbd0807062330g4d7dda82l940b42e950e11a6@mail.gmail.com>
References: <327debbd0807062330g4d7dda82l940b42e950e11a6@mail.gmail.com>
Message-ID: <327debbd0807062348q17a422dcy8d2308f1e1b2fa94@mail.gmail.com>

---------- Forwarded message ----------
From: Narendra Parimi 
Date: Mon, Jul 7, 2008 at 12:00 PM
Subject: build options to build the complete realplayer
To: admin@helixcommunity.org


I am  trying to build the realplayer from helixcommunity cvs repository. i
choosed the build options
as shown below.

[0] Set BIF branch (realplay_gtk_current)
[1] Set Target(s) (player_all)
[2] Set Profile (/root/helixbuild/build/umakepf/helix-client-all-defines)
[3] run: build

but i am not getting few modules or files or dirctories named datatype_dist,
protocol_dist
, producersdk and  few  shared  object files are missing . Due to this
problem i am not able to make the build source.

here is my build.out:

Session:~/helixbuild/re alplay2 # build.py
[#-00000001][2008-07-03 14:33:47][-1211282784][INFO ] : Ribosome v2.4.11
[#-00000002][2008-07-03 14:33:47][-1211282784][INFO ] : Using Python v2.4.3
[#-00000003][2008-07-03 14:33:47][-1211282784][INFO ] : Log dir:
/root/helixbuild/realplay2/ribosome_logs
[#-00000005][2008-07-03 14:33:47][-1211282784][INFO ] : Running tool: build
[#-00000019][2008-07-03 14:33:47][-1211282784][INFO ] : Submitting all jobs
to chaingang.
[#-00000020][2008-07-03 14:33:47][-1211282784][INFO ] : Enabling threading,
3 threads requested.
[#-00000022][2008-07-03 14:33:47][-1211282784][INFO ] : Starting thread
scheduler to process jobs.
[#-00000026][2008-07-03 14:33:47][-1211282784][INFO ] : Thread scheduler run
completed.
[#-00000027][2008-07-03 14:33:47][-1211282784][INFO ] : No abnormal events
encountered.
[#-00000029][2008-07-03 14:33:47][-1211282784][INFO ] : Time used for
updates: 0.003822
[#-00000030][2008-07-03 14:33:47][-1211282784][INFO ] : Building filename
lists.

Build System Menu
Ribosome v2.4.11
-> Current Directory: /root/helixbuild/realplay2
[0] Set BIF branch (realplay_gtk_current)
[1] Set Target(s) (player_all)
[2] Set Profile (/root/helixbuild/build/umakepf/helix-client-all-defines)
[3] run: build
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle \'make clean\' (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[14] run history: build
[Q] Quit
Enter selection or flags: 3
reading
/root/helixbuild/build/bif-cvs/helix/client/build/BIF/realplay_gtk_current.bif
file
[WARNING] bif
parser(/root/helixbuild/build/bif-cvs/helix/client/build/BIF/realplay_gtk_curren
t.bif near beginning in ): This BIF file lacks an expiration date, using
2005-01-01
[WARNING] bif
parser(/root/helixbuild/build/bif-cvs/helix/client/build/BIF/hxplay_gtk_current.
bif near beginning in ): This BIF file lacks an expiration date, using
2005-01-01
[WARNING] bif
parser(/root/helixbuild/build/bif-cvs/helix/client/build/BIF/hxclient_1_5_0_caye
nne.bif near beginning in ): This BIF file lacks an expiration date, using
2005-01-01
[#-00000039][2008-07-03 14:33:56][-1211282784][INFO ] : Submitting all jobs
to chaingang.
[#-00000040][2008-07-03 14:33:56][-1211282784][INFO ] : Enabling threading,
3 threads requested.
[#-00000042][2008-07-03 14:33:56][-1211282784][INFO ] : Starting thread
scheduler to process jobs.
[#-00000046][2008-07-03 14:33:56][-1211282784][INFO ] : Thread scheduler run
completed.
[#-00000047][2008-07-03 14:33:56][-1211282784][INFO ] : No abnormal events
encountered.
[#-00000049][2008-07-03 14:33:56][-1211282784][INFO ] : Time used for
updates: 0.003419
[#-00000050][2008-07-03 14:33:56][-1211282784][INFO ] : Building filename
lists.
[#-00000057][2008-07-03 14:33:56][-1211282784][INFO ] : Using options:
[(\'-m\', \'realplay_gtk_current\')]
[#-00000059][2008-07-03 14:33:56][-1211282784][INFO ] : Running
BuildApp::main() in /root/helixbuild/realplay2
[#-00000066][2008-07-03 14:33:56][-1211282784][INFO ] : Setting up
dependency data.
[#-00000076][2008-07-03 14:33:56][-1211282784][INFO ] : Submitting all jobs
to chaingang.
[#-00000077][2008-07-03 14:33:56][-1211282784][INFO ] : Enabling threading,
3 threads requested.
[#-00000079][2008-07-03 14:33:56][-1211282784][INFO ] : Starting thread
scheduler to process jobs.
[#-00000083][2008-07-03 14:33:56][-1211282784][INFO ] : Thread scheduler run
completed.
[#-00000084][2008-07-03 14:33:56][-1211282784][INFO ] : No abnormal events
encountered.
[#-00000086][2008-07-03 14:33:56][-1211282784][INFO ] : Time used for
updates: 0.004081
[#-00000087][2008-07-03 14:33:56][-1211282784][INFO ] : Building filename
lists.
[#-00000092][2008-07-03 14:33:56][-1211282784][INFO ] : Parsing BIF
\"/root/helixbuild/build/bif-cvs/helix/client/build/BIF/realplay_gtk_current.bif
\"
[WARNING] bif
parser(/root/helixbuild/build/bif-cvs/helix/client/build/BIF/realplay_gtk_curren
t.bif near beginning in ): This BIF file lacks an expiration date, using
2005-01-01
[WARNING] bif
parser(/root/helixbuild/build/bif-cvs/helix/client/build/BIF/hxplay_gtk_current.
bif near beginning in ): This BIF file lacks an expiration date, using
2005-01-01
[WARNING] bif
parser(/root/helixbuild/build/bif-cvs/helix/client/build/BIF/hxclient_1_5_0_caye
nne.bif near beginning in ): This BIF file lacks an expiration date, using
2005-01-01
[#-00000102][2008-07-03 14:33:57][-1211282784][INFO ] : Using target
\'player_all\' from bif
\'/root/helixbuild/build/bif-cvs/helix/client/build/BIF/realplay_gtk_current.bif
\'.
[#-00000103][2008-07-03 14:33:57][-1211282784][INFO ] : Building dependency
tree for targets.
module[player_hxclientkit(/root/helixbuild/build/bif-cvs/helix/client/
build/BIF/hxclient_1_5_0_cayenne.bif:0)].deps+=player_hxclientkit_src_hxrecorden
gine (conflict)

Build System (V2.4.11)
time: Thu Jul 3 14:33:57 2008
outfile: build.out
branch: realplay_gtk_current
platform: linux-2.6-glibc23-i686
distribution/archive from: linux-2.6-glibc23-i686
build Type: debug
build options: debug
profile: /root/helixbuild/build/umakepf/helix-client-all-defines
cvs revision: HEAD
copy target: debug
target(s): player_all
$Id: umake.py,v 1.60 2007/06/13 01:12:50 jfinnecy Exp $
C Compiler: gcc
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr
--with-local-prefix=/usr/local --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada
--enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.1.2
--enable-ssp --disable-libssp --disable-libgcj --with-slibdir=/lib
--with-system-zlib --enable-shared --enable-__cxa_atexit
--enable-libstdcxx-allocator=new --program-suffix=
--enable-version-specific-runtime-libs --without-system-libunwind
--with-cpu=generic --host=i586-suse-linux
Thread model: posix
gcc version 4.1.2 20070115 (prerelease) (SUSE Linux)

C++ Compiler: g++
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr
--with-local-prefix=/usr/local --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada
--enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.1.2
--enable-ssp --disable-libssp --disable-libgcj --with-slibdir=/lib
--with-system-zlib --enable-shared --enable-__cxa_atexit
--enable-libstdcxx-allocator=new --program-suffix=
--enable-version-specific-runtime-libs --without-system-libunwind
--with-cpu=generic --host=i586-suse-linux
Thread model: posix
gcc version 4.1.2 20070115 (prerelease) (SUSE Linux)


[#-00000117][2008-07-03 14:33:57][-1211282784][INFO ] : Checking out source
code and binary distributions.
Group size: 31 Modules: 230 Threads: 2
[#-00000161][2008-07-03 14:33:57][-1211282784][INFO ] : Enabling threading,
2 threads requested.
[#-00000163][2008-07-03 14:33:57][-1211282784][INFO ] : Starting thread
scheduler to process jobs.
datatype/flash/flv/fileformat exists
datatype/flash/flv/flv2swf exists
datatype/flash/flv/flvdump exists
datatype/flash/renderer exists
datatype/group/audio exists
datatype/h261/renderer exists
client/netwksvc exists
datatype/image/common exists
datatype/image/gif/common exists
common/include exists
datatype/image/gif/renderer exists
datatype/image/jpg/common exists
datatype/image/jpg/fileformat exists
datatype/image/jpg/import/jpeg-6b exists
datatype/image/jpg/renderer exists
datatype/image/png/common exists
datatype/image/png/fileformat exists
common/log/logutil exists
datatype/image/png/renderer exists
datatype/image/realpix/codec/gif exists
datatype/image/realpix/codec/jpg exists
datatype/image/realpix/codec/png exists
datatype/image/realpix/fileformat exists
datatype/image/realpix/renderer exists
datatype/image/wbmp/common exists
datatype/image/wbmp/fileformat exists
datatype/image/wbmp/renderer exists
datatype/include exists
datatype/aac/fileformat exists
datatype/mp3/codec exists
datatype/mp3/common exists
datatype/mp3/fileformat exists
datatype/mp3/import/id3lib exists
datatype/mp3/mp3metaff exists
datatype/mp3/payload exists
datatype/mp3/renderer exists
common/auth/authmgr exists
datatype/au/fileformat exists
audio/limiter exists
datatype/avi/fileformat exists
common/auth/rn5auth exists
datatype/text/realtext/common exists
datatype/text/realtext/fileformat exists
datatype/text/realtext/renderer exists
datatype/tools/dtdriver/common exists
datatype/common/baserend exists
datatype/tools/dtdriver/dtdrplin exists
datatype/tools/dtdriver/engine exists
datatype/tools/dtdriver/include exists
datatype/tools/dtdriver/loader exists
datatype/tools/minicntx exists
datatype/wav/fileformat exists
datatype/wav/renderer/pcm exists
filesystem/data exists
filesystem/http exists
filesystem/local exists
filesystem/memory exists
common/import/zlib exists
datatype/image/gif/fileformat exists
producersdk/common/include exists
producersdk/include exists
protocol/common/util exists
client/include exists
common/import/stlport exists
audio/gaintool exists
client/resource exists
common/lang/xml exists
common/log/logcommon exists
common/log/logobserverfile exists
client/viewsource exists
common/netio exists
common/runtime exists
common/system exists
common/util exists
datatype/aac/codec/fixpt/decoder exists
common/appext/vsrcplin exists
datatype/aac/parser exists
datatype/aac/payload exists
datatype/aiff/fileformat exists
client/common/netio exists
audio/fixptutil exists
client/common/system exists
datatype/common/audrend exists
datatype/common/basehost exists
common/container exists
datatype/common/container exists
datatype/common/filewriter exists
datatype/common/include exists
datatype/common/util exists
datatype/common/vidrend exists
datatype/flash/fileformat exists
datatype/flash/flashhost exists
datatype/flash/flv/common exists
getting distribution=\"datatype_dist/flash/common\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
[#-00000189][2008-07-03 14:33:57][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686/helix-client-all-defines
[#-00000200][2008- 07-03 14:34:04][-1227273312][INFO ] : RESULT => False
[#-00000219][2008-07-03 14:34:04][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686/helix-client-all-defines-
[#-00000230][2008 -07-03 14:34:10][-1227273312][INFO ] : RESULT => False
[#-00000249][2008-07-03 14:34:10][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686/helix-client-all-
[#-00000260][2008-07-03 14:34:17][-1227273312][INFO ] : RESULT => False
[#-00000279][2008-07-03 14:34:17][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686/helix-client-
[#-00000290][2008-07-03 14:34:24][-1227273312][INFO ] : RESULT => False
[#-00000309][2008-07-03 14:34:24][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686/helix-
[#-00000320][2008-07-03 14:34:30][-1227273312][INFO ] : RESULT => False
[#-00000338][2008-07-03 14:34:30][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686
[#-00000349][2008-07-03 14:34:38][-1227273312][INFO ] : RESULT => True
[#-00000374][2008-07-03 14:34:45][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686/datatype_dist
[#-00000385][2008-07-03 14:34:51][-1227273312][INFO ] : RESULT => False
[#-00000396][2008-07-03 14:34:51][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686-/helix-client-all-defines
[#-00000407][2008 -07-03 14:34:58][-1227273312][INFO ] : RESULT => False
[#-00000426][2008-07-03 14:34:58][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686-/helix-client-all-defines-
[#-00000437][200 8-07-03 14:35:05][-1227273312][INFO ] : RESULT => False
[#-00000456][2008-07-03 14:35:05][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686-/helix-client-all-
[#-00000467][2008-07-03 14:35:12][-1227273312][INFO ] : RESULT => False
[#-00000486][2008-07-03 14:35:12][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686-/helix-client-
[#-00000497][2008-07-03 14:35:19][-1227273312][INFO ] : RESULT => False
[#-00000516][2008-07-03 14:35:19][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686-/helix-
[#-00000527][2008-07-03 14:35:25][-1227273312][INFO ] : RESULT => False
[#-00000545][2008-07-03 14:35:25][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686-
[#-00000556][2008-07-03 14:35:32][-1227273312][INFO ] : RESULT => False
[#-00000575][2008-07-03 14:35:32][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-/helix-client-all-defines
[#-00000586][2008-07-0 3 14:35:39][-1227273312][INFO ] : RESULT => False
[#-00000605][2008-07-03 14:35:39][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-/helix-client-all-defines-
[#-00000616][2008-07- 03 14:35:47][-1227273312][INFO ] : RESULT => False
[#-00000635][2008-07-03 14:35:47][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-/helix-client-all-
[#-00000646][2008-07-03 14:35:53][-1227273312][INFO ] : RESULT => False
[#-00000665][2008-07-03 14:35:53][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-/helix-client-
[#-00000676][2008-07-03 14:36:00][-1227273312][INFO ] : RESULT => False
[#-00000695][2008-07-03 14:36:00][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-/helix-
[#-00000706][2008-07-03 14:36:07][-1227273312][INFO ] : RESULT => False
[#-00000724][2008-07-03 14:36:07][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-
[#-00000735][2008-07-03 14:36:13][-1227273312][INFO ] : RESULT => False
[#-00000754][2008-07-03 14:36:13][-1227273312][INFO ] : TESTING
distribution/linux-2.6-/helix-client-all-defines
[#-00000765][2008-07-03 14:36:20][-1227273312][INFO ] : RESULT => False
[#-00000784][2008-07-03 14:36:20][-1227273312][INFO ] : TESTING
distribution/linux-2.6-/helix-client-all-defines-
[#-00000795][2008-07-03 14:36:27][-1227273312][INFO ] : RESULT => False
[#-00000814][2008-07-03 14:36:27][-1227273312][INFO ] : TESTING
distribution/linux-2.6-/helix-client-all-
[#-00000825][2008-07-03 14:36:34][-1227273312][INFO ] : RESULT => False
[#-00000844][2008-07-03 14:36:34][-1227273312][INFO ] : TESTING
distribution/linux-2.6-/helix-client-
[#-00000855][2008-07-03 14:36:41][-1227273312][INFO ] : RESULT => False
[#-00000874][2008-07-03 14:36:41][-1227273312][INFO ] : TESTING
distribution/linux-2.6-/helix-
[#-00000885][2008-07-03 14:36:48][-1227273312][INFO ] : RESULT => False
[#-00000903][2008-07-03 14:36:48][-1227273312][INFO ] : TESTING
distribution/linux-2.6-
[#-00000914][2008-07-03 14:36:55][-1227273312][INFO ] : RESULT => False
[#-00000933][2008-07-03 14:36:55][-1227273312][INFO ] : TESTING
distribution/linux-/helix-client-all-defines
[#-00000950][2008-07-03 14:37:02][-1227273312][INFO ] : RESULT => False
[#-00000969][2008-07-03 14:37:02][-1227273312][INFO ] : TESTING
distribution/linux-/helix-client-all-defines-
[#-00000980][2008-07-03 14:37:10][-1227273312][INFO ] : RESULT => False
[#-00000999][2008-07-03 14:37:10][-1227273312][INFO ] : TESTING
distribution/linux-/helix-client-all-
[#-00001010][2008-07-03 14:37:17][-1227273312][INFO ] : RESULT => False
[#-00001029][2008-07-03 14:37:17][-1227273312][INFO ] : TESTING
distribution/linux-/helix-client-
[#-00001040][2008-07-03 14:37:24][-1227273312][INFO ] : RESULT => False
[#-00001059][2008-07-03 14:37:24][-1227273312][INFO ] : TESTING
distribution/linux-/helix-
[#-00001070][2008-07-03 14:37:32][-1227273312][INFO ] : RESULT => False
[#-00001088][2008-07-03 14:37:32][-1227273312][INFO ] : TESTING
distribution/linux-
[#-00001099][2008-07-03 14:37:38][-1227273312][INFO ] : RESULT => False
[#-00001117][2008-07-03 14:37:38][-1227273312][INFO ] : TESTING
distribution/helix-client-all-defines
[#-00001128][2008-07-03 14:37:46][-1227273312][INFO ] : RESULT => False
[#-00001146][2008-07-03 14:37:46][-1227273312][INFO ] : TESTING
distribution/helix-client-all-defines-
[#-00001157][2008-07-03 14:37:53][-1227273312][INFO ] : RESULT => False
[#-00001175][2008-07-03 14:37:53][-1227273312][INFO ] : TESTING
distribution/helix-client-all-
[#-00001186][2008-07-03 14:37:59][-1227273312][INFO ] : RESULT => False
[#-00001204][2008-07-03 14:37:59][-1227273312][INFO ] : TESTING
distribution/helix-client-
[#-00001215][2008-07-03 14:38:06][-1227273312][INFO ] : RESULT => False
[#-00001233][2008-07-03 14:38:06][-1227273312][INFO ] : TESTING
distribution/helix-
[#-00001244][2008-07-03 14:38:13][-1227273312][INFO ] : RESULT => False
[#-00001261][2008-07-03 14:38:13][-1227273312][INFO ] : TESTING
distribution/debug
[#-00001272][2008-07-03 14:38:20][-1227273312][INFO ] : RESULT => False
[#-00001280][2008-07-03 14:38:20][-1227273312][INFO ] : TESTING distribution
[#-00001291][2008-07-03 14:38:27][-1227273312][INFO ] : RESULT => True
distribution=\"datatype_dist/flash/common\" not found.
getting distribution=\"datatype_dist/flash/fileformat\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
[#-00001399][2008-07-03 14:38:34][-1227273312][INFO ] : TESTING
distribution/linux-2.6-glibc23-i686/debug
[#-00001410][2008-07-03 14:38:40][-1227273312][INFO ] : RESULT => False
[#-00001927][2008-07-03 14:38:41][-1227273312][INFO ] : TESTING
distribution/datatype_dist
[#-00001938][2008-07-03 14:38:47][-1227273312][INFO ] : RESULT => False
distribution=\"datatype_dist/flash/fileformat\" not found.
getting distribution=\"datatype_dist/flash/renderer\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/flash/renderer \" not found.
getting distribution=\"datatype_dist/lsd/codec\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/lsd/codec\" not found.
getting distribution=\"datatype_dist/rm/audio/codec/ra8hbr\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/audio/codec /ra8hbr\" not found.
getting distribution=\"datatype_dist/rm/audio/codec/ra8lbr\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/audio/codec /ra8lbr\" not found.
getting distribution=\"datatype_dist/rm/audio/codec/sipro\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/audio/codec /sipro\" not found.
getting distribution=\"datatype_dist/rm/audio/common\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/audio/commo n\" not found.
getting distribution=\"datatype_dist/rm/audio/renderer\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/audio/rende rer\" not found.
getting distribution=\"datatype_dist/rm/common\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/common\" not found.
getting distribution=\"datatype_dist/rm/fileformat\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/fileformat \" not found.
getting distribution=\"datatype_dist/rm/video/codec/common\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/video/codec /common\" not found.
getting distribution=\"datatype_dist/rm/video/codec/rv1dec\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/video/codec /rv1dec\" not found.
getting distribution=\"datatype_dist/rm/video/codec/rv89combo\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/video/codec /rv89combo\" not found.
getting distribution=\"datatype_dist/rm/video/codec/rvg2dec\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/video/codec /rvg2dec\" not found.
getting distribution=\"datatype_dist/rm/video/common\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/video/commo n\" not found.
getting distribution=\"datatype_dist/rm/video/payload\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"datatype_dist/rm/video/paylo ad\" not found.
getting distribution=\"protocol_dist/pna\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"protocol_dist/pna\" not found.
getting distribution=\"protocol_dist/rtsp\" (cvs
tag=\"hxclient_1_5_0_cayenne\", root=\"helix\",
dist_id=\"linux-2.6-glibc23-i686\")
distribution=\"protocol_dist/rtsp\" not found.
common/import/xdg-utils exists
player/app/doc exists
player/app/gtk exists
player/app/plugin exists
player/common/gtk exists
player/installer/app exists
player/installer/archive exists
player/installer/common exists
player/installer/deb exists
player/installer/postinst exists
player/installer/rpm exists
player/installer/stage1 exists
datatype/image/png/import/libpng exists
OK


please help me about this and send build options for building the complete
realplayer.

Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/helix-client-dev/attachments/20080707/5cc9eacd/attachment-0001.html
From narendra1310 at gmail.com  Sun Jul  6 23:55:35 2008
From: narendra1310 at gmail.com (Narendra Parimi)
Date: Sun Jul  6 22:31:53 2008
Subject: [Helix-client-dev] compilation errors with helixsdk in windows
Message-ID: <327debbd0807062355k4d46b635g2d7c6716a1728ecf@mail.gmail.com>

I am frustrated with few fatal errors while compiling \"helixsdk_r6\" in
windows server 2003 platform.
I used visual studio(8) 2005 which is latest version than what they
mwentioned to use i,e, visual studio 7. The reason i am using this new
version is rite now i dont have older version with me.

But new version of VS should also have the backward compatability of older
version plus additional applications, if that is right. why i am getting
errors with new version of visual studio ?
Please clear doubts about the following compilation errors and provide me a
right solution to come out from this frustration.
#ERRORS:

1) fatal error C1902: Program database manager mismatch; please check your
installation

2) NMAKE : fatal error U1077: \'cl\' : return code \'0x2\'.

Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/helix-client-dev/attachments/20080707/b26b0422/attachment.html
From dyek at real.com  Mon Jul  7 07:52:44 2008
From: dyek at real.com (Daniel Yek)
Date: Mon Jul  7 06:28:13 2008
Subject: [Helix-client-dev] build options to build the complete realplayer
In-Reply-To: <327debbd0807062348q17a422dcy8d2308f1e1b2fa94@mail.gmail.com>
References: <327debbd0807062330g4d7dda82l940b42e950e11a6@mail.gmail.com>
	<327debbd0807062348q17a422dcy8d2308f1e1b2fa94@mail.gmail.com>
Message-ID: <48722DBC.3050009@real.com>


Narendra Parimi wrote:
> I am  trying to build the realplayer from helixcommunity cvs 
> repository. i choosed the build options
> as shown below.
>
> [0] Set BIF branch (realplay_gtk_current)
> [1] Set Target(s) (player_all)
> [2] Set Profile (/root/helixbuild/build/umakepf/helix-client-all-defines)
> [3] run: build
>  
> but i am not getting few modules or files or dirctories named 
> datatype_dist, protocol_dist,

This is your SYSTEM_ID:

> platform: linux-2.6-glibc23-i686
> distribution/archive from: linux-2.6-glibc23-i686

That won't work.

As stated in the QuickStart, you should use:
SYSTEM_ID=linux-2.2-libc6-gcc32-i586

Here is the QuickStart:
https://player.helixcommunity.org/2007/dev/quickstart.html
https://player.helixcommunity.org/2007/dev/


> producersdk

I don't think producersdk is needed to build RealPlayer for Linux.

(Just FYI, the most suitable mailing list for RealPlayer GUI layer 
issues is player-dev@helixcommunity.org.)

-- 
Daniel Yek.



> and  few  shared  object files are missing . Due to this problem i am 
> not able to make the build source.


> please help me about this and send build options for building the 
> complete realplayer.
>
> Thanks


From jrathore at real.com  Mon Jul  7 18:17:24 2008
From: jrathore at real.com (Jyotsana Rathore)
Date: Mon Jul  7 16:52:47 2008
Subject: [Helix-client-dev] compilation errors with helixsdk in windows
In-Reply-To: <327debbd0807062355k4d46b635g2d7c6716a1728ecf@mail.gmail.com>
References: <327debbd0807062355k4d46b635g2d7c6716a1728ecf@mail.gmail.com>
Message-ID: <000001c8e098$6144f8a0$f58016ac@corp.real.com>

You might need to run the vc\bin\vcvars32.bat script to setup your
environment variables. The path usually is C:\Program Files\Microsoft Visual
Studio .NET 2003\Vc7\bin\ vcvars32.bat but it might be different in your
case.

 

Regarding the first error, that might be because of a corrupt visual studio
install, you can seek help on msdn.

 

-Jyotsana

 

  _____  

From: helix-client-dev-bounces@helixcommunity.org
[mailto:helix-client-dev-bounces@helixcommunity.org] On Behalf Of Narendra
Parimi
Sent: Sunday, July 06, 2008 11:56 PM
To: helix-client-dev@helixcommunity.org
Subject: [Helix-client-dev] compilation errors with helixsdk in windows

 

I am frustrated with few fatal errors while compiling \"helixsdk_r6\" in
windows server 2003 platform.
I used visual studio(8) 2005 which is latest version than what they
mwentioned to use i,e, visual studio 7. The reason i am using this new
version is rite now i dont have older version with me. 

But new version of VS should also have the backward compatability of older
version plus additional applications, if that is right. why i am getting
errors with new version of visual studio ?
Please clear doubts about the following compilation errors and provide me a
right solution to come out from this frustration.
#ERRORS:

1) fatal error C1902: Program database manager mismatch; please check your 
installation

2) NMAKE : fatal error U1077: \'cl\' : return code \'0x2\'.

Thanks 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/helix-client-dev/attachments/20080707/62ec4ecd/attachment.html
From timeless at gmail.com  Tue Jul  8 14:40:18 2008
From: timeless at gmail.com (timeless)
Date: Wed Jul  9 09:17:55 2008
Subject: [Helix-client-dev] Fwd: bug reporting
In-Reply-To: <26b395e60807080918t471d9bb2n263f1c790513ab34@mail.gmail.com>
References: <26b395e60807080918t471d9bb2n263f1c790513ab34@mail.gmail.com>
Message-ID: <26b395e60807081440q45e47bc1k4dc113462f4d8f6@mail.gmail.com>

I'd like to file a bug against clntcore.so
0 		*__GI___nss_hostname_digits_dots (name=0x0, resbuf=0x411387d0,
buffer=0x41136a34, buffer_size=0x411387cc, buflen=0,
result=0x454bddec, status=0x0, af=2, h_errnop=0x454bdde8) at
digits_dots.c:58
1 	0x410f1fd8 	gethostbyname (name=0x0) at ../nss/getXXbyYY.c:109
2 	0x40128548 	?? () from /usr/lib/helix/common/clntcore.so

gethostbyname expects a non null pointer, and clntcore.so (I don't
know what function, I don't have symbols/sources) passes it a null
pointer.

I don't really intend to become a full time helix developer, I'm more
interested in reporting crashes upstream and having someone else fix
them.

I have half of an account at bugs.helixcommunity.org (timeless), but
it doesn't have access to any products....
I reported this to the admins and they suggested this address.

From halley.zhao at intel.com  Mon Jul 14 02:44:39 2008
From: halley.zhao at intel.com (Zhao, Halley)
Date: Mon Jul 14 01:18:32 2008
Subject: [Helix-client-dev] how Helix deal with the scenarion that a usb
	disk is pluged out during playback?
Message-ID: <094BCE01AFBE9646AF220B0B3F367AAB03499182@pdsmsx413.ccr.corp.intel.com>

When Helix player is playing content on USB disk, then user unplug the
USB disk, helix engine will crash in such scenario.

I test it for helix-player and player_gtk_test on Linux, helix engine
will crash in such scenario. 

On Windows system, Realplayer works well in such scenario, the
presentation stopped, but you could open another stream.

 

When I looked into some source code at
filesystem/local/full/smplfsys.cpp, 

I found there seems to be some function to deal with such scenario:
CheckForCorruptFile().

However, when I try to debug it, I found the function isn't invoked in
the scenario above.

 

And I found after the last call to FinishDoRead(), the engine crash.

But in this last call, for the condition sentence to
CheckForCorruptFile():

if (!pBuffer || actual < m_ulPendingReadCount)

 

the pBuffer is valid and actual = 2048, and m_ulPendingReadCount = 2048.

 

I think the scenario should be a common error handle for source plugin, 

Did anybody meet such issue before? Or maybe someone fix it in other
branch?

 

BR

 

 

 

ZHAO, Halley (Aihua)

Email: halley.zhao@intel.com  

Tel: +86(21)61166476

iNet: 8821-6476

SSG/OTC/UMD

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/helix-client-dev/attachments/20080714/1f9eb2b5/attachment-0001.html
From ehyche at real.com  Tue Jul 15 07:32:00 2008
From: ehyche at real.com (Eric Hyche)
Date: Tue Jul 15 06:05:30 2008
Subject: [Helix-client-dev] how Helix deal with the scenarion that a
	usbdisk is pluged out during playback?
In-Reply-To: <094BCE01AFBE9646AF220B0B3F367AAB03499182@pdsmsx413.ccr.corp.intel.com>
References: <094BCE01AFBE9646AF220B0B3F367AAB03499182@pdsmsx413.ccr.corp.intel.com>
Message-ID: <010b01c8e687$8bedcc90$db68a8c0@EHYCHED620>


Halley,

Extensive work was done in filesystem/local/full/smplfsys.cpp
to handle cases when the underlying IHXDataFile object
returns 0 bytes of returns less than requested (or returns
an error).

However, in your case, it looks like the IHXDataFile
is saying it returned enough data, so the code to
handle these cases in smplfsys.cpp is not being
triggered.

When the USB disk is unplugged, what is the behavior
of the IHXDataFile? Does it return 0 bytes when a
::Read() is requested? Does it return an error via
IHXDataFile::GetLastError()?

Eric

=============================================
Eric Hyche (ehyche@real.com)
Technical Lead
RealNetworks, Inc.  

> -----Original Message-----
> From: helix-client-dev-bounces@helixcommunity.org 
> [mailto:helix-client-dev-bounces@helixcommunity.org] On 
> Behalf Of Zhao, Halley
> Sent: Monday, July 14, 2008 5:45 AM
> To: helix-client-dev@helixcommunity.org
> Subject: [Helix-client-dev] how Helix deal with the scenarion 
> that a usbdisk is pluged out during playback?
> 
> When Helix player is playing content on USB disk, then user 
> unplug the USB disk, helix engine will crash in such scenario.
> 
> I test it for helix-player and player_gtk_test on Linux, 
> helix engine will crash in such scenario. 
> 
> On Windows system, Realplayer works well in such scenario, 
> the presentation stopped, but you could open another stream.
> 
>  
> 
> When I looked into some source code at 
> filesystem/local/full/smplfsys.cpp, 
> 
> I found there seems to be some function to deal with such 
> scenario: CheckForCorruptFile().
> 
> However, when I try to debug it, I found the function isn't 
> invoked in the scenario above.
> 
>  
> 
> And I found after the last call to FinishDoRead(), the engine crash.
> 
> But in this last call, for the condition sentence to 
> CheckForCorruptFile():
> 
> if (!pBuffer || actual < m_ulPendingReadCount)
> 
>  
> 
> the pBuffer is valid and actual = 2048, and 
> m_ulPendingReadCount = 2048.
> 
>  
> 
> I think the scenario should be a common error handle for 
> source plugin, 
> 
> Did anybody meet such issue before? Or maybe someone fix it 
> in other branch?
> 
>  
> 
> BR
> 
>  
> 
>  
> 
>  
> 
> ZHAO, Halley (Aihua)
> 
> Email: halley.zhao@intel.com  
> 
> Tel: +86(21)61166476
> 
> iNet: 8821-6476
> 
> SSG/OTC/UMD
> 
>  
> 
> 


From ping at real.com  Tue Jul 15 12:59:10 2008
From: ping at real.com (Henry Ping)
Date: Tue Jul 15 11:32:37 2008
Subject: [Helix-client-dev] 310Atlas will be frozen for branching
In-Reply-To: <00d901c8c676$a0fe7390$db68a8c0@EHYCHED620>
References: <00d901c8c676$a0fe7390$db68a8c0@EHYCHED620>
Message-ID: <13800494E38840E9B5E79E600AF5A285@corp.real.com>

I will start a branch from hxclient_3_1_0_atlas to hxclient_3_4_2_atlas at
1:30pm today.

Please hold off any checkins to hxclient_3_1_0_atlas after 1:30pm until you
receive another email from me unfreezing the branch. It'll take ~2hrs.

Thanks
Henry


From ping at real.com  Tue Jul 15 16:47:25 2008
From: ping at real.com (Henry Ping)
Date: Tue Jul 15 15:20:48 2008
Subject: [Helix-client-dev] 310Atlas is UN-frozen 
In-Reply-To: <13800494E38840E9B5E79E600AF5A285@corp.real.com>
References: <00d901c8c676$a0fe7390$db68a8c0@EHYCHED620>
	<13800494E38840E9B5E79E600AF5A285@corp.real.com>
Message-ID: <6DA86E2A191D48089E8336D1A1E26266@corp.real.com>

 

> -----Original Message-----
> From: helix-client-dev-bounces@helixcommunity.org 
> [mailto:helix-client-dev-bounces@helixcommunity.org] On 
> Behalf Of Henry Ping
> Sent: Tuesday, July 15, 2008 12:59 PM
> To: helix-client-dev@lists.helixcommunity.org
> Cc: liteplayer_dev@real.com
> Subject: [Helix-client-dev] 310Atlas will be frozen for branching
> 
> I will start a branch from hxclient_3_1_0_atlas to 
> hxclient_3_4_2_atlas at 1:30pm today.
> 
> Please hold off any checkins to hxclient_3_1_0_atlas after 
> 1:30pm until you receive another email from me unfreezing the 
> branch. It'll take ~2hrs.
> 
> Thanks
> Henry
> 
> 
> _______________________________________________
> Helix-client-dev mailing list
> Helix-client-dev@helixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev


From halley.zhao at intel.com  Tue Jul 15 17:39:51 2008
From: halley.zhao at intel.com (Zhao, Halley)
Date: Tue Jul 15 16:13:22 2008
Subject: [Helix-client-dev] how Helix deal with the scenarion that a
	usbdisk is pluged out during playback?
In-Reply-To: <010b01c8e687$8bedcc90$db68a8c0@EHYCHED620>
References: <094BCE01AFBE9646AF220B0B3F367AAB03499182@pdsmsx413.ccr.corp.intel.com>
	<010b01c8e687$8bedcc90$db68a8c0@EHYCHED620>
Message-ID: <094BCE01AFBE9646AF220B0B3F367AAB03499762@pdsmsx413.ccr.corp.intel.com>

=A1=A1=A1=A1I met the same symptom as you.
=A1=A1=A1=A1Smplfsys think it has got enough data without error.
=A1=A1=A1=A1
=A1=A1=A1=A1Where is the IHXDataFile for Linux system? Is it =
common/fileio/bufdataf.cpp?
=A1=A1=A1=A1
=A1=A1=A1=A1
=A1=A1=A1=A1>-----Original Message-----
=A1=A1=A1=A1>From: Eric Hyche [mailto:ehyche@real.com]
=A1=A1=A1=A1>Sent: 2008=C4=EA7=D4=C215=C8=D5 22:32
=A1=A1=A1=A1>To: Zhao, Halley; helix-client-dev@helixcommunity.org
=A1=A1=A1=A1>Subject: RE: [Helix-client-dev] how Helix deal with the =
scenarion that a
=A1=A1=A1=A1>usbdisk is pluged out during playback?
=A1=A1=A1=A1>
=A1=A1=A1=A1>
=A1=A1=A1=A1>Halley,
=A1=A1=A1=A1>
=A1=A1=A1=A1>Extensive work was done in =
filesystem/local/full/smplfsys.cpp
=A1=A1=A1=A1>to handle cases when the underlying IHXDataFile object
=A1=A1=A1=A1>returns 0 bytes of returns less than requested (or returns
=A1=A1=A1=A1>an error).
=A1=A1=A1=A1>
=A1=A1=A1=A1>However, in your case, it looks like the IHXDataFile
=A1=A1=A1=A1>is saying it returned enough data, so the code to
=A1=A1=A1=A1>handle these cases in smplfsys.cpp is not being
=A1=A1=A1=A1>triggered.
=A1=A1=A1=A1>
=A1=A1=A1=A1>When the USB disk is unplugged, what is the behavior
=A1=A1=A1=A1>of the IHXDataFile? Does it return 0 bytes when a
=A1=A1=A1=A1>::Read() is requested? Does it return an error via
=A1=A1=A1=A1>IHXDataFile::GetLastError()?
=A1=A1=A1=A1>
=A1=A1=A1=A1>Eric
=A1=A1=A1=A1>
=A1=A1=A1=A1>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=

=A1=A1=A1=A1>Eric Hyche (ehyche@real.com)
=A1=A1=A1=A1>Technical Lead
=A1=A1=A1=A1>RealNetworks, Inc.
=A1=A1=A1=A1>
=A1=A1=A1=A1>> -----Original Message-----
=A1=A1=A1=A1>> From: helix-client-dev-bounces@helixcommunity.org
=A1=A1=A1=A1>> [mailto:helix-client-dev-bounces@helixcommunity.org] On
=A1=A1=A1=A1>> Behalf Of Zhao, Halley
=A1=A1=A1=A1>> Sent: Monday, July 14, 2008 5:45 AM
=A1=A1=A1=A1>> To: helix-client-dev@helixcommunity.org
=A1=A1=A1=A1>> Subject: [Helix-client-dev] how Helix deal with the =
scenarion
=A1=A1=A1=A1>> that a usbdisk is pluged out during playback?
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> When Helix player is playing content on USB disk, then =
user
=A1=A1=A1=A1>> unplug the USB disk, helix engine will crash in such =
scenario.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> I test it for helix-player and player_gtk_test on Linux,
=A1=A1=A1=A1>> helix engine will crash in such scenario.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> On Windows system, Realplayer works well in such =
scenario,
=A1=A1=A1=A1>> the presentation stopped, but you could open another =
stream.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> When I looked into some source code at
=A1=A1=A1=A1>> filesystem/local/full/smplfsys.cpp,
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> I found there seems to be some function to deal with such
=A1=A1=A1=A1>> scenario: CheckForCorruptFile().
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> However, when I try to debug it, I found the function =
isn't
=A1=A1=A1=A1>> invoked in the scenario above.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> And I found after the last call to FinishDoRead(), the =
engine crash.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> But in this last call, for the condition sentence to
=A1=A1=A1=A1>> CheckForCorruptFile():
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> if (!pBuffer || actual < m_ulPendingReadCount)
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> the pBuffer is valid and actual =3D 2048, and
=A1=A1=A1=A1>> m_ulPendingReadCount =3D 2048.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> I think the scenario should be a common error handle for
=A1=A1=A1=A1>> source plugin,
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> Did anybody meet such issue before? Or maybe someone fix =
it
=A1=A1=A1=A1>> in other branch?
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> BR
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> ZHAO, Halley (Aihua)
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> Email: halley.zhao@intel.com =

=A1=A1=A1=A1>>
=A1=A1=A1=A1>> Tel: +86(21)61166476
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> iNet: 8821-6476
=A1=A1=A1=A1>>
=A1=A1=A1=A1>> SSG/OTC/UMD
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1

From halley.zhao at intel.com  Tue Jul 15 23:59:49 2008
From: halley.zhao at intel.com (Zhao, Halley)
Date: Tue Jul 15 22:33:15 2008
Subject: [Helix-client-dev] how Helix deal with the scenarion that
	ausbdisk is pluged out during playback?
In-Reply-To: <094BCE01AFBE9646AF220B0B3F367AAB03499762@pdsmsx413.ccr.corp.intel.com>
References: <094BCE01AFBE9646AF220B0B3F367AAB03499182@pdsmsx413.ccr.corp.intel.com><010b01c8e687$8bedcc90$db68a8c0@EHYCHED620>
	<094BCE01AFBE9646AF220B0B3F367AAB03499762@pdsmsx413.ccr.corp.intel.com>
Message-ID: <094BCE01AFBE9646AF220B0B3F367AAB034999CF@pdsmsx413.ccr.corp.intel.com>

  I haven't fixed the issue, but got some clue:
  1. memory map is used for file-io, see common/fileio/mmapmgr.cpp.
     In GetBlock(), the pBuffer is calculated from the page information, it may be invalid, then when there is a memcpy(), it will crash the engine.
  On Windows system, it used ::IsBadReadPtr()to catch the exception as early as possible. But there is no such check (error handle) for Linux platform.
  2. I tried to find some code works like IsBadReadPtr(), and wrap that in mmapmgr.cpp. see attachment. That works some to me, but need more debug.
  3. after some try above, I found some other issue in smplfsys.cpp
  In function CheckForCorruptFile(), I found it fail to determine it is  a corrupt file because m_ulSize equals to 0.  it is unexpected.
  
  BR
  
  
  >-----Original Message-----
  >From: helix-client-dev-bounces@helixcommunity.org
  >[mailto:helix-client-dev-bounces@helixcommunity.org] On Behalf Of Zhao,
  >Halley
  >Sent: 2008定7埖16晩 8:40
  >To: ehyche@real.com; helix-client-dev@helixcommunity.org
  >Subject: RE: [Helix-client-dev] how Helix deal with the scenarion that
  >ausbdisk is pluged out during playback?
  >
  >  I met the same symptom as you.
  >  Smplfsys think it has got enough data without error.
  >
  >  Where is the IHXDataFile for Linux system? Is it
  >common/fileio/bufdataf.cpp?
  >
  >
  >  >-----Original Message-----
  >  >From: Eric Hyche [mailto:ehyche@real.com]
  >  >Sent: 2008定7埖15晩 22:32
  >  >To: Zhao, Halley; helix-client-dev@helixcommunity.org
  >  >Subject: RE: [Helix-client-dev] how Helix deal with the scenarion that
  >a
  >  >usbdisk is pluged out during playback?
  >  >
  >  >
  >  >Halley,
  >  >
  >  >Extensive work was done in filesystem/local/full/smplfsys.cpp
  >  >to handle cases when the underlying IHXDataFile object
  >  >returns 0 bytes of returns less than requested (or returns
  >  >an error).
  >  >
  >  >However, in your case, it looks like the IHXDataFile
  >  >is saying it returned enough data, so the code to
  >  >handle these cases in smplfsys.cpp is not being
  >  >triggered.
  >  >
  >  >When the USB disk is unplugged, what is the behavior
  >  >of the IHXDataFile? Does it return 0 bytes when a
  >  >::Read() is requested? Does it return an error via
  >  >IHXDataFile::GetLastError()?
  >  >
  >  >Eric
  >  >
  >  >=============================================
  >  >Eric Hyche (ehyche@real.com)
  >  >Technical Lead
  >  >RealNetworks, Inc.
  >  >
  >  >> -----Original Message-----
  >  >> From: helix-client-dev-bounces@helixcommunity.org
  >  >> [mailto:helix-client-dev-bounces@helixcommunity.org] On
  >  >> Behalf Of Zhao, Halley
  >  >> Sent: Monday, July 14, 2008 5:45 AM
  >  >> To: helix-client-dev@helixcommunity.org
  >  >> Subject: [Helix-client-dev] how Helix deal with the scenarion
  >  >> that a usbdisk is pluged out during playback?
  >  >>
  >  >> When Helix player is playing content on USB disk, then user
  >  >> unplug the USB disk, helix engine will crash in such scenario.
  >  >>
  >  >> I test it for helix-player and player_gtk_test on Linux,
  >  >> helix engine will crash in such scenario.
  >  >>
  >  >> On Windows system, Realplayer works well in such scenario,
  >  >> the presentation stopped, but you could open another stream.
  >  >>
  >  >>
  >  >>
  >  >> When I looked into some source code at
  >  >> filesystem/local/full/smplfsys.cpp,
  >  >>
  >  >> I found there seems to be some function to deal with such
  >  >> scenario: CheckForCorruptFile().
  >  >>
  >  >> However, when I try to debug it, I found the function isn't
  >  >> invoked in the scenario above.
  >  >>
  >  >>
  >  >>
  >  >> And I found after the last call to FinishDoRead(), the engine crash.
  >  >>
  >  >> But in this last call, for the condition sentence to
  >  >> CheckForCorruptFile():
  >  >>
  >  >> if (!pBuffer || actual < m_ulPendingReadCount)
  >  >>
  >  >>
  >  >>
  >  >> the pBuffer is valid and actual = 2048, and
  >  >> m_ulPendingReadCount = 2048.
  >  >>
  >  >>
  >  >>
  >  >> I think the scenario should be a common error handle for
  >  >> source plugin,
  >  >>
  >  >> Did anybody meet such issue before? Or maybe someone fix it
  >  >> in other branch?
  >  >>
  >  >>
  >  >>
  >  >> BR
  >  >>
  >  >>
  >  >>
  >  >>
  >  >>
  >  >>
  >  >>
  >  >> ZHAO, Halley (Aihua)
  >  >>
  >  >> Email: halley.zhao@intel.com 
  >  >>
  >  >> Tel: +86(21)61166476
  >  >>
  >  >> iNet: 8821-6476
  >  >>
  >  >> SSG/OTC/UMD
  >  >>
  >  >>
  >  >>
  >  >>
  >
  >
  >_______________________________________________
  >Helix-client-dev mailing list
  >Helix-client-dev@helixcommunity.org
  >http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
-------------- next part --------------
#include 
#include 
// globals

unsigned char g_ucCalledByTestRoutine = 0;
jmp_buf g_pBuf;
void __cdecl MemTestHandler ( int nSig)
{
     if ( g_ucCalledByTestRoutine ) longjmp ( g_pBuf, 1);
}
bool _IsBadReadPtr(const void* pv, unsigned long ulSize)
{
    char* pc;
    void(*pPrev) ( int sig);
    g_ucCalledByTestRoutine = 1;
    if(setjmp ( g_pBuf))
    {
         return true;
    }
    pPrev = signal (SIGSEGV, MemTestHandler);
    pc = (char*) malloc ( ulSize);
    memcpy ( pc, pv, ulSize);
    free(pc);
    g_ucCalledByTestRoutine = 0;
    signal ( SIGSEGV, pPrev);
    return false;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: common-fileio-mmapmgr.cpp
Type: application/octet-stream
Size: 33128 bytes
Desc: common-fileio-mmapmgr.cpp
Url : http://lists.helixcommunity.org/pipermail/helix-client-dev/attachments/20080716/6a355bde/common-fileio-mmapmgr-0001.obj
From halley.zhao at intel.com  Wed Jul 16 02:53:28 2008
From: halley.zhao at intel.com (Zhao, Halley)
Date: Wed Jul 16 01:26:55 2008
Subject: [Helix-client-dev] how Helix deal with the scenarion that
	ausbdisk is pluged out during playback?
In-Reply-To: <094BCE01AFBE9646AF220B0B3F367AAB0252D054@pdsmsx413.ccr.corp.intel.com>
References: <094BCE01AFBE9646AF220B0B3F367AAB03499182@pdsmsx413.ccr.corp.intel.com><010b01c8e687$8bedcc90$db68a8c0@EHYCHED620>
	<094BCE01AFBE9646AF220B0B3F367AAB03499762@pdsmsx413.ccr.corp.intel.com>
	<094BCE01AFBE9646AF220B0B3F367AAB0252D054@pdsmsx413.ccr.corp.intel.com>
Message-ID: <094BCE01AFBE9646AF220B0B3F367AAB03499AE5@pdsmsx413.ccr.corp.intel.com>

=A1=A1=A1=A1Another step forward.
=A1=A1=A1=A1If I take (m_ulSize =3D=3D 0) as corrupt file in =
CheckForCorruptFile().
=A1=A1=A1=A1Then mp3 could be handled gracefully in this scenario-- =
report error and stop the playback, then you could open another stream =
for playback.
=A1=A1=A1=A1
=A1=A1=A1=A1But for rmvb, I got an assert fail in File: intrstrm.cpp, =
Line 1288. ( I use debug version here).
=A1=A1=A1=A1More debug needed.
=A1=A1=A1=A1
=A1=A1=A1=A1
=A1=A1=A1=A1
=A1=A1=A1=A1>-----Original Message-----
=A1=A1=A1=A1>From: Zhao, Halley
=A1=A1=A1=A1>Sent: 2008=C4=EA7=D4=C216=C8=D5 15:00
=A1=A1=A1=A1>To: Zhao, Halley; ehyche@real.com; =
helix-client-dev@helixcommunity.org
=A1=A1=A1=A1>Subject: RE: [Helix-client-dev] how Helix deal with the =
scenarion that
=A1=A1=A1=A1>ausbdisk is pluged out during playback?
=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1I haven't fixed the issue, but got some clue:
=A1=A1=A1=A1>=A1=A1=A1=A11. memory map is used for file-io, see =
common/fileio/mmapmgr.cpp.
=A1=A1=A1=A1>=A1=A1=A1=A1   In GetBlock(), the pBuffer is calculated =
from the page information,
=A1=A1=A1=A1>it may be invalid, then when there is a memcpy(), it will =
crash the engine.
=A1=A1=A1=A1>=A1=A1=A1=A1On Windows system, it used ::IsBadReadPtr()to =
catch the exception as
=A1=A1=A1=A1>early as possible. But there is no such check (error =
handle) for Linux
=A1=A1=A1=A1>platform.
=A1=A1=A1=A1>=A1=A1=A1=A12. I tried to find some code works like =
IsBadReadPtr(), and wrap that
=A1=A1=A1=A1>in mmapmgr.cpp. see attachment. That works some to me, but =
need more debug.
=A1=A1=A1=A1>=A1=A1=A1=A13. after some try above, I found some other =
issue in smplfsys.cpp
=A1=A1=A1=A1>=A1=A1=A1=A1In function CheckForCorruptFile(), I found it =
fail to determine it is
=A1=A1=A1=A1>a corrupt file because m_ulSize equals to 0.  it is =
unexpected.
=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1BR
=A1=A1=A1=A1>
=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>-----Original Message-----
=A1=A1=A1=A1>=A1=A1=A1=A1>From: =
helix-client-dev-bounces@helixcommunity.org
=A1=A1=A1=A1>=A1=A1=A1=A1>[mailto:helix-client-dev-bounces@helixcommunity=
.org] On Behalf Of
=A1=A1=A1=A1>Zhao,
=A1=A1=A1=A1>=A1=A1=A1=A1>Halley
=A1=A1=A1=A1>=A1=A1=A1=A1>Sent: 2008=C4=EA7=D4=C216=C8=D5 8:40
=A1=A1=A1=A1>=A1=A1=A1=A1>To: ehyche@real.com; =
helix-client-dev@helixcommunity.org
=A1=A1=A1=A1>=A1=A1=A1=A1>Subject: RE: [Helix-client-dev] how Helix deal =
with the scenarion that
=A1=A1=A1=A1>=A1=A1=A1=A1>ausbdisk is pluged out during playback?
=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1I met the same symptom as you.
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1Smplfsys think it has got enough =
data without error.
=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1Where is the IHXDataFile for Linux =
system? Is it
=A1=A1=A1=A1>=A1=A1=A1=A1>common/fileio/bufdataf.cpp?
=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>-----Original Message-----
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>From: Eric Hyche =
[mailto:ehyche@real.com]
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>Sent: 2008=C4=EA7=D4=C215=C8=D5 =
22:32
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>To: Zhao, Halley; =
helix-client-dev@helixcommunity.org
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>Subject: RE: [Helix-client-dev] =
how Helix deal with the scenarion
=A1=A1=A1=A1>that
=A1=A1=A1=A1>=A1=A1=A1=A1>a
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>usbdisk is pluged out during =
playback?
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>Halley,
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>Extensive work was done in =
filesystem/local/full/smplfsys.cpp
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>to handle cases when the =
underlying IHXDataFile object
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>returns 0 bytes of returns less =
than requested (or returns
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>an error).
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>However, in your case, it looks =
like the IHXDataFile
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>is saying it returned enough =
data, so the code to
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>handle these cases in =
smplfsys.cpp is not being
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>triggered.
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>When the USB disk is unplugged, =
what is the behavior
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>of the IHXDataFile? Does it =
return 0 bytes when a
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>::Read() is requested? Does it =
return an error via
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>IHXDataFile::GetLastError()?
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>Eric
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>Eric Hyche (ehyche@real.com)
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>Technical Lead
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>RealNetworks, Inc.
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> -----Original Message-----
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> From: =
helix-client-dev-bounces@helixcommunity.org
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> =
[mailto:helix-client-dev-bounces@helixcommunity.org] On
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> Behalf Of Zhao, Halley
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> Sent: Monday, July 14, 2008 =
5:45 AM
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> To: =
helix-client-dev@helixcommunity.org
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> Subject: [Helix-client-dev] how =
Helix deal with the scenarion
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> that a usbdisk is pluged out =
during playback?
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> When Helix player is playing =
content on USB disk, then user
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> unplug the USB disk, helix =
engine will crash in such scenario.
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> I test it for helix-player and =
player_gtk_test on Linux,
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> helix engine will crash in such =
scenario.
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> On Windows system, Realplayer =
works well in such scenario,
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> the presentation stopped, but =
you could open another stream.
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> When I looked into some source =
code at
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> =
filesystem/local/full/smplfsys.cpp,
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> I found there seems to be some =
function to deal with such
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> scenario: =
CheckForCorruptFile().
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> However, when I try to debug =
it, I found the function isn't
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> invoked in the scenario above.
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> And I found after the last call =
to FinishDoRead(), the engine
=A1=A1=A1=A1>crash.
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> But in this last call, for the =
condition sentence to
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> CheckForCorruptFile():
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> if (!pBuffer || actual < =
m_ulPendingReadCount)
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> the pBuffer is valid and actual =
=3D 2048, and
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> m_ulPendingReadCount =3D 2048.
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> I think the scenario should be =
a common error handle for
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> source plugin,
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> Did anybody meet such issue =
before? Or maybe someone fix it
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> in other branch?
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> BR
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> ZHAO, Halley (Aihua)
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> Email: halley.zhao@intel.com =

=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> Tel: +86(21)61166476
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> iNet: 8821-6476
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>> SSG/OTC/UMD
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>=A1=A1=A1=A1>>
=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>
=A1=A1=A1=A1>=A1=A1=A1=A1>_______________________________________________=

=A1=A1=A1=A1>=A1=A1=A1=A1>Helix-client-dev mailing list
=A1=A1=A1=A1>=A1=A1=A1=A1>Helix-client-dev@helixcommunity.org
=A1=A1=A1=A1>=A1=A1=A1=A1>http://lists.helixcommunity.org/mailman/listinf=
o/helix-client-dev

From weian.chen at intel.com  Thu Jul 17 01:46:17 2008
From: weian.chen at intel.com (Chen, Weian)
Date: Thu Jul 17 00:19:25 2008
Subject: [helix-client-dev] CR: Add black frame detection in thumbnail,
	so we can get valid frame(non-blank) form the video stream as the
	thumbnail.
Message-ID: 

Skipped content of type multipart/alternative-------------- next part --------------
A non-text attachment was scrubbed...
Name: dbus-nonblank-thumb.diff
Type: application/octet-stream
Size: 7090 bytes
Desc: dbus-nonblank-thumb.diff
Url : http://lists.helixcommunity.org/pipermail/helix-client-dev/attachments/20080717/4e39a9f7/dbus-nonblank-thumb-0001.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hxclient-nonblank-thumbnail.diff
Type: application/octet-stream
Size: 1371 bytes
Desc: hxclient-nonblank-thumbnail.diff
Url : http://lists.helixcommunity.org/pipermail/helix-client-dev/attachments/20080717/4e39a9f7/hxclient-nonblank-thumbnail-0001.obj
From halley.zhao at intel.com  Thu Jul 17 01:50:30 2008
From: halley.zhao at intel.com (Zhao, Halley)
Date: Thu Jul 17 00:23:45 2008
Subject: [Midplayer-private-dev] [helix-client-dev] CR: Add black
	framedetection in thumbnail,
	so we can get valid frame(non-blank) form the video stream as
	thethumbnail.
In-Reply-To: 
References: 
Message-ID: <094BCE01AFBE9646AF220B0B3F367AAB03499F4A@pdsmsx413.ccr.corp.intel.com>

It fix bug #8077.

https://bugs.helixcommunity.org/show_bug.cgi?id=8077

thanks Weian.

 

________________________________

From: midplayer-private-dev-bounces@lists.helixcommunity.org [mailto:midplayer-private-dev-bounces@lists.helixcommunity.org] On Behalf Of Chen, Weian
Sent: 2008定7埖17晩 16:46
To: helix-client-dev@helixcommunity.org
Cc: midplayer-private-dev@lists.helixcommunity.org
Subject: [Midplayer-private-dev] [helix-client-dev] CR: Add black framedetection in thumbnail,so we can get valid frame(non-blank) form the video stream as thethumbnail.

 

Synopsis: 

  Add black frame detection support in thumbnail, so we can get valid frame (non-blank) form the video stream as the thumbnail.

 

Overview: 

   Currently, we always get first key frame of a stream as the thumbnail, and many of these frames are black, so we can¨t get the needed information. Then we add black frame detection, until we get a valid frame then stop doing thumbnail.

 

Files Added:

  None

 

Files Modified:

  player/hxclientkit/pub/HXClientCallbacks.h

  player/hxclientkit/src/platform/unix/CHXClientThumbnailUnix.cpp

  player/kit/dbus-server/pub/hxplayer.h

  player/kit/dbus-server/src/hxplayer.cpp

  player/kit/dbus-server/src/helix-dbus-server.cpp

 

Image Size and Heap Use impact (Client -Only):

  Little

 

Platforms and Profiles Affected:

  platform:   linux-2.2-libc6-gcc32-i586

  profile:      helix-client-all-defines

 

Distribution Libraries Affected:

   

 

Distribution library impact and planned action:

  

 

Platforms and Profiles Build Verified:

  Set BIF branch  -> hxdbus_3_1_0_atlas

  Set Target(s)     -> dbus_server_with_video

  Set Profile        -> helix-client-all-defines

  System ID        -> linux-2.2-libc6-gcc32-i586

 

Branch: 

  HEAD, hxclient_3_1_0_atlas

 

Copyright assignment: 

2.      Intel has signed and delivered a Joint Copyright Assignment

           to RealNetworks, and received acknowledgment that the 

           agreement was received.  

 

Files Attached:

  hxclient-nonblank-thumbnail.diff

  dbus-nonblank-thumb.diff

 

Weian

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/helix-client-dev/attachments/20080717/311bc558/attachment.html
From halley.zhao at intel.com  Thu Jul 17 01:58:21 2008
From: halley.zhao at intel.com (Zhao, Halley)
Date: Thu Jul 17 00:31:28 2008
Subject: [Helix-client-dev] CR: Error handler for filesystem exception due
	to usb disk unplug
Message-ID: <094BCE01AFBE9646AF220B0B3F367AAB03499F5B@pdsmsx413.ccr.corp.intel.com>

Skipped content of type multipart/alternative-------------- next part --------------
Index: full/smplfsys.cpp
===================================================================
RCS file: /cvsroot/filesystem/local/full/smplfsys.cpp,v
retrieving revision 1.46.2.1
diff -u -w -r1.46.2.1 smplfsys.cpp
--- full/smplfsys.cpp	4 Feb 2008 05:49:53 -0000	1.46.2.1
+++ full/smplfsys.cpp	17 Jul 2008 05:05:08 -0000
@@ -1941,7 +1941,7 @@
             ulDesiredReadCount = actual < m_ulPendingReadCount ? m_ulPendingReadCount-actual : 0;
         }
 
-        if (m_ulPos+ulDesiredReadCount <= m_ulSize)
+        if (m_ulPos+ulDesiredReadCount <= m_ulSize || m_ulSize == 0)
         {
             statusReturned = HXR_CORRUPT_FILE;
             bErrorToBeReported = TRUE;
-------------- next part --------------
Index: mmapmgr.cpp
===================================================================
RCS file: /cvsroot/common/fileio/mmapmgr.cpp,v
retrieving revision 1.16
diff -u -w -r1.16 mmapmgr.cpp
--- mmapmgr.cpp	6 Jul 2007 20:35:11 -0000	1.16
+++ mmapmgr.cpp	17 Jul 2008 05:04:10 -0000
@@ -73,6 +73,8 @@
 #if defined(_UNIX) && !defined(_BEOS)
 #include 
 #endif
+#include 
+#include 
 
 #include "hxcom.h"
 #include "hxtypes.h"
@@ -605,6 +607,43 @@
     }
 }
 
+static unsigned char g_ucCalledByTestRoutine = 0;
+static jmp_buf g_pBuf;
+
+void  MemTestHandler ( int nSig) __attribute__ ((cdecl));
+void  MemTestHandler ( int nSig) 
+{
+     if ( g_ucCalledByTestRoutine ) 
+     {
+        longjmp ( g_pBuf, 1);
+     }
+
+
+}
+bool _IsBadReadPtr(const void* pv, unsigned long ulSize)
+{
+        
+    char* pc;
+    void(*pPrev) ( int sig);
+
+    g_ucCalledByTestRoutine = 1;
+    if(setjmp ( g_pBuf))
+    {
+         return true;
+    }
+    pPrev = signal (SIGBUS, MemTestHandler);
+    if(pPrev == SIG_ERR)
+    {
+       printf("cant register my error handle\n");
+    }
+    
+    pc = (char*) malloc ( ulSize);
+    memcpy ( pc, pv, ulSize);
+    g_ucCalledByTestRoutine = 0;
+    free(pc);
+    signal ( SIGBUS, pPrev);
+    return false;
+}
 
 UINT32
 MemoryMapManager::GetBlock(REF(IHXBuffer*) pBuffer, void* pHandle,
@@ -726,6 +765,38 @@
 	pEntry->pPage =
 	    mmap(0, ulChunkSize, PROT_READ, MAP_PRIVATE, 
 	    pInfo->Descriptor, ulNeededPageNumber * m_ulChunkSize);
+	if (pEntry->pPage == 0)
+	{
+	    pEntry->pPage = MAP_FAIL;
+	}
+	else
+	{
+            // When MapViewOfFile is called it returns a handle to a page of memory that
+            // the system no longer knows about so an exception occurs.  It is usally a 
+            // EXCEPTION_IN_PAGE_ERROR. Reading the documentation it appears that all access
+            // to handles returned from memory mapped I/O should be wrapped in try/catch blocks 
+            // since the handles may be invalid.  I added try/catch logic to test this out and
+            // it fixes the bug.  The main problem I'm not sure about is that this code is also 
+            // used by the server and IsBadReadPtr may iterate over the memory block which can 
+            // be slow.  Because this is the layer of code that "knows" it is using memory mapped 
+            // I/O this is probably where the try/catch code belongs so that if an exception
+            // occurs then it can return an error and no buffer since the buffer wouldn't be
+            // accessible anyway.
+            HXBOOL bInvalid = TRUE;
+
+            try
+            {
+               bInvalid = _IsBadReadPtr(pEntry->pPage, ulChunkSize);
+            }
+            catch (...)
+            {
+            }
+
+            if (bInvalid)
+            {
+               pEntry->pPage = MAP_FAIL;
+            }
+	}
 #else
 	pEntry->pPage = MapViewOfFile(pInfo->Descriptor, FILE_MAP_READ, 0,
 	    ulNeededPageNumber * m_ulChunkSize, ulChunkSize);
From ehyche at real.com  Thu Jul 17 08:13:40 2008
From: ehyche at real.com (Eric Hyche)
Date: Thu Jul 17 06:46:40 2008
Subject: [Midplayer-private-dev] [helix-client-dev] CR: Add black
	frame	detection in thumbnail,
	so we can get valid frame(non-blank) form the video stream as
	the	thumbnail.
In-Reply-To: 
References: 
Message-ID: <003701c8e81f$b3172d90$194588b0$@com>

Weian,

Here are my comments on this change:

+    	for (int i = 0; i < width; i++)
+    	{
+        	SAD += src [(pixNumber >> 1) + i];
+    	}
+    	for (int i = 0; i < width; i++)
+    	{
+        	SAD += src [(pixNumber >> 1) + width + i];
+    	}

This doesn't really take the middle two rows of the frame. It takes a partial row, then a full row, then another partial row.

If you really want to middle two rows, then this should be:

     UINT32 ulRowBegin = (height >> 1) * width;
     for (UINT32 i = 0; i < width * 2; i++)
     {
         SAD += src[ulRowBegin + i];
     }

Similar idea for the RGB24 and RGB32 cases.

Rest looks good.

Eric

=======================================
Eric Hyche (ehyche@real.com)
Senior Technical Lead
RealNetworks, Inc.


>-----Original Message-----
>From: midplayer-private-dev-bounces@lists.helixcommunity.org [mailto:midplayer-private-dev-
>bounces@lists.helixcommunity.org] On Behalf Of Chen, Weian
>Sent: Thursday, July 17, 2008 4:46 AM
>To: helix-client-dev@helixcommunity.org
>Cc: midplayer-private-dev@lists.helixcommunity.org
>Subject: [Midplayer-private-dev] [helix-client-dev] CR: Add black frame detection in thumbnail, so we
>can get valid frame(non-blank) form the video stream as the thumbnail.
>
>Synopsis:
>
>  Add black frame detection support in thumbnail, so we can get valid frame (non-blank) form the video
>stream as the thumbnail.
>
>
>
>Overview:
>
>   Currently, we always get first key frame of a stream as the thumbnail, and many of these frames are
>black, so we can't get the needed information. Then we add black frame detection, until we get a valid
>frame then stop doing thumbnail.
>
>
>
>Files Added:
>
>  None
>
>
>
>Files Modified:
>
>  player/hxclientkit/pub/HXClientCallbacks.h
>
>  player/hxclientkit/src/platform/unix/CHXClientThumbnailUnix.cpp
>
>  player/kit/dbus-server/pub/hxplayer.h
>
>  player/kit/dbus-server/src/hxplayer.cpp
>
>  player/kit/dbus-server/src/helix-dbus-server.cpp
>
>
>
>Image Size and Heap Use impact (Client -Only):
>
>  Little
>
>
>
>Platforms and Profiles Affected:
>
>  platform:   linux-2.2-libc6-gcc32-i586
>
>  profile:      helix-client-all-defines
>
>
>
>Distribution Libraries Affected:
>
>   
>
>
>
>Distribution library impact and planned action:
>
>  
>
>
>
>Platforms and Profiles Build Verified:
>
>  Set BIF branch  -> hxdbus_3_1_0_atlas
>
>  Set Target(s)     -> dbus_server_with_video
>
>  Set Profile        -> helix-client-all-defines
>
>  System ID        -> linux-2.2-libc6-gcc32-i586
>
>
>
>Branch:
>
>  HEAD, hxclient_3_1_0_atlas
>
>
>
>Copyright assignment: 
>
>2.      Intel has signed and delivered a Joint Copyright Assignment
>
>           to RealNetworks, and received acknowledgment that the
>
>           agreement was received.
>
>
>
>Files Attached:
>
>  hxclient-nonblank-thumbnail.diff
>
>  dbus-nonblank-thumb.diff
>
>
>
>Weian
>
>



From ehyche at real.com  Thu Jul 17 09:30:03 2008
From: ehyche at real.com (Eric Hyche)
Date: Thu Jul 17 08:03:06 2008
Subject: [Helix-client-dev] RE: [Filesystem-dev] CR: Error handler for
	filesystem exception due to	usb disk unplug
In-Reply-To: <094BCE01AFBE9646AF220B0B3F367AAB03499F5B@pdsmsx413.ccr.corp.intel.com>
References: <094BCE01AFBE9646AF220B0B3F367AAB03499F5B@pdsmsx413.ccr.corp.intel.com>
Message-ID: <004501c8e82a$5ed53280$1c7f9780$@com>


Halley,

Actually I think we should fix bug 8471 at a different level. I noticed that on Mac OSX, we do a check in MemoryMapDataFile::Bind()
to check if the disk is ejectable and if it is, we disable memory-mapped I/O:

    // if a windows share (smb) is shut down remotely then if
    // we're memory-mapping we crash. This happened with the
    // windows implementation of MemoryMapDataFile ages ago,
    // and I'm pulling over their solution which is to ensure
    // that memory mapping does not happen unless the disk is
    // local AND non-ejectable.
    if (!CHXFileSpecUtils::IsDiskLocal(dirSpec) || CHXFileSpecUtils::IsDiskEjectable(dirSpec))
    {
        bMemMappingOK = false;
    }

Seems like we could do something similar on Linux. Unfortunately, CHXFileSpecUtils::IsDiskEjectable() currently always returns FALSE
on Unix. I think if we added a similar check for IsDiskEjectable() and actually implemented IsDiskEjectable() on Unix, then what
would happen would be that memory-mapped I/O would be disabled for USB disks.

I believe one of our devs has verified that if memory-mapped I/O is disabled, then this solves the crash in 8471. But I think he was
just testing this by hard-coding it to disable memory-mapped I/O. I think what I described above is the proper way to disable
memory-mapped I/O for USB disks.

Halley, do you want to make this change, or you do want to have one of our devs do it?

Eric

=======================================
Eric Hyche (ehyche@real.com)
Senior Technical Lead
RealNetworks, Inc.


>-----Original Message-----
>From: filesystem-dev-bounces@helixcommunity.org [mailto:filesystem-dev-bounces@helixcommunity.org] On
>Behalf Of Zhao, Halley
>Sent: Thursday, July 17, 2008 4:58 AM
>To: common-dev@helixcommunity.org; filesystem-dev@helixcommunity.org
>Cc: helix-client-dev@helixcommunity.org; midplayer-private-dev@helixcommunity.org
>Subject: [Filesystem-dev] CR: Error handler for filesystem exception due to usb disk unplug
>
>    I'm not familiar with file system plugin, please kindly review the patch and give your suggestion.
>
>    Great thanks.
>
>
>
>Synopsis:
>
>    The patch fix bug #8471: Device hang up after play music from USB then plug out and plug in the
>USB.
>
>    I added error handle for usb disk unplug exception.
>
>
>
>Overview:
>
>  ?Memory map is used in helix plugin for file io, In GetBlock() of common/fileio/mmapmgr.cpp,
>
>the pBuffer address is calculated from the memory page information. it may be invalid due to the
>device being removed;
>
>then when there is a memcpy() in the future, it will crash the engine.
>
>??On Windows system, it tests IsBadReadPtr()to catch the exception as early as possible.
>
>But there is no such check (error handle) for Linux platform. I added a function to act as
>IsBadReadPtr() to catch the exception.
>
>
>
>    After memory map exception (MMAP_EOF_EXCEPTION) occurred, the Read() function in
>common/fileio/platform/unix/mmapdatf.cpp
>
>will regress to normal_read. and it will consume some data which has been mapped in memory.
>
>then in CheckForCorruptFile() of filesystem/local/full/smplfsys.cpp, we should try to consider this
>situation.
>
>and in this scenario file size (m_ulSize) isn't initialized. We could determine it is a corrupt file
>depends on m_ulSize equal to 0.
>
>
>
>Files Added:
>
>       No file added
>
>Files Modified:
>
>    common/fileio/mmapmgr.cpp
>
>        add function _IsBadReadPtr() to detect whether the file is available, and try to catch the
>exception due to device removed.
>
>    filesystem/local/full/smplfsys.cpp
>
>        file size (m_ulSize) equal to 0 means a corrupt file.
>
>
>
>Image Size and Heap Use impact (Client -Only):
>
>    little
>
>Platforms and Profiles Affected:
>
>    platform:   linux-2.2-libc6-gcc32-i586
>
>    profile:    helix-client-all-defines
>
>
>
>Distribution Libraries Affected:
>
>    
>
>Distribution library impact and planned action:
>
>    
>
>Platforms and Profiles Build Verified:
>
>    Set BIF branch  -> hxclient_3_1_0_atlas_restricted
>
>    Set Target(s)   -> player_mid_all_installers (or splay)
>
>    Set Profile     -> helix-client-all-defines
>
>    System ID       -> linux-2.2-libc6-gcc32-i586
>
>Branch:
>
>    HEAD
>
>Copyright assignment: 
>
>   2.      Intel has signed and delivered a Joint Copyright Assignment
>
>           to RealNetworks, and received acknowledgment that the
>
>           agreement was received.
>
>Files Attached:
>
>    common-fileio-mmapmgr.cpp.diff.txt
>
>    filesystem-local-smplsys.cpp.diff.txt
>
>
>
>ZHAO, Halley (Aihua)
>
>Email: halley.zhao@intel.com 
>
>Tel: +86(21)61166476
>
>iNet: 8821-6476
>
>SSG/OTC/UMD
>
>



From halley.zhao at intel.com  Thu Jul 17 17:23:19 2008
From: halley.zhao at intel.com (Zhao, Halley)
Date: Thu Jul 17 15:56:34 2008
Subject: [Helix-client-dev] RE: [Filesystem-dev] CR: Error handler for
	filesystem exception due to	usb disk unplug
In-Reply-To: <004501c8e82a$5ed53280$1c7f9780$@com>
References: <094BCE01AFBE9646AF220B0B3F367AAB03499F5B@pdsmsx413.ccr.corp.intel.com>
	<004501c8e82a$5ed53280$1c7f9780$@com>
Message-ID: <094BCE01AFBE9646AF220B0B3F367AAB034DAF14@pdsmsx413.ccr.corp.intel.com>

=A1=A1=A1=A1Hi Eric:
=A1=A1=A1=A1Agree with you.
=A1=A1=A1=A1And I'd like RealN assign one dev to fix it.
=A1=A1=A1=A1Thanks
=A1=A1=A1=A1
=A1=A1=A1=A1
=A1=A1=A1=A1>-----Original Message-----
=A1=A1=A1=A1>From: Eric Hyche [mailto:ehyche@real.com]
=A1=A1=A1=A1>Sent: 2008=C4=EA7=D4=C218=C8=D5 0:30
=A1=A1=A1=A1>To: Zhao, Halley; common-dev@helixcommunity.org;
=A1=A1=A1=A1>filesystem-dev@helixcommunity.org
=A1=A1=A1=A1>Cc: helix-client-dev@helixcommunity.org;
=A1=A1=A1=A1>midplayer-private-dev@helixcommunity.org
=A1=A1=A1=A1>Subject: RE: [Filesystem-dev] CR: Error handler for =
filesystem exception
=A1=A1=A1=A1>due to usb disk unplug
=A1=A1=A1=A1>
=A1=A1=A1=A1>
=A1=A1=A1=A1>Halley,
=A1=A1=A1=A1>
=A1=A1=A1=A1>Actually I think we should fix bug 8471 at a different =
level. I noticed that
=A1=A1=A1=A1>on Mac OSX, we do a check in MemoryMapDataFile::Bind()
=A1=A1=A1=A1>to check if the disk is ejectable and if it is, we disable =
memory-mapped
=A1=A1=A1=A1>I/O:
=A1=A1=A1=A1>
=A1=A1=A1=A1>    // if a windows share (smb) is shut down remotely then =
if
=A1=A1=A1=A1>    // we're memory-mapping we crash. This happened with =
the
=A1=A1=A1=A1>    // windows implementation of MemoryMapDataFile ages =
ago,
=A1=A1=A1=A1>    // and I'm pulling over their solution which is to =
ensure
=A1=A1=A1=A1>    // that memory mapping does not happen unless the disk =
is
=A1=A1=A1=A1>    // local AND non-ejectable.
=A1=A1=A1=A1>    if (!CHXFileSpecUtils::IsDiskLocal(dirSpec) ||
=A1=A1=A1=A1>CHXFileSpecUtils::IsDiskEjectable(dirSpec))
=A1=A1=A1=A1>    {
=A1=A1=A1=A1>        bMemMappingOK =3D false;
=A1=A1=A1=A1>    }
=A1=A1=A1=A1>
=A1=A1=A1=A1>Seems like we could do something similar on Linux. =
Unfortunately,
=A1=A1=A1=A1>CHXFileSpecUtils::IsDiskEjectable() currently always =
returns FALSE
=A1=A1=A1=A1>on Unix. I think if we added a similar check for =
IsDiskEjectable() and
=A1=A1=A1=A1>actually implemented IsDiskEjectable() on Unix, then what
=A1=A1=A1=A1>would happen would be that memory-mapped I/O would be =
disabled for USB disks.
=A1=A1=A1=A1>
=A1=A1=A1=A1>I believe one of our devs has verified that if =
memory-mapped I/O is disabled,
=A1=A1=A1=A1>then this solves the crash in 8471. But I think he was
=A1=A1=A1=A1>just testing this by hard-coding it to disable =
memory-mapped I/O. I think
=A1=A1=A1=A1>what I described above is the proper way to disable
=A1=A1=A1=A1>memory-mapped I/O for USB disks.
=A1=A1=A1=A1>
=A1=A1=A1=A1>Halley, do you want to make this change, or you do want to =
have one of our
=A1=A1=A1=A1>devs do it?
=A1=A1=A1=A1>
=A1=A1=A1=A1>Eric
=A1=A1=A1=A1>
=A1=A1=A1=A1>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=A1=A1=A1=A1>Eric Hyche (ehyche@real.com)
=A1=A1=A1=A1>Senior Technical Lead
=A1=A1=A1=A1>RealNetworks, Inc.
=A1=A1=A1=A1>
=A1=A1=A1=A1>
=A1=A1=A1=A1>>-----Original Message-----
=A1=A1=A1=A1>>From: filesystem-dev-bounces@helixcommunity.org
=A1=A1=A1=A1>[mailto:filesystem-dev-bounces@helixcommunity.org] On
=A1=A1=A1=A1>>Behalf Of Zhao, Halley
=A1=A1=A1=A1>>Sent: Thursday, July 17, 2008 4:58 AM
=A1=A1=A1=A1>>To: common-dev@helixcommunity.org; =
filesystem-dev@helixcommunity.org
=A1=A1=A1=A1>>Cc: helix-client-dev@helixcommunity.org;
=A1=A1=A1=A1>midplayer-private-dev@helixcommunity.org
=A1=A1=A1=A1>>Subject: [Filesystem-dev] CR: Error handler for filesystem =
exception due
=A1=A1=A1=A1>to usb disk unplug
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    I'm not familiar with file system plugin, please =
kindly review the
=A1=A1=A1=A1>patch and give your suggestion.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    Great thanks.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Synopsis:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    The patch fix bug #8471: Device hang up after play =
music from USB then
=A1=A1=A1=A1>plug out and plug in the
=A1=A1=A1=A1>>USB.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    I added error handle for usb disk unplug exception.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Overview:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>  =A1=A1Memory map is used in helix plugin for file io, In =
GetBlock() of
=A1=A1=A1=A1>common/fileio/mmapmgr.cpp,
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>the pBuffer address is calculated from the memory page =
information. it may
=A1=A1=A1=A1>be invalid due to the
=A1=A1=A1=A1>>device being removed;
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>then when there is a memcpy() in the future, it will crash =
the engine.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>=A1=A1=A1=A1On Windows system, it tests IsBadReadPtr()to =
catch the exception as
=A1=A1=A1=A1>early as possible.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>But there is no such check (error handle) for Linux =
platform. I added a
=A1=A1=A1=A1>function to act as
=A1=A1=A1=A1>>IsBadReadPtr() to catch the exception.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    After memory map exception (MMAP_EOF_EXCEPTION) =
occurred, the Read()
=A1=A1=A1=A1>function in
=A1=A1=A1=A1>>common/fileio/platform/unix/mmapdatf.cpp
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>will regress to normal_read. and it will consume some data =
which has been
=A1=A1=A1=A1>mapped in memory.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>then in CheckForCorruptFile() of =
filesystem/local/full/smplfsys.cpp, we
=A1=A1=A1=A1>should try to consider this
=A1=A1=A1=A1>>situation.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>and in this scenario file size (m_ulSize) isn't =
initialized. We could
=A1=A1=A1=A1>determine it is a corrupt file
=A1=A1=A1=A1>>depends on m_ulSize equal to 0.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Files Added:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>       No file added
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Files Modified:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    common/fileio/mmapmgr.cpp
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>        add function _IsBadReadPtr() to detect whether the =
file is
=A1=A1=A1=A1>available, and try to catch the
=A1=A1=A1=A1>>exception due to device removed.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    filesystem/local/full/smplfsys.cpp
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>        file size (m_ulSize) equal to 0 means a corrupt =
file.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Image Size and Heap Use impact (Client -Only):
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    little
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Platforms and Profiles Affected:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    platform:   linux-2.2-libc6-gcc32-i586
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    profile:    helix-client-all-defines
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Distribution Libraries Affected:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Distribution library impact and planned action:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Platforms and Profiles Build Verified:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    Set BIF branch  -> hxclient_3_1_0_atlas_restricted
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    Set Target(s)   -> player_mid_all_installers (or =
splay)
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    Set Profile     -> helix-client-all-defines
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    System ID       -> linux-2.2-libc6-gcc32-i586
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Branch:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    HEAD
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Copyright assignment: 
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>   2.      Intel has signed and delivered a Joint =
Copyright Assignment
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>           to RealNetworks, and received acknowledgment =
that the
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>           agreement was received.
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Files Attached:
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    common-fileio-mmapmgr.cpp.diff.txt
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>    filesystem-local-smplsys.cpp.diff.txt
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>ZHAO, Halley (Aihua)
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Email: halley.zhao@intel.com 
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>Tel: +86(21)61166476
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>iNet: 8821-6476
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>SSG/OTC/UMD
=A1=A1=A1=A1>>
=A1=A1=A1=A1>>
=A1=A1=A1=A1>
=A1=A1=A1=A1

From weian.chen at intel.com  Thu Jul 17 18:58:29 2008
From: weian.chen at intel.com (Chen, Weian)
Date: Thu Jul 17 17:31:26 2008
Subject: Midplayer-private-dev] [helix-client-dev] CN: Add black frame
	detection in thumbnail,
	so we can get valid frame(non-blank) form the video stream as the
	thumbnail.
In-Reply-To: <003701c8e81f$b3172d90$194588b0$@com>
References: 
	<003701c8e81f$b3172d90$194588b0$@com>
Message-ID: 


Modified and committed to atlas_3_2_0 and head branch.

Thanks a lot.

Weian

-----Original Message-----
From: Eric Hyche [mailto:ehyche@real.com]=20
Sent: 2008=C4=EA7=D4=C217=C8=D5 23:14
To: Chen, Weian; helix-client-dev@helixcommunity.org
Cc: midplayer-private-dev@lists.helixcommunity.org
Subject: RE: [Midplayer-private-dev] [helix-client-dev] CR: Add black =
frame detection in thumbnail, so we can get valid frame(non-blank) form =
the video stream as the thumbnail.

Weian,

Here are my comments on this change:

+    	for (int i =3D 0; i < width; i++)
+    	{
+        	SAD +=3D src [(pixNumber >> 1) + i];
+    	}
+    	for (int i =3D 0; i < width; i++)
+    	{
+        	SAD +=3D src [(pixNumber >> 1) + width + i];
+    	}

This doesn't really take the middle two rows of the frame. It takes a =
partial row, then a full row, then another partial row.

If you really want to middle two rows, then this should be:

     UINT32 ulRowBegin =3D (height >> 1) * width;
     for (UINT32 i =3D 0; i < width * 2; i++)
     {
         SAD +=3D src[ulRowBegin + i];
     }

Similar idea for the RGB24 and RGB32 cases.

Rest looks good.

Eric

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Eric Hyche (ehyche@real.com)
Senior Technical Lead
RealNetworks, Inc.


>-----Original Message-----
>From: midplayer-private-dev-bounces@lists.helixcommunity.org =
[mailto:midplayer-private-dev-
>bounces@lists.helixcommunity.org] On Behalf Of Chen, Weian
>Sent: Thursday, July 17, 2008 4:46 AM
>To: helix-client-dev@helixcommunity.org
>Cc: midplayer-private-dev@lists.helixcommunity.org
>Subject: [Midplayer-private-dev] [helix-client-dev] CR: Add black frame =
detection in thumbnail, so we
>can get valid frame(non-blank) form the video stream as the thumbnail.
>
>Synopsis:
>
>  Add black frame detection support in thumbnail, so we can get valid =
frame (non-blank) form the video
>stream as the thumbnail.
>
>
>
>Overview:
>
>   Currently, we always get first key frame of a stream as the =
thumbnail, and many of these frames are
>black, so we can't get the needed information. Then we add black frame =
detection, until we get a valid
>frame then stop doing thumbnail.
>
>
>
>Files Added:
>
>  None
>
>
>
>Files Modified:
>
>  player/hxclientkit/pub/HXClientCallbacks.h
>
>  player/hxclientkit/src/platform/unix/CHXClientThumbnailUnix.cpp
>
>  player/kit/dbus-server/pub/hxplayer.h
>
>  player/kit/dbus-server/src/hxplayer.cpp
>
>  player/kit/dbus-server/src/helix-dbus-server.cpp
>
>
>
>Image Size and Heap Use impact (Client -Only):
>
>  Little
>
>
>
>Platforms and Profiles Affected:
>
>  platform:   linux-2.2-libc6-gcc32-i586
>
>  profile:      helix-client-all-defines
>
>
>
>Distribution Libraries Affected:
>
>   
>
>
>
>Distribution library impact and planned action:
>
>  
>
>
>
>Platforms and Profiles Build Verified:
>
>  Set BIF branch  -> hxdbus_3_1_0_atlas
>
>  Set Target(s)     -> dbus_server_with_video
>
>  Set Profile        -> helix-client-all-defines
>
>  System ID        -> linux-2.2-libc6-gcc32-i586
>
>
>
>Branch:
>
>  HEAD, hxclient_3_1_0_atlas
>
>
>
>Copyright assignment: 
>
>2.      Intel has signed and delivered a Joint Copyright Assignment
>
>           to RealNetworks, and received acknowledgment that the
>
>           agreement was received.
>
>
>
>Files Attached:
>
>  hxclient-nonblank-thumbnail.diff
>
>  dbus-nonblank-thumb.diff
>
>
>
>Weian
>
>



From rmathew at real.com  Thu Jul 17 22:12:43 2008
From: rmathew at real.com (Rishi Mathew)
Date: Thu Jul 17 20:45:50 2008
Subject: [Midplayer-private-dev] Midplayer-private-dev]
	[helix-client-dev] CN: Add black frame detection in thumbnail, so we
	can get valid frame(non-blank) form the video stream as the thumbnail.
In-Reply-To: 
References: 
	<003701c8e81f$b3172d90$194588b0$@com>
	
Message-ID: <6.2.1.2.2.20080717221213.0aa22580@mailone.real.com>

Hi Weian,

The right branch is atlas_3_1_0.

Thanks,
Rishi.

At 06:58 PM 7/17/2008, Chen, Weian wrote:

>Modified and committed to atlas_3_2_0 and head branch.
>
>Thanks a lot.
>
>Weian
>
>-----Original Message-----
>From: Eric Hyche [mailto:ehyche@real.com]
>Sent: 2008??7??17?? 23:14
>To: Chen, Weian; helix-client-dev@helixcommunity.org
>Cc: midplayer-private-dev@lists.helixcommunity.org
>Subject: RE: [Midplayer-private-dev] [helix-client-dev] CR: Add black 
>frame detection in thumbnail, so we can get valid frame(non-blank) form 
>the video stream as the thumbnail.
>
>Weian,
>
>Here are my comments on this change:
>
>+       for (int i = 0; i < width; i++)
>+       {
>+               SAD += src [(pixNumber >> 1) + i];
>+       }
>+       for (int i = 0; i < width; i++)
>+       {
>+               SAD += src [(pixNumber >> 1) + width + i];
>+       }
>
>This doesn't really take the middle two rows of the frame. It takes a 
>partial row, then a full row, then another partial row.
>
>If you really want to middle two rows, then this should be:
>
>      UINT32 ulRowBegin = (height >> 1) * width;
>      for (UINT32 i = 0; i < width * 2; i++)
>      {
>          SAD += src[ulRowBegin + i];
>      }
>
>Similar idea for the RGB24 and RGB32 cases.
>
>Rest looks good.
>
>Eric
>
>=======================================
>Eric Hyche (ehyche@real.com)
>Senior Technical Lead
>RealNetworks, Inc.
>
>
> >-----Original Message-----
> >From: midplayer-private-dev-bounces@lists.helixcommunity.org 
> [mailto:midplayer-private-dev-
> >bounces@lists.helixcommunity.org] On Behalf Of Chen, Weian
> >Sent: Thursday, July 17, 2008 4:46 AM
> >To: helix-client-dev@helixcommunity.org
> >Cc: midplayer-private-dev@lists.helixcommunity.org
> >Subject: [Midplayer-private-dev] [helix-client-dev] CR: Add black frame 
> detection in thumbnail, so we
> >can get valid frame(non-blank) form the video stream as the thumbnail.
> >
> >Synopsis:
> >
> >  Add black frame detection support in thumbnail, so we can get valid 
> frame (non-blank) form the video
> >stream as the thumbnail.
> >
> >
> >
> >Overview:
> >
> >   Currently, we always get first key frame of a stream as the 
> thumbnail, and many of these frames are
> >black, so we can't get the needed information. Then we add black frame 
> detection, until we get a valid
> >frame then stop doing thumbnail.
> >
> >
> >
> >Files Added:
> >
> >  None
> >
> >
> >
> >Files Modified:
> >
> >  player/hxclientkit/pub/HXClientCallbacks.h
> >
> >  player/hxclientkit/src/platform/unix/CHXClientThumbnailUnix.cpp
> >
> >  player/kit/dbus-server/pub/hxplayer.h
> >
> >  player/kit/dbus-server/src/hxplayer.cpp
> >
> >  player/kit/dbus-server/src/helix-dbus-server.cpp
> >
> >
> >
> >Image Size and Heap Use impact (Client -Only):
> >
> >  Little
> >
> >
> >
> >Platforms and Profiles Affected:
> >
> >  platform:   linux-2.2-libc6-gcc32-i586
> >
> >  profile:      helix-client-all-defines
> >
> >
> >
> >Distribution Libraries Affected:
> >
> >   
> >
> >
> >
> >Distribution library impact and planned action:
> >
> >  
> >
> >
> >
> >Platforms and Profiles Build Verified:
> >
> >  Set BIF branch  -> hxdbus_3_1_0_atlas
> >
> >  Set Target(s)     -> dbus_server_with_video
> >
> >  Set Profile        -> helix-client-all-defines
> >
> >  System ID        -> linux-2.2-libc6-gcc32-i586
> >
> >
> >
> >Branch:
> >
> >  HEAD, hxclient_3_1_0_atlas
> >
> >
> >
> >Copyright assignment: 
> >
> >2.      Intel has signed and delivered a Joint Copyright Assignment
> >
> >           to RealNetworks, and received acknowledgment that the
> >
> >           agreement was received.
> >
> >
> >
> >Files Attached:
> >
> >  hxclient-nonblank-thumbnail.diff
> >
> >  dbus-nonblank-thumb.diff
> >
> >
> >
> >Weian
> >
> >
>
>
>
>_______________________________________________
>Midplayer-private-dev mailing list
>Midplayer-private-dev@lists.helixcommunity.org
>http://lists.helixcommunity.org/mailman/listinfo/midplayer-private-dev


Rishi Mathew
Helix Community
RealNetworks, Inc.
rmathew@real.com
http://www.helixcommunity.org
http://www.realnetworks.com/products/support/devsupport.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.helixcommunity.org/pipermail/helix-client-dev/attachments/20080717/1d92ea0b/attachment.html
From bankim.bhavsar at gmail.com  Sun Jul 20 10:42:31 2008
From: bankim.bhavsar at gmail.com (Bankim Bhavsar)
Date: Sun Jul 20 09:14:46 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
Message-ID: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>

I hit this autopaint colorkey bug while implementing Xv extensions in
vmware video driver.
https://bugs.helixcommunity.org/show_bug.cgi?id=3465&link=0

The patch attached by Tom in this discussion
http://lists.helixcommunity.org/pipermail/helix-client-dev/2007-March/005953.html
does partially address the bug.

When I browsed through the helix code, I see that the patch is not
included. This patch
will be a good improvement.

Thanks,
Bankim.

From halley.zhao at intel.com  Sun Jul 20 21:32:43 2008
From: halley.zhao at intel.com (Zhao, Halley)
Date: Sun Jul 20 20:05:20 2008
Subject: [Helix-client-dev] CR: Fix m_ulALSAPeriodSize issue
Message-ID: <094BCE01AFBE9646AF220B0B3F367AAB034DB57D@pdsmsx413.ccr.corp.intel.com>

Skipped content of type multipart/alternative-------------- next part --------------
? audio-device-period.diff.txt
Index: platform/unix/audUnix.cpp
===================================================================
RCS file: /cvsroot/audio/device/platform/unix/audUnix.cpp,v
retrieving revision 1.12.2.2.2.2
diff -u -w -r1.12.2.2.2.2 audUnix.cpp
--- platform/unix/audUnix.cpp	16 Jul 2008 13:31:12 -0000	1.12.2.2.2.2
+++ platform/unix/audUnix.cpp	21 Jul 2008 04:19:14 -0000
@@ -360,7 +360,7 @@
     m_wLastError = retCode;
 
 #ifdef HELIX_FEATURE_ALSA_WRITE_PERIOD_SIZE
-	m_ulALSAPeriodSize = _GetPeriodSize();
+	m_ulALSAPeriodSize = _GetPeriodSize() * (m_uSampFrameSize*m_unNumChannels);
 #endif //HELIX_FEATURE_ALSA_WRITE_PERIOD_SIZE
     return m_wLastError;
 }
Index: pub/platform/unix/audUnix.h
===================================================================
RCS file: /cvsroot/audio/device/pub/platform/unix/audUnix.h,v
retrieving revision 1.8.2.1.4.1
diff -u -w -r1.8.2.1.4.1 audUnix.h
--- pub/platform/unix/audUnix.h	10 Jul 2008 09:39:08 -0000	1.8.2.1.4.1
+++ pub/platform/unix/audUnix.h	21 Jul 2008 04:19:14 -0000
@@ -291,7 +291,7 @@
     ULONG32	m_ulSleepTime;
     IHXEvent*	m_pAvailableDataEvent;
 #endif    
-    ULONG32 m_ulALSAPeriodSize;
+    ULONG32 m_ulALSAPeriodSize; // size in Bytes.
 #ifdef HELIX_FEATURE_ALSA_WRITE_PERIOD_SIZE
     CHXSimpleList	m_bufferList;
     UINT32 m_ulByteCount;       /* Number of bytes in the buffer list*/
From gwright at real.com  Mon Jul 21 09:29:59 2008
From: gwright at real.com (Greg Wright)
Date: Mon Jul 21 08:02:05 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
In-Reply-To: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>
References: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>
Message-ID: <4884B987.3070201@real.com>

Just adding player-dev since they might be interested in
getting the fix in.

--greg


Bankim Bhavsar wrote:
> I hit this autopaint colorkey bug while implementing Xv extensions in
> vmware video driver.
> https://bugs.helixcommunity.org/show_bug.cgi?id=3465&link=0
> 
> The patch attached by Tom in this discussion
> http://lists.helixcommunity.org/pipermail/helix-client-dev/2007-March/005953.html
> does partially address the bug.
> 
> When I browsed through the helix code, I see that the patch is not
> included. This patch
> will be a good improvement.
> 
> Thanks,
> Bankim.
> 
> _______________________________________________
> Helix-client-dev mailing list
> Helix-client-dev@helixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
> 
	

From dyek at real.com  Mon Jul 21 16:46:52 2008
From: dyek at real.com (Daniel Yek)
Date: Mon Jul 21 15:18:46 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
In-Reply-To: <4884B987.3070201@real.com>
References: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>
	<4884B987.3070201@real.com>
Message-ID: <48851FEC.5090209@real.com>

Hi Bankim,

Yes, I agree that the XV_AUTOPAINT_COLORKEY bug is bad. I'll try looking 
into fixing it probably by simply setting it to 1 at the start of every 
playback. At this time, I don't think it is necessary for an app. to 
restore the value, because any application can set this attribute to a 
different value after the player started.

Thanks for bringing this to my attention.

-- 
Daniel Yek.



Greg Wright wrote:
> Just adding player-dev since they might be interested in
> getting the fix in.
>
> --greg
>
>
> Bankim Bhavsar wrote:
>> I hit this autopaint colorkey bug while implementing Xv extensions in
>> vmware video driver.
>> https://bugs.helixcommunity.org/show_bug.cgi?id=3465&link=0
>>
>> The patch attached by Tom in this discussion
>> http://lists.helixcommunity.org/pipermail/helix-client-dev/2007-March/005953.html 
>>
>> does partially address the bug.
>>
>> When I browsed through the helix code, I see that the patch is not
>> included. This patch
>> will be a good improvement.
>>
>> Thanks,
>> Bankim.
>>
>> _______________________________________________
>> Helix-client-dev mailing list
>> Helix-client-dev@helixcommunity.org
>> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
>>
>     
>
> _______________________________________________
> Helix-client-dev mailing list
> Helix-client-dev@helixcommunity.org
> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
>

From bankim.bhavsar at gmail.com  Tue Jul 22 00:14:41 2008
From: bankim.bhavsar at gmail.com (Bankim Bhavsar)
Date: Mon Jul 21 22:52:58 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
In-Reply-To: <48851FEC.5090209@real.com>
References: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>
	<4884B987.3070201@real.com> <48851FEC.5090209@real.com>
Message-ID: <4eccebac0807220014y1270dd0fv45236f53f47b763a@mail.gmail.com>

Hi Daniel,
In the 1st iteration of the Xv extension in VMware video driver we
just had XV_COLORKEY attribute and relied on the application to paint
the colorkey. With no autopaint feature in the
driver, videos didn't play with Real Player. So we added the
XV_AUTOPAINT_COLORKEY attribute. Although the driver starts with
default value of 1, if some other application (eg Mplayer) changes the
attribute to 0 then videos will stop working with Real player.

Setting XV_AUTOPAINT_COLORKEY to 1 will solve this problem.

Any idea when is the next release of Real player for Linux coming up?

Thanks,
Bankim.

On Mon, Jul 21, 2008 at 4:46 PM, Daniel Yek  wrote:
> Hi Bankim,
>
> Yes, I agree that the XV_AUTOPAINT_COLORKEY bug is bad. I'll try looking
> into fixing it probably by simply setting it to 1 at the start of every
> playback. At this time, I don't think it is necessary for an app. to restore
> the value, because any application can set this attribute to a different
> value after the player started.
>
> Thanks for bringing this to my attention.
>
> --
> Daniel Yek.
>
>
>
> Greg Wright wrote:
>>
>> Just adding player-dev since they might be interested in
>> getting the fix in.
>>
>> --greg
>>
>>
>> Bankim Bhavsar wrote:
>>>
>>> I hit this autopaint colorkey bug while implementing Xv extensions in
>>> vmware video driver.
>>> https://bugs.helixcommunity.org/show_bug.cgi?id=3465&link=0
>>>
>>> The patch attached by Tom in this discussion
>>>
>>> http://lists.helixcommunity.org/pipermail/helix-client-dev/2007-March/005953.html
>>> does partially address the bug.
>>>
>>> When I browsed through the helix code, I see that the patch is not
>>> included. This patch
>>> will be a good improvement.
>>>
>>> Thanks,
>>> Bankim.
>>>
>>> _______________________________________________
>>> Helix-client-dev mailing list
>>> Helix-client-dev@helixcommunity.org
>>> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
>>>
>>
>> _______________________________________________
>> Helix-client-dev mailing list
>> Helix-client-dev@helixcommunity.org
>> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev
>>
>

From gwright at real.com  Tue Jul 22 08:52:08 2008
From: gwright at real.com (Greg Wright)
Date: Tue Jul 22 07:23:57 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
In-Reply-To: <4eccebac0807220014y1270dd0fv45236f53f47b763a@mail.gmail.com>
References: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>	<4884B987.3070201@real.com>
	<48851FEC.5090209@real.com>
	<4eccebac0807220014y1270dd0fv45236f53f47b763a@mail.gmail.com>
Message-ID: <48860228.206@real.com>

Bankim Bhavsar wrote:
> Hi Daniel,
> In the 1st iteration of the Xv extension in VMware video driver we
> just had XV_COLORKEY attribute and relied on the application to paint
> the colorkey. With no autopaint feature in the
> driver, videos didn't play with Real Player. So we added the
> XV_AUTOPAINT_COLORKEY attribute. Although the driver starts with
> default value of 1, if some other application (eg Mplayer) changes the
> attribute to 0 then videos will stop working with Real player.
> 
> Setting XV_AUTOPAINT_COLORKEY to 1 will solve this problem.
> 
> Any idea when is the next release of Real player for Linux coming up?

Daniel, take a look at:

     m_bNeedColorKeyFilled = FALSE;

     //XXXgfw, this is not needed on unix because our overlay support
     //automatically fills the window with the color key....

     //XXXgfw Well, this turns out to be mostly true. With our new fancy
     //presentation-feature SMIL demo we have a problem where the video can not
     //be seen until you see the player. This is the only case I have seen where
     //the automatic drawing of the color key by X11 is not sufficient. So, I am
     //enabling the color-key rectangle-fill code below. I may also turn off the
     //auto-color-key-fill code in XVideo so that we don't have 2 different
     //pieces of code blt'ing the color key at the same time.


//XXXgfw when we have time we should make this work in a more
//cross platform way.
//#if !defined(_UNIX) || defined(_MAC_UNIX)
     CBaseRootSurface* pSurface = m_pSite->GetRootSurface();

     pSurface->LockCompMutex();
     if (pSurface->IsCompositionEnabled())
     {
         //If composition is enabled we must also blt to that.
         HXxDC hdc;
         _GetCompositionSurfaceHXxDC(&hdc);
         FillColorKey(hdc);
         _ReleaseCompositionSurfaceHXxDC(hdc);
     }
     pSurface->UnlockCompMutex();

     //Use GDI to fill in this rect.
     HXxWindow* pWindow = m_pSite->GetWindow();
     if (pWindow && pWindow->window)
     {
         HXxDC hdc = _GetDC(pWindow);
         FillColorKey(hdc);
         _ReleaseDC(pWindow, hdc);
     }
//#else
     //Unix fillcolorkey here....
     //_UnixFillColorKey();
//#endif
}


It looks like we should be working even without Xv painting the
color key for us. Is this change, in basesurf.cpp, in your branch?

--greg.


From dyek at real.com  Tue Jul 22 09:38:33 2008
From: dyek at real.com (Daniel Yek)
Date: Tue Jul 22 08:10:15 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
In-Reply-To: <4eccebac0807220014y1270dd0fv45236f53f47b763a@mail.gmail.com>
References: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>	
	<4884B987.3070201@real.com> <48851FEC.5090209@real.com>
	<4eccebac0807220014y1270dd0fv45236f53f47b763a@mail.gmail.com>
Message-ID: <48860D09.6080806@real.com>

Hi Bankim,

Right. My understanding is that color key was added to some video 
drivers after Helix XVideo support was implemented and nobody went back 
and implemented color key support, except to rely on 
XV_AUTOPAINT_COLORKEY being a suitable default.

Unfortunately, Xv attributes are system-global resources (think "global 
variable") that can be changed outside of an application at anytime, 
requiring application to be color-key-aware to work correctly, even 
without benefiting from color key feature.

The easy case of just setting the XV_AUTOPAINT_COLORKEY attribute in the 
beginning of every playback should fix the simple case if autopaint is 
implemented in the video driver, but to make other cases work, 
application would need to handle video drivers without autopaint by 
having the application drawing the color key.

I'm still trying to locate good documentation explaining the concept of 
color key in XVideo. Do you happen to know what document contains the 
details of XVideo and color key concept? (Even if it is video adapter 
specification...)

If autopaint feature is not available in video driver, where the color 
key should be painted? In the application window through X protocol (as 
opposed to XVideo port)?

Am I understanding it correctly that if the color key is drawn (or 
somehow appeared) to the root window and video data written to the 
XVideo port covers that area (absolute coordinates), then (part of the) 
video will appear in the root window (background), or wherever the color 
key "shines through"?

For even more robust implementation, is there such a case where a video 
driver/adapter supports two ports and two application playback videos at 
the same time while each setting the XV_AUTOPAINT_COLORKEY attribute to 
different values (race condition)? Is the attribute private per-port or 
global per driver/adapter?

Sorry for asking you so many questions, but I'm just trying to find more 
information that is accessible.

Regarding the question about the next release, are you trying to test 
the fix in RealPlayer or you need it available to users? The nightly 
build will contain the fix once it is implemented.

Thanks.

-- 
Daniel Yek.



Bankim Bhavsar wrote:
> Hi Daniel,
> In the 1st iteration of the Xv extension in VMware video driver we
> just had XV_COLORKEY attribute and relied on the application to paint
> the colorkey. With no autopaint feature in the
> driver, videos didn't play with Real Player. So we added the
> XV_AUTOPAINT_COLORKEY attribute. Although the driver starts with
> default value of 1, if some other application (eg Mplayer) changes the
> attribute to 0 then videos will stop working with Real player.
>
> Setting XV_AUTOPAINT_COLORKEY to 1 will solve this problem.
>
> Any idea when is the next release of Real player for Linux coming up?
>
> Thanks,
> Bankim.
>
> On Mon, Jul 21, 2008 at 4:46 PM, Daniel Yek  wrote:
>   
>> Hi Bankim,
>>
>> Yes, I agree that the XV_AUTOPAINT_COLORKEY bug is bad. I'll try looking
>> into fixing it probably by simply setting it to 1 at the start of every
>> playback. At this time, I don't think it is necessary for an app. to restore
>> the value, because any application can set this attribute to a different
>> value after the player started.
>>
>> Thanks for bringing this to my attention.
>>
>> --
>> Daniel Yek.
>>
>>
>>
>> Greg Wright wrote:
>>     
>>> Just adding player-dev since they might be interested in
>>> getting the fix in.
>>>
>>> --greg
>>>
>>>
>>> Bankim Bhavsar wrote:
>>>       
>>>> I hit this autopaint colorkey bug while implementing Xv extensions in
>>>> vmware video driver.
>>>> https://bugs.helixcommunity.org/show_bug.cgi?id=3465&link=0
>>>>
>>>> The patch attached by Tom in this discussion
>>>>
>>>> http://lists.helixcommunity.org/pipermail/helix-client-dev/2007-March/005953.html
>>>> does partially address the bug.
>>>>
>>>> When I browsed through the helix code, I see that the patch is not
>>>> included. This patch
>>>> will be a good improvement.
>>>>
>>>> Thanks,
>>>> Bankim.
>>>>         

From gwright at real.com  Tue Jul 22 10:02:04 2008
From: gwright at real.com (Greg Wright)
Date: Tue Jul 22 08:33:55 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
In-Reply-To: <48860D09.6080806@real.com>
References: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>		<4884B987.3070201@real.com>
	<48851FEC.5090209@real.com>	<4eccebac0807220014y1270dd0fv45236f53f47b763a@mail.gmail.com>
	<48860D09.6080806@real.com>
Message-ID: <4886128C.5070600@real.com>

Daniel Yek wrote:
> Hi Bankim,
> 
> Right. My understanding is that color key was added to some video 
> drivers after Helix XVideo support was implemented and nobody went back 
> and implemented color key support, except to rely on 
> XV_AUTOPAINT_COLORKEY being a suitable default.
> 
> Unfortunately, Xv attributes are system-global resources (think "global 
> variable") that can be changed outside of an application at anytime, 
> requiring application to be color-key-aware to work correctly, even 
> without benefiting from color key feature.
> 
> The easy case of just setting the XV_AUTOPAINT_COLORKEY attribute in the 
> beginning of every playback should fix the simple case if autopaint is 
> implemented in the video driver, but to make other cases work, 
> application would need to handle video drivers without autopaint by 
> having the application drawing the color key.

Only one application, system wide, can have access to XVideo at a time.
Actually, even within one application (RP for example) we can only have
one overlay. That is, if we have two videos playing only one can have
the overlay (XVideo port open) and the other has to be using the normal
XPutImage RGB stuff (or XShmPutImage). Basically, only one *thing* can
have access to the hardware in that fashion.

> 
> I'm still trying to locate good documentation explaining the concept of 
> color key in XVideo. Do you happen to know what document contains the 
> details of XVideo and color key concept? (Even if it is video adapter 
> specification...)

Not sure at what leve you are looking, but colorkey stuff is pretty
standard. If you can find colorkey docs on DirectX, for example, it
will be the same. Basically, when you send an YUV image to the overlay
surface for it to render, you tell it where you want it and how big.
However, the video hardware will *ONLY* show that video in the parts
of the screen that have a certain color painted to it in the normal
RBG fashion (XPutImage). That certain color is the colorkey. It is usually
chosen to be some very rare color so that the video does not 'show through'
other applications. You can try this, its fun. In the preferences you can
set the colorkey to use, choose black:

  ColorKey=0x00

Now launch RP and play a video, it should look OK. Bring up an xterm
with a black background:

   xterm -fg gold -bg black -sl 1000 -sb

Move that xterm on top of the RP video. You will see the video everywhere
that the xterm has black; the background of the xterm. Pretty cool, you
can work in your xterm, compile, whatever and the background of the
xterm will be that video.

> 
> If autopaint feature is not available in video driver, where the color 
> key should be painted? In the application window through X protocol (as 
> opposed to XVideo port)?

In that case the color key is painted by the surface, this is how
windows does it. DirectX does not have a auto-paint-the-colorkey
feature. So, when we go to show a video, we paint the colorkey inside
the window where the video is suppose to be shown, that allows the
hardware rendered video to *show through* onto the screen. We only
need to paint it once and whenever it gets damaged (exposed or whatever).
You will see lots of code in the site for 'filling' the colorkey. This
works on linux as well.

> 
> Am I understanding it correctly that if the color key is drawn (or 
> somehow appeared) to the root window and video data written to the 
> XVideo port covers that area (absolute coordinates), then (part of the) 
> video will appear in the root window (background), or wherever the color 
> key "shines through"?

Yup, see above.

> 
> For even more robust implementation, is there such a case where a video 
> driver/adapter supports two ports and two application playback videos at 
> the same time while each setting the XV_AUTOPAINT_COLORKEY attribute to 
> different values (race condition)? Is the attribute private per-port or 
> global per driver/adapter?

No, see above. Well, this is true for the way we use it. If you want to
talk about 'textures' then this is not true. Also, it could be in the last
year or so support was added for multiple overlays, but it has never happened
on windows and our site does not support more then one.

I would really like to get rid of overlays all together and start using
textures or something equivalent. OpenGL would be a good replacement I
think......


--greg.

> 
> Sorry for asking you so many questions, but I'm just trying to find more 
> information that is accessible.
> 
> Regarding the question about the next release, are you trying to test 
> the fix in RealPlayer or you need it available to users? The nightly 
> build will contain the fix once it is implemented.
> 
> Thanks.
> 


From dyek at real.com  Tue Jul 22 10:58:03 2008
From: dyek at real.com (Daniel Yek)
Date: Tue Jul 22 09:29:44 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
In-Reply-To: <4886128C.5070600@real.com>
References: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>		<4884B987.3070201@real.com>
	<48851FEC.5090209@real.com>	<4eccebac0807220014y1270dd0fv45236f53f47b763a@mail.gmail.com>
	<48860D09.6080806@real.com> <4886128C.5070600@real.com>
Message-ID: <48861FAB.3070708@real.com>


Greg Wright wrote:
> Daniel, take a look at:

OK, I hadn't read this response and had yet to start looking deeper into 
the code when I commented with my own understanding.

>     m_bNeedColorKeyFilled = FALSE;
> ...
>     //XXXgfw Well, this turns out to be mostly true. With our new fancy
>     //presentation-feature SMIL demo we have a problem where the video 
> can not
>     //be seen until you see the player...
> ...
> It looks like we should be working even without Xv painting the
> color key for us. Is this change, in basesurf.cpp, in your branch?

Nope, this change is not in 150Cay. I'll merge it over.

There was one case where I had to toggle the XV_AUTOPAINT_COLORKEY value 
to 0 and then 1 in order for XVideo to work. It seems like an unusual 
case and I wonder if it is just a video driver problem (where it got 
into a wrong state) and not something that application needs to do to 
toggle the XV_AUTOPAINT_COLORKEY setting.


Greg Wright wrote:
> Daniel Yek wrote:
>> Hi Bankim,
>>
>> Right. My understanding is that color key was added to some video 
>> drivers after Helix XVideo support was implemented and nobody went 
>> back and implemented color key support, except to rely on 
>> XV_AUTOPAINT_COLORKEY being a suitable default.

OK. This "understanding" isn't really correct anymore -- expired.

>> Unfortunately, Xv attributes are system-global resources (think 
>> "global variable") that can be changed outside of an application at 
>> anytime, requiring application to be color-key-aware to work 
>> correctly, even without benefiting from color key feature.
>>
>> The easy case of just setting the XV_AUTOPAINT_COLORKEY attribute in 
>> the beginning of every playback should fix the simple case if 
>> autopaint is implemented in the video driver, but to make other cases 
>> work, application would need to handle video drivers without 
>> autopaint by having the application drawing the color key.
>
> Only one application, system wide, can have access to XVideo at a time.
> Actually, even within one application (RP for example) we can only have
> one overlay. That is, if we have two videos playing only one can have
> the overlay (XVideo port open) and the other has to be using the normal
> XPutImage RGB stuff (or XShmPutImage). Basically, only one *thing* can
> have access to the hardware in that fashion.
>
>> I'm still trying to locate good documentation explaining the concept 
>> of color key in XVideo. Do you happen to know what document contains 
>> the details of XVideo and color key concept? (Even if it is video 
>> adapter specification...)
>
> Not sure at what level you are looking, 

I was looking for anything that allows me to "do my homework" and then 
have adequate background information needed to create good fixes.


> but colorkey stuff is pretty
> standard. If you can find colorkey docs on DirectX, for example, it
> will be the same. Basically, when you send an YUV image to the overlay
> surface for it to render, you tell it where you want it and how big.
> However, the video hardware will *ONLY* show that video in the parts
> of the screen that have a certain color painted to it in the normal
> RBG fashion (XPutImage). That certain color is the colorkey. It is 
> usually
> chosen to be some very rare color so that the video does not 'show 
> through'
> other applications. You can try this, its fun. In the preferences you can
> set the colorkey to use, choose black:
>
>  ColorKey=0x00
>
> Now launch RP and play a video, it should look OK. Bring up an xterm
> with a black background:
>
>   xterm -fg gold -bg black -sl 1000 -sb
>
> Move that xterm on top of the RP video. You will see the video everywhere
> that the xterm has black; the background of the xterm. 

Yes, that works. One just needs to pay attention to expose two edges of 
the video window so that blitting of the rectangular area happens.

Thanks.

-- 
Daniel Yek.


> Pretty cool, you
> can work in your xterm, compile, whatever and the background of the
> xterm will be that video.
>
>>
>> If autopaint feature is not available in video driver, where the 
>> color key should be painted? In the application window through X 
>> protocol (as opposed to XVideo port)?
>
> In that case the color key is painted by the surface, this is how
> windows does it. DirectX does not have a auto-paint-the-colorkey
> feature. So, when we go to show a video, we paint the colorkey inside
> the window where the video is suppose to be shown, that allows the
> hardware rendered video to *show through* onto the screen. We only
> need to paint it once and whenever it gets damaged (exposed or whatever).
> You will see lots of code in the site for 'filling' the colorkey. This
> works on linux as well.
>
>>
>> Am I understanding it correctly that if the color key is drawn (or 
>> somehow appeared) to the root window and video data written to the 
>> XVideo port covers that area (absolute coordinates), then (part of 
>> the) video will appear in the root window (background), or wherever 
>> the color key "shines through"?
>
> Yup, see above.
>
>>
>> For even more robust implementation, is there such a case where a 
>> video driver/adapter supports two ports and two application playback 
>> videos at the same time while each setting the XV_AUTOPAINT_COLORKEY 
>> attribute to different values (race condition)? Is the attribute 
>> private per-port or global per driver/adapter?
>
> No, see above. Well, this is true for the way we use it. If you want to
> talk about 'textures' then this is not true. Also, it could be in the 
> last
> year or so support was added for multiple overlays, but it has never 
> happened
> on windows and our site does not support more then one.
>
> I would really like to get rid of overlays all together and start using
> textures or something equivalent. OpenGL would be a good replacement I
> think......
>
>
> --greg.
>
>>
>> Sorry for asking you so many questions, but I'm just trying to find 
>> more information that is accessible.
>>
>> Regarding the question about the next release, are you trying to test 
>> the fix in RealPlayer or you need it available to users? The nightly 
>> build will contain the fix once it is implemented.
>>
>> Thanks.
>>
>

From bankim.bhavsar at gmail.com  Tue Jul 22 10:58:10 2008
From: bankim.bhavsar at gmail.com (Bankim Bhavsar)
Date: Tue Jul 22 09:29:55 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
In-Reply-To: <48860D09.6080806@real.com>
References: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>
	<4884B987.3070201@real.com> <48851FEC.5090209@real.com>
	<4eccebac0807220014y1270dd0fv45236f53f47b763a@mail.gmail.com>
	<48860D09.6080806@real.com>
Message-ID: <4eccebac0807221058l1f8788b5ydd5bb01580d05b54@mail.gmail.com>

Hi Daniel,

Comments inline.

> I'm still trying to locate good documentation explaining the concept of
> color key in XVideo. Do you happen to know what document contains the
> details of XVideo and color key concept? (Even if it is video adapter
> specification...)

Xv man pages: http://www.xfree86.org/4.2.1/Xv.3.html
Xv specification for adapter drivers:
http://www.xfree86.org/current/DESIGN16.html
VMware Xv implementation:
http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-vmware.git;a=blob;hb=HEAD;f=src/vmwarevideo.c

>
> For even more robust implementation, is there such a case where a video
> driver/adapter supports two ports and two application playback videos at the
> same time while each setting the XV_AUTOPAINT_COLORKEY attribute to
> different values (race condition)? Is the attribute private per-port or
> global per driver/adapter?

Theoretically it is possible to have more than 1 video port.
The attributes are port/video specific and it is application's
responsibility to obtain the required lock before setting a port
attribute.
XLockDisplay() I think.

> Regarding the question about the next release, are you trying to test the
> fix in RealPlayer or you need it available to users? The nightly build will
> contain the fix once it is implemented.

I meant release for users.

Thanks,
Bankim.

From gwright at real.com  Tue Jul 22 11:07:41 2008
From: gwright at real.com (Greg Wright)
Date: Tue Jul 22 09:39:31 2008
Subject: [Helix-client-dev] Xvideo: Autopaint colorkey bug in the Unix
	version of Helix
In-Reply-To: <48861FAB.3070708@real.com>
References: <4eccebac0807201042j126795a1w52c63b73a7f76d45@mail.gmail.com>		<4884B987.3070201@real.