[Player-dev] CR-Client: Cayenne Core Feature Support #1: ABD, PlayNow, TrueLive; and ICT

[Player-dev] CR-Client: Cayenne Core Feature Support #1: ABD, PlayNow, TrueLive; and ICT

Daniel Yek dyek at real.com
Fri Aug 25 16:52:04 PDT 2006


Modified by: dyek at real.com
Date: 08/25/2006
Project: Helix Player

Synopsis: Implementing Cayanne Core feaure support

Overview:

1. Background:
The Cayenne Core Feature Support for Linux spec. can be found at:
https://player.helixcommunity.org/2005/specs/RealPlayer_Cayenne_Features.doc

The following is based on my understanding and intention.

There are 3 ways to determine the Internet Connection Bandwidth:
a. ABD (Auto Bandwidth Detection)
   This is one of the new feature in Cayenne Core.
   Here, bandwidth detection occurs at the beginning of playing the clip.
   It is fast and transparent to the TLC.
   It caches subnet bandwidth history, all transparent to the TLC.
   It only work with Server 11 and later though. So, even though it is
   great and transparent, other bandwidth detection mechanism is still
   needed.

b. ICT (Internet Connection Test)
   This is the existing mechanism available in released version of
   RealPlayer on Windows, accessible from:
   Tools > Preferences > Connection > Test Connection...
   When the Test Connection button is clicked, a embedded web page
   pops up and the script measures the bandwidth by downloading images,
   doubling the file size, after each successful iteration.
   Then, the Bandwidth preference is set.
   This mechanism can have automated subnet change detection with pop-up
   when a laptop moved to a different network.
   If ABD is not disabled, and there is server support, ABD will measure
   the bandwidth regardless of ICT/Manual settings.

c. Manual
   Manual option is meant to overwrite ICT only, not ABD;
   ABD can be disabled through a checkbox provided, independent of
   ICT/Manual settings.

2. About the Code Review:

a. The Setup Assistant druid:
   The player First Run experience, the Setup Assistant druid, is
   extended to include Internet Connection Test (ICT) and Manual
   settings.
   A page is provided to kick off the new ICT druid.

b. The ICT druid:
   Start a async "chain reaction", downloading images from the
   perftest web site used by the RealPlayer for Windows ICT web page.
   At the moment, only the simplest method is implemented; only the
   timing information from the last and largest image is taken to
   compute the bandwidth.

c. Preference Dialog Box:
   Modified the Connection page to include ICT and Manual settings
   support.
   Added ABD checkbox meant to provide a mechanism to disable the ABD
   in the core. There is still work to be done.
   Modified PlayBack page to provide PlayNow and TrueLive preferences
   settings.


o A player Bandwidth default of 384 Kbps is implemented to overwrite
   the Bandwidth default of 10 Mbps created in the client engine if
   ~/.hxplayerrc file is not found (First Run).

o Fixed a crash when the player main window is closed by clicking the
   Close icon, rather than using the File menu. (Note: This is the
   unstable development branch on HEAD.)

o Replaced GtkOptionMenu widgets to GtkComboBox to comply with LSB.

o Extended our libgladeemu to include glade_get_widget_tree emulation
   for my need.

o Changed the way the buttons are set disabled/invisible or inactive.
   The older, simpler, way couldn't deal with more buttons added and
   more complex way of interacting with the context (the notebook page
   displayed).

Questions/doubts:
What is the unit for ConnectionBandwidth ABD Preference? Why the
   default is 70 times larger than the MaxBandwidth Preference?
Is PlayNow still using TurboPlay preference?


Files Modified:
player/app/gtk/Umakefil
player/app/gtk/setup.cpp - Added ICT, etc.
player/app/gtk/mainapp.cpp  - Fixed a wrong free; should be unref.
player/app/gtk/commonapp.cpp - Provide player Bandwith default.
player/app/gtk/prefsdialog.cpp - LSB fixes; Added support for Test 
Connection button.
player/app/gtk/libgladeemu.cpp - glade_get_widget_tree() support.
player/app/gtk/setup_interface.c
player/app/gtk/preferences_interface.c
player/app/gtk/setup.h
player/app/gtk/setup_callbacks.h
player/app/gtk/preferences_callbacks.h
player/app/gtk/libgladeemu.h
player/app/gtk/res/setup.glade - Generate setup_interface.c
player/app/gtk/res/preferences.glade - Generate Preferences_interface.c

Files Added:
player/app/gtk/ict_wget.c - ICT using wget asynchronously.
player/app/gtk/ict.cpp - Driving the ICT dialog box.
player/app/gtk/ict_interface.c
player/app/gtk/ict_wget.h
player/app/gtk/ict.h
player/app/gtk/ict_interface.h
player/app/gtk/ict_callbacks.h
player/app/gtk/res/ict.glade - Generate ict_interface.c
player/app/gtk/res/ict.gladep - Glade's project file.




Image Size and Heap Use impact (Client -Only):
About 80K increase in image size.

Platforms and Profiles Affected:
Linux

Distribution Libraries Affected:
None.

Distribution library impact and planned action:
None.

Platforms and Profiles Build Verified:
Profile: helix_client_all_define
Platform: Fedora Core 5

Platforms and Profiles Functionality verified:
Profile: helix_client_all_define
Platform: Fedora Core 5

Branch: HEAD

Copyright assignment: I am a RealNetworks employee.




-- 
Daniel Yek
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cayenneCoreFeatures[1].tgz
Type: application/octet-stream
Size: 400270 bytes
Desc: not available
Url : http://lists.helixcommunity.org/pipermail/player-dev/attachments/20060825/3c45120c/cayenneCoreFeatures1-0001.obj


More information about the Player-dev mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.