[Player-dev] CR-Client: Cayenne Core Feature Support #1: ABD, PlayNow, TrueLive; and ICT
Daniel Yek dyek at real.comModified 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