Presentation is loading. Please wait.

Presentation is loading. Please wait.

OCAP RI Training Nov 30 – Dec 2, 2010

Similar presentations


Presentation on theme: "OCAP RI Training Nov 30 – Dec 2, 2010"— Presentation transcript:

1 OCAP RI Training Nov 30 – Dec 2, 2010
Presenters: Dave Hooley & Greg Rutz Location: Cox Communications 1

2 Schedule Day 1 – Tue Nov 30 – 9:00am to 5:00pm
Introductions Project overview, history and website High-level stack and platform architecture RI Stack directory structure Build system, stack and PC platform configuration Running the RI Day 2 – Wed Dec 1 – 9:00am to 5:00pm Application Signaling Channel maps, tuners and headend video service emulation EYES tool demonstration Day 3 – Thu Dec 2 – 9:00am to 3:00pm Troubleshooting the Trio guide app on the RI CANH emulation Wrap-up 2

3 Project Overview and History
3

4 Project started June 2008 Core OCAP I16+ compliant DVR I03 extension
Several ECNs short of compliance DVR I03 extension Several ECNs short of I03 compliance Front Panel I02 extension Approx 200 bugs carried over legacy code base Vision Workbench/Clientsim SDK (Windows only) 4

5 RI Release History 1.1.1 RI on Jun 12, 2009 as part of 1.1.1 Bundle
1.1.2 RI on Sep 30, 2009 as part of Bundle 1.1.3 RI on Dec 17, 2009 as part of Bundle 1.1.4 RI on Jun 3, 2010 as part of Bundle

6 Stack History 1.1.4 Bundle Release (RI 1.1.4 Rel-A): June 3, 2010
Core OCAP 1.1.3 DVR I06 Extension Front Panel I04 Extension Device Settings I03 Extension Home Networking I05 Extension Home Networking Protocol I03 RI maintenance updates to 1.1.4 Rel-B: Jul 22, 2010 Rel-C: Sep 9, 2010 Rel-D: Nov 4, 2010 Rel-E: Dec 16, 2010 (planned) 6

7 History – Other JVM PC Platform Tru2way SDK 7
Based on Sun open source PhoneME advanced MR2 Contributed to the PhoneME project Feb 2009 PC Platform Initially Windows XP Integrated with RI stack Dec 2008 Video decode complete; no audio decode currently Linux PC support added Dec 2009 Tru2way SDK 2008: Clientsim-based (Windows only) May 21, 2010: Rel-4 of the SDK uses TVT framework; Windows and Linux Dec 23, 2010: Rel-5 of the SDK (planned) 7

8 Why an RI? 8 OCAP Specifications Stubs & DTDs Release Bundle So Vang
Clarify Release Bundle Test So Vang OCAP Reference Implementation OCAP Tests (CTP) Test 8

9 OCAP Release Bundle Components of a bundle are
Specs Stubs DTDs RI CTP Cert Wave uses a single bundle Bundle is released 30 days prior to CW start ECNs are published no closer than 90 days prior to the CW 9

10 OCAP RI Requirements 10 RI runs on a PC – Windows and Linux
RI and PC IDE must be available on open-source terms RI and PC IDE must only include components with licenses compatible with the ODL dual-license plans Components available only under GPL are not OK Licenses for all third-party RI components must be reviewed by both CableLabs and the ODL legal teams RI works with existing CableLabs ATE/CTP tests RI adheres to current and future OCAP core specs RI adheres to current and future OCAP extensions specs To ensure backwards compatibility, MSO guides must run on the RI 10

11 Licensing Models 11 CableLabs OpenCable Project
GPL License on java.net CableLabs OpenCable Project OCAP Stack, PC Platform, Head-end Emulator Sun PhoneME Project - JVM Commercial License CableLabs Commercial License Also free Stack, platform and emulator RAND IPR commitment Bug fixes in stack contributed back Sun or other JVM vendor Commercial CDC/PBP 1.1 JVMPhoneME JVM Phil 11

12 Where Can I Get The RI? The Reference Implementation Site:
Part of the greater OpenCable project on java.net Specifications and Retail Branding 12

13 What Does This Mean for Me?
Stack Vendor Opportunity to make your product better Spec/stack changes (ECRs) will be better Implemented/tested prior to publishing Opportunity to offer more porting/integration/optimization services Value added support services Device Manufacturer More assurance that you device is compliant Potential shorter time to market More compliant stacks from Stack Vendors Shorter debug/release cycles Better products, with a better user experience Fewer app compatibility issues Better interoperability (Home Networking) 13

14 What Does This Mean for Me?
Application Developer Ability to test applications against representative stack IDE/SDK coming MSO Path to fewer application compatibility issues (guides etc) Path to broader selection of interoperable, application compatible tru2way devices Better consumer experience for interactive Cable TV 14

15 How Can I Contribute? Join the RI project on Java.net
Become a contributor Sign the CableLabs Contributor Agreement Contribute: To the OCAP stack To the PC Platform Linux support Other To the SDK development To the wiki Ask and answer questions Forum contributors 15

16 Project site walk through
Issue Tracker Forums Wikis List of supported features Contribution Process Bug fix cutoffs Release notes Coding standards 16

17 Bug Tracking Two Bug Tracking Databases
External IssueZilla db on java.net Internal JIRA-based RI db at CableLabs Focused on issues related to CTP and spec Linked to CableLabs Jira-based CTP, Spec dbs May be merging the 2 RI dbs in the future 17

18 RI Wiki Overview 18 Useful URLs https://opencable.dev.java.net
Tru2way information, news, events, announcements. OpenCable Reverence Implementation development. Source code, binary release(s), Issue Tracker, Forums, etc. Current CableLabs hosted “Public Facing” Wiki. 18

19 opencable.dev.java.net Access to varying information on OpenCable, tru2Way, etc. Developer's Conferences, Interop Events, etc. are announced here... 19

20 ocap-ri.dev.java.net Link to CableLabs Wiki

21 Wiki Front Page Full Text Searching
Links to 'Really Quick Start' and 'Quick Start' URLs for Subversion Repository

22 Quick Start (Building the RI)

23 Really Quick Start (Binary)
23

24 OCAP RI Branching Strategy
Three principal branches Trunk/Development Branch Code implemented by internal RI Dev Team Code from open source contributors that are vetted by RI Tech Leads Other working branches get merged back to Mainline periodically Branded Branch (eg, “1.1.4”) Fixes and enhancements that are tied to the spec and which have been verified by the CTP Branded branch is maintained separately from mainline Changes from branded branch eventually migrate back to mainline development One branded branch per spec release Experimental Branch Open source contributors have write access to this directory No other restrictions Merging to Trunk on a case-by-case basis 24

25 PC Environment Requirements

26 Architectural Overview

27 Host Operating System

28 Platform Support Libraries

29 Platform Implementation

30 Platform API

31 Platform Summary Full software emulation of STB media decoding and presentation hardware. Majority of the code is 3rd party support libraries. Leverages existing frameworks: GLib – utility library. uPnP – tuner control. GStreamer – media decoding and presentation. wxWidgets – user interface. No OS abstraction APIs.

32 OCAP Porting API

33 OCAP Native Library

34 OCAP JVM

35 OCAP Java Implementation

36 OCAP API

37 Directory Structure & Java Package Descriptions
37 37

38 RI Stack Directory Structure
ri/RI_Stack is the root of the stack ($OCAPROOT) Formerly OCAP-1.0 apps Xlets, Xlets, Xlets QA Integration Xlets, Watch TV, TuneTest Some more up-to-date than others assets Test root certificates used to when running authenticated CTP tests Standard fonts bin Binary and other runtime products for all ports Some configuration files 38 38

39 Directory Structure -- continued
docs Various system documentation hostconfig Host (not target) build configuration files java “filelist” files and Java build configuration files src Java source files, organized by extension test JUnit source files, organized by extension Out of date 39 39

40 Directory Structure -- continued
jni JNI C source files, organized by extension jvm ocap_vmlib RI Stack/VM integration library Java and JNI source code phoneME All source and build files related to the phoneME Advanced VM Your VM Here 40 40

41 Directory Structure -- continued
mpe mgr Function table management Platform-independent C source include MPE API headers os Include MPEOS API headers Your MPEOS port here Test MPE unit tests Base on CUnit framework Out of date 41 41

42 Directory Structure -- continued
target Target-specific build files thirdparty Open source (non-GPL) libs used by the stack with extensive modifications DirectFB, FreeType, Zlib tools Unmodified open source (non-GPL) libs used by the stack JUnit, NanoXML, cybergarage uPnP, Log4J, etc.. cybergarage is heavily modified and probably should move to “thirdparty” 42 42

43 Java Packages org.dvb, org.havi, org.davic, org.ocap javax.tv
Specification defined packages javax.tv JavaTV org.cablelabs.debug Logging and profiling org.cablelabs.impl Java implementation packages 43 43

44 Build System 44 44

45 Build Tools Make Ant JDK (1.4 or higher)
Compiles JNI, MPE, MPEOS, and thirdparty native libraries Ant Coordinates the entire build system Wiki contains a list of top-level build targets JDK (1.4 or higher) Used to compile stack and test application sources 45 45

46 Build System – Environment Variables
Easy to work in several different RI code bases at the same time. OCAPROOT The absolute path to the ri/RI_Stack directory. Required for compilation/execution OCAPHOST Defines the host build environment Build system reads host environment configuration files from ($OCAPROOT/hostconfig/$OCAPHOST) Required for compilation only 46 46

47 Build System – Environment Variables
OCAPTC The Target Configuration for the build. Basically the port you are working on. Defines a subdirectory hierarchy where: build configuration files are found ($OCAPROOT/target/$OCAPTC) binary intermediate products are built $(OCAPROOT/gen/$OCAPTC) final binary products are installed and runtime configuration files are kept ($OCAPROOT/bin/$OCAPTC) Suggested format is: <org>/<platform>/<os>/[debug|release] CableLabs/simulator/Linux/debug Required for compilation/execution 47 47

48 Stack and Platform Configuration
48 48

49 Stack Configuration – Native
mpeenv.ini Configuration parameters for SI, ObjectCarousel, JVM, and more… For the RI Platform, mpeenv.ini is located in $OCAPROOT/bin/$OCAPTC/env For a specific port, it can be located anywhere Stack boot module must pass the location of this file to one of the MPE managers 49 49

50 Stack Configuration – Java
Java properties files, per extension Located in $OCAPROOT/java/src/<module>/<module>.properties Do not modify these files Modules are organized into a precedence hierarchy defined in $OCAPROOT/java/src/base/org/cablelabs/impl/manager/props.properties Do not modify this file Stack can choose to use a single property value based on highest module preference or aggregate the property values for all included modules Helps with separable extension builds “final.properties” is the final user-level override file for Java configuration properties. Must be found in the root of a classpath entry. Place your user-specific overrides in this file to modify stack behavior. For PC Platform, located in $OCAPROOT/bin/$OCAPTC/env 50 50

51 Stack Configuration – Java <cont>
Most common final.properties overrides OCAP.mgrmgr.manager.Auth=org.cablelabs.impl.manager.auth.AuthManagerImpl Enable application authentication. Default is disabled OCAP.mgrmgr.manager.OcapSecurity=org.cablelabs.impl.manager.security.NoAccessControl Disable Java permission checks. Default is enabled OCAP.xait.ignore=true Disable XAIT acquisition entirely. Only hostapps are loaded. OCAP.cablecard.manufacturer=<id> Override CableCARD manufacturer ID returned by the platform

52 PC Platform Configuration – Launcher
platform_<os>.cfg Platform-specific bootstrapper for the PC platform Launches PC Platform set-top emulator 1 or more applications (in shared libs) OCAP Native app (Blu-Ray Player) Located in $PLATFORMROOT 52 52

53 PC Platform Configuration – STB/Headend Emulator
platform.cfg Configuration parameters for UI, OOB, frontpanel, backpanel, display, Headend emulation Configuration values can contain environment variables $(<env_var>) Located in $PLATFORMROOT 53 53

54 Setting up Graphics Resolution
Platform Window size from RI.Emulator.TvScreen.width RI.Emulator.TvScreen.height (platform.cfg) TV Screen size from DISP.DEFAULT.CONFIG (mpeenv.ini) Video scaled according to incoming video size and applicable DFC rule 54 54

55 Coherent Configurations
DISP.DEFAULT.CONFIG Configuration 640x480 1:1 graphics, 720x480 8:9 video, 640x480 1:1 background 1 640x480 1:1 graphics, 720x480 8:9 video, 720x480 8:9 background 2 960x540 3:4 graphics, 720x480 8:9 video, 640x480 1:1 background 3 960x540 3:4 graphics, 720x480 8:9 video, 720x480 8:9 background 4 640x480 4:3 graphics, 1920x1080 1:1 video, 1920x1080 1:1 background (with I-frame support) 5 960x540 1:1 graphics, 1920x1080 1:1 video, 1920x1080 1:1 background (with I-frame support) 55 55

56 CableCARD Emulation Very limited CableCARD emulation
Generic Features Only PC Platform uses DRI to communicate with CableCARD $RICOMMONROOT/resources/GpnvsDatabaseFile.xml Values are either strings or base64 encoded binary from CCIF specification 56 56

57 Running the RI 57 57

58 runRI.sh Main execution script for the RI PC Platform runRI.sh –help
Lots of options ATE Setup for test Xlets Native debugging Located in $PLATFORMROOT

59 Logging and Debugging 59 59

60 Stack logging Stack logging verbosity managed in mpeenv.ini
Example: LOG.MPE.JAVA = ALL DEBUG Logging may affect performance/timing (reset to DEFAULT if problems encountered) Java stack code uses log4j – configurable via $OCAPROOT/bin/$OCATPTC/env/log4j.properties Useful links on Wiki – search for ‘logging’ 60

61 Platform logging Platform code uses log4c to manage logging
Configuration found in $PLATFORMROOT/log4crc Useful links on Wiki – search for ‘logging’ 61

62 Logging and IssueTracker
When attaching a log to IssueTracker Ensure the log contains timestamps Helpful if Java debug logging is enabled 62

63 Chainsaw screenshot 63

64 Java Stack debugging Possible to step through breakpoints in Java stack code, generate stack traces and thread dumps Stack trace, thread dumps available via jdb (included with the Sun JDK) To enable Java debugging, un-comment VMOPT19 & 20 in mpeenv.ini and start debugger or jdb Re-comment VMOPT 19 & 20 when done.. 64

65 Platform debugging gdb can be used to generate a trace if the Platform terminates unexpectedly ./runRI.sh -gdb 65

66 Eclipse Eclipse .project and .classpath files for RI Stack code available from me Java debugging Native code debugging (not me) Debugging demonstration 66

67 Performance and Profiling
67

68 Eclipse PlatEval Profiling OCAP specification hooks coming in 1.2
Xlet contributed by Comcast/TVWorks. Measures time for basic JVM operations Array fills Graphics operations Fonts Profiling Netbeans profiling support See Wiki page OCAP specification hooks coming in 1.2 68

69 Application Signaling
69

70 XAIT – MPEG Sections Captured XAIT from real signaling source Headend
Software tool $RICOMMONROOT/resources/fdc-files.txt Forward Data Channel (DRI2.0 terminology for OOB data pathway) Filelist indicating MPEG2 section files to be “played out” Actual MPEG2 section files must be located in $RICOMMONROOT/resources/fdcdata Playout interval specified in $PLATFORMROOT/platform.cfg RI.Platform.OOBTableRequestPeriod File is read every interval Trigger signaling changes

71 XAIT – File-Based Signaling
Provide all the components of XAIT/AIT signaling in file format File should be located in the classpath xait.properties ait.properties hostapp.properties See the wiki for a complete description of fields

72 Headend Video Service Emulation
Channel Maps, Tuners, Headend Video Service Emulation 72

73 PC Platform Emulation Channel Map Video Source Tuners SCTE 65 SI
MPEG transport stream files SPTS MPTS Live QAM modulated transport streams HDHomerun Tuners PC Platform can be configured to use either of these video sources and respond to “tune” requests. MPEG transport stream delivered to platform media pipelines

74 Service Information (SCTE 65)
The RI stack builds its channel map from the following tables NIT CDS Subtable (Transport carriers) MMS Subtable (Modulation Modes) SVCT NTT SNS Subtable (Channel names) No file-based emulation for SI. MPEG2 sections only $RICOMMONROOT/resources/fdc-files.txt Same as XAIT Playout interval same as XAIT

75 Acquiring SI Capture from actual headend Tru2way Workbench Others?
CableLabs EYES tool Other mechanism Tru2way Workbench Others?

76 Video Sources PC Platform limitations
PC Platform only has MPEG-2 decoder No audio decoding support Non-encrypted streams only Configure number of “tuners” (simulataneous video sources) $PLATFORMROOT/platform.cfg RI.Platform.numTuners MPEG-2 Files VLC sends transport stream via localhost UDP connection platform.cfg determines QAM carrier mapping Can capture files from live QAM source using HDHomerun Live Source HDHomerun decodes QAM modulated transport stream and streams via localhost TCP

77 VLC Tuners Separate VLC process launched to stream TS file
$RICOMMONROOT/resources/<Win32/Linux>/VLC Configuration ($PLATFORMROOT/platform.cfg) RI.Platform.ipAddr Set to RI.Headend.TunerType = VLC RI.Headend.tuner.x.TunerStreamerPort Port that VLC will listen for commands RI.Headend.tuner.x.StreamerIp VLC process can run on a separate machine RI.Headend.tuner.x.TunerRxPort Port the PC Platform will open to listen for transport stream packets RI.Headend.tuner.x.tunerNum Not used

78 VLC Tuners <cont>
When a platform “tune” request is received VLC Process launched VLC directed to stream a file based on the “carrier map” in platform.cfg RI.Headend.vlc.frequency.<Hz>_<QAM> = <file> Program numbers in transport stream file must match up with channel map (SCTE 65 data)

79 HDHomerun Tuners Command line utility used to set HDHomerun tuners and streaming parameters $RICOMMONROOT/resources/<Win32/Linux>/HdHr/hdhomerun_config.exe Configuration ($PLATFORMROOT/platform.cfg) RI.Platform.IpAddr Set to your PC’s IP RI.Headend.TunerType = HDHR RI.Headend.tuner.x.tunerNum Tuner ID on back of HDHomerun (0 or 1) RI.Headend.tuner.x.tunerRxPort Port the PC Platform will open to listen for transport stream packets RI.Headend.tuner.x.streamerPort HDHomerun DeviceID (bottom of HDHomerun). Specify as hex with 0x prefix. RI.Headend.tuner.x.streamerIp Not used

80 Examine Your Edge System
EYES Examine Your Edge System 80

81 <tru2way> Workbench SDK
81

82 RI SDK Status - 1 82 Final Release
Binary distribution package of RI Emulator Bundle Package released 6/4/10 Standalone Configuration using Headend UPnP Simulator Windows: Linux: Two supported RI Emulator UI targets wxWidgets on Windows XP wxWidgets on Linux - Fedora Core 10/11 Two unsupported emulator targets For debugging purposes only; no formal QA testing Native Windows (TvScreen only) Native Linux (TvScreen only) SDK integration with Eclipse IDE Rel-4 released 5/21/10 Version 3.4.2; use SDK/3rdParty/Eclipse packages JRE 1.6.0_8 or later Update Site: Two supported SDK targets Windows XP Linux – Fedora Core 10/11 No subsequent releases planned for 2010 82

83 RI SDK Status - 2 Support TWBQuickStart Guide
ocap-ri.dev.java.net Development Forums Rely on open source contributions We need your help!!! 83

84 SDK Software Components
RI Bundle Package RI Emulator and default configuration files (platform.cfg, mpeenv.ini, etc.) OCAP API Stubs and Javadocs RI Bundle Manifest C:\CableLabs\tru2way\tags-RI_I1_1_4_REL_A-8598\ocap-ri\twb_support\RIBundleManifest.xml Image Map Editor Create new remotes and front panel UI Proprietary file format containing image data and hotspot location coordinates remote.im – Virtual remote image map frontpanel.im – Virtual front panel image map Image Map Viewer View .im files Eclipse Plugins TVT Framework Plugins TVWorks contribution Xlet Service Configuration, Channel Map Editor, Launch Configuration Support 15 plugins; org.tvt namespace <tru2way> Workbench Plugins enableTv contribution and CableLabs implementation Integration between RI Bundle and TVT Framework 5 plugins; org.tru2way.twb namespace 84

85 RI Emulator UI 85

86 <tru2way> Workbench SDK UI
86

87 SDK Features - 1 87 RI Emulator Standalone configuration supported
All OCAP application types supported (Bound/Unbound) Executes in Run and Debug modes Provide virtual TV Screen, Front Panel, Remote and Console for user presentation and IO Support for following coherent device configurations: 640x480 – 4:3, 960x540 – 4:3, 640x480 – 16:9, and 960x540 – 16:9 Messages from ODL stack and application captured in external log as well as displayed in Console UI Output can be filtered based on category and level Configurable emulation Via configuration parameters on start-up (mpeenv.ini and final.properties) 87

88 SDK Features - 2 88 Headend – UPnP Emulator
Delivers MPEG-2 Transport Streams for video play back (no audio) One or more elementary stream Pre-recorded files and live transport streams Delivers PAT/PMT InBand via Transport Stream Delivers SI OOB Pre-defined sections Tuning support by [frequency, QAM, program] tuple as well as source ID XAIT signaling via file configuration (i.e. xait.properties consumed directly by stack) AIT signaling via file configuration (i.e. ait-1234.properties consumed directly by stack) Initiate/terminate pre-recorded EAS message Configurable emulation Via configuration parameters on start-up 88

89 SDK Features - 3 89 <tru2way> Workbench Eclipse Integration
RI Emulator Bundle Registration Bundle independent of Eclipse plugin framework Support for multiple bundles Headend Simulation Generates OOB section data OCAP Project RI Bundle selection Application templates Xlet Service Configuration XAIT configuration Permission Request File (.prf) configuration Channel Map Editor Run/Debug Launch Configuration Modes OCAP API Javadoc hover 89

90 SDK Architecture - 1 90

91 SDK Architecture - 2 91

92 SDK Architecture - 3 92

93 SDK Source 93 SDK Root Image Map Editor Image Map Viewer TVT Framework
Image Map Editor SDK/ImageMapEditor/ Image Map Viewer SDK/ImageMapViewer/ TVT Framework SDK/tvt/ <tru2way> Workbench SDK/tru2wayWorkbench/ Third-party dependencies SDK/3rdParty Eclipse snapshots xerces libpng libcurl 93

94 SDK Enhancement Request - 1
Open Source Community Contributions Support for application developers Support for testing OCAP Stack features User level documentation Sample applications Simple WatchTv Simple DVR Simple Home Networking 94

95 SDK Enhancement Request - 2
RI Emulator Device Settings User Interface (Back Panel UI) Online HTML Help Browser User document submissions Command Plugin Framework (Dynamic UI Modules) Add UI elements to the wxWidgets UI at runtime Enhance static Menu and Toolbar integration capabilities Full-screen TvScreen Window (if possible in wxWidgets) Show/hide video and graphics planes DirectFB 1.0 and support for OpenGL hardware acceleration Additional target platforms: Windows 7, Ubuntu, Mac OS X Better integration with Eclipse launch configuration manager as part of OCAP Project workflow Setting debug output levels Multiple tuner configuration 95

96 SDK Enhancement Request - 2
Headend – UPnP Emulator XAIT table generation and delivery AIT table generation and delivery Better integration with Eclipse launch configuration manager as part of OCAP Project workflow CableCard/POD configuration Dynamic delivery of OOB SI data HDHR configuration 96

97 SDK Enhancement Request - 3
<tru2way> Workbench Eclipse Integration Add support for Unbound applications Complete Launch Configuration Simulator Tab UI Additional application templates: Tuning, IXC, HAVi, DVR, HN, etc. OCAP Project export Channel Map export Xlet configuration export (.properties generation) Online documentation through Eclipse Help Tips and tricks documentation OCAP API cheat sheets 97

98 Application Development Workflow
98

99 SDK Demo RI Bundle Installation <tru2way> SDK Installation
RI Bundle Registration Creating a new OCAP Project Creating a Xlet Service Configuration Creating a Launch Configuration Executing the Xlet Debugging the Xlet Stopping RI Emulator execution 99


Download ppt "OCAP RI Training Nov 30 – Dec 2, 2010"

Similar presentations


Ads by Google