Annex A. Introduction 5
A.1.Scope 5
A.2.Document Organization 5
A.3.Relationship to other Specifications 6
A.4.Document Notation and Conventions 6
A.4.1.Conventions 7
A.4.2.General Notes 7
A.5.Normative References 8
A.6.Informative References 8
A.7. Best Practices for Maximum Compatibility 9
A.8.Change Log 9
Annex B. Primary Components 11
Annex C. API 13
C.1.Overview 13
C.2.API Applicability 13
C.3.API Design Patterns 15
C.3.1.Zero-Argument Constructors 15
C.3.2.Event Notification via Registered Listeners 15
C.3.3.Completion of Asynchronous Services 16
C.3.4.Error Handling 16
C.3.5.Player State Behavior 17
C.4.Interfaces 17
C.5.Content Identification 17
C.5.1.ContentID Format 17
C.5.2.ContentID Consistency 18
C.5.2.1.Note on Consistency (informative) 18
Annex D. Package Management API Group 19
D.1.Overview 19
D.1.1.Package Lifecycle 19
D.1.2.Properties of the Viewing Environment 20
D.1.3.Structure and Subgroups 20
D.2.Framework Interface 21
D.2.1.Lifecycle Subgroup 21
D.2.1.1.getSupportedAPIs() 21
D.2.1.2.status( ) 23
D.2.2.Connectivity Subgroup 23
D.2.2.1.getConnectivityState() 23
D.2.3.Environment Subgroup 24
D.2.3.1.getEnvironmentDesc() 24
D.3.Package Interface 24
D.3.1.Lifecycle Subgroup 24
D.3.1.1.initialize() 25
D.3.1.2.enable() 26
D.3.1.3.disable() 27
D.3.1.4.terminate() 27
D.3.1.5.getState() 28
D.3.2.Connectivity Subgroup 28
D.3.2.1.connectivityChange() 28
D.3.3.Environment Subgroup 29
D.3.3.1.deviceStatusChange() 29
D.4.Shared Data Structures 29
D.4.1.Connectivity State 29
D.4.1.1.type 30
D.4.1.2.connectionState 31
D.4.1.3.reliability 31
D.4.1.4.throughput 31
D.4.2.Status Descriptor 31
D.4.2.1.level 33
D.4.2.2.completionCode 33
D.4.2.3.message 33
D.4.2.4.details 33
D.4.2.5.context 33
Annex E. Content Access API Group 34
E.1.Content Access Codes 34
E.2.Framework Interface 35
E.2.1.Availability Subgroup 35
E.2.1.1.getAvailability() 36
E.2.1.2.acquire() 36
E.2.2.Access Event Subgroup 37
E.2.2.1.addListener() 37
E.2.2.2.removeListener() 37
E.2.3.Download Subgroup 38
E.2.3.1.download() 38
E.2.3.2.cancelDownload() 39
E.2.3.3.canDownload() 40
E.3.Package Interface 40
E.3.1.Access Event Subgroup 40
E.3.1.1.eventNotification() 40
Annex F. Account Access API Group 42
F.1.Framework Interface 42
F.1.1.Basic Subgroup 42
F.1.1.1.signIn() 43
F.1.1.2.signOut() 43
F.1.1.3.isSignedIn() 43
F.1.1.4.getAccountProperties () 44
F.1.1.5.getPreferences() 44
F.1.2.Account Event Subgroup 45
F.1.2.1.addListener() 45
F.1.2.2.removeListener() 45
F.2.Package Interface 46
F.2.1.Account Event Subgroup 46
F.2.1.1.Account Event Codes 46
F.2.1.2.eventNotification() 46
Annex G. Player Interaction API Group 48
G.1.Overview 48
G.1.1.Component Model 48
G.1.2.Control of Media Stream 49
G.2.Framework Interface 49
G.2.1.Shared Constants 50
G.2.1.1.Response Codes 50
G.2.2.Lifecycle Subgroup 50
G.2.2.1.createPlayer() 50
G.2.2.2.destroyPlayer() 51
G.2.3.Basic Subgroup 52
G.2.3.1.Events 52
G.2.3.2.play() 53
G.2.3.3.togglePause() 53
G.2.3.4.setPaused() 54
G.2.3.5.isPaused() 54
G.2.3.6.stop() 54
G.2.3.7.setPoster() 55
G.2.3.8.isVisible() 55
G.2.3.9.jumpTo() 56
G.2.4.Trickplay Subgroup 56
G.2.4.1.Events 57
G.2.4.2.Trickplay Constants 57
G.2.4.2.1.Playback Rates 57
G.2.4.3.increaseRate() 58
G.2.4.4.decreaseRate() 58
G.2.4.5.setRate() 59
G.2.4.6.getRate() 59
G.2.4.7.setReversed() 60
G.2.4.8.isReversed () 60
G.2.4.9.setPlaybackMode() 61
G.2.4.10.jump() 61
G.2.5.Controls Subgroup 62
G.2.5.1.Events 62
G.2.5.2.setVisibleControls() 62
G.2.5.3.hasVisibleControls() 63
G.2.6.Sound Subgroup 63
G.2.6.1.Events 63
G.2.6.2.setVolume(float volume) 64
G.2.6.3.getVolume() 64
G.2.6.4.isMuted() 65
G.2.6.5.setMuted() 65
G.2.7.Track Selection Subgroup 65
G.2.8.Player Event Subgroup 66
G.2.8.1.addListener() 66
G.2.8.2.removeListener() 67
G.2.8.3.requestNotificationAt() 67
G.2.8.4.cancelNotificationAt() 68
G.2.8.5.requestPeriodic() 68
G.2.8.6.cancelPeriodic() 68
G.2.9.Geometry Subgroup 69
G.2.9.1.Event s 69
G.2.9.2.Player Geometry 70
G.2.9.2.1.playerHeight 71
G.2.9.2.2.playerWidth 71
G.2.9.2.3.videoHeight 71
G.2.9.2.4.videoWidth 71
G.2.9.2.5.videoOffsetX 71
G.2.9.2.6.videoOffsetY 71
G.2.9.2.7.safeAreaHeight 71
G.2.9.2.8.safeAreaWidth 71
G.2.9.2.9.safeAreaOffsetX 72
G.2.9.2.10.safeAreaOffsetY 72
G.2.9.3.setFullScreen() 72
G.2.9.4.isFullScreen() 72
G.2.9.5.[Section removed] 73
G.2.9.6.getPlayerGeometry() 73
G.3.Package Interface 73
G.3.1.Player Event Subgroup 73
G.3.1.1.Player Event Codes 73
G.3.1.2.eventNotification() 75
Annex H. Social Networking API Group 76
H.1.Overview 76
H.2.Framework Interface 76
H.2.1.Sharing Subgroup 76
H.2.1.1.Events 77
H.2.1.2.Constants 77
H.2.1.3. hasSocialNetworks() 78
H.2.1.4.share() 78
H.2.2.Social Event Subgroup 79
H.2.2.1.addListener() 79
H.2.2.2.removeListener() 80
H.3.Package Interface 80
H.3.1.Social Event Subgroup 80
H.3.1.1.eventNotification() 80
Annex I. Enhancements API Group 82
I.1.Overview 82
I.2.Framework Interface 82
I.2.1.Wishlists Subgroup 82
I.2.1.1.supportsWishList( ) 83
I.2.1.2.addToWishList() 84
I.2.1.3.removeFromWishList() 84
I.2.1.4.isInWishList() 85
I.2.2.Bookmarks Subgroup 85
I.2.2.1.Use of Timecodes 86
I.2.2.2.supportsBookMarks( ) 87
I.2.2.3.setBookmark() 87
I.2.2.4.removeBookmark() 88
I.2.2.5.getAllBookmarks() 88
I.2.2.6.getBookmark () 88
I.2.3.Package History Subgroup 89
I.2.3.1.supportsHistory( ) 90
I.2.3.2.getPackageHistory() 90
I.2.3.3.savePackageHistory() 91
Annex J. Implementation Guidance 92
J.1.Concept Overview 92
J.1.1.The Consumer’s Experience 92
J.1.2.Concept of Operations 94
J.1.3.Concept of Deployment 95
J.2.Design Principles 96
J.2.1.Modular Object Oriented Design 96
J.2.2.Support for Variation in Player Capabilities 97
J.2.3.Mobile Users 97
J.3.Guidance for Framework Developers 98
J.3.1.Functional Decomposition 98
J.3.2.Package Management 98
J.4.Guidance for Package Developers 98
J.4.1.Mobile Users 98
J.4.2.Single User with Multiple Devices 99
J.4.3.History Data 99
Annex K. Adaptation to Specific Viewing Environments 101
K.1.HTML5 101
K.1.1.All in Browser 101
K.1.2.Back-End Framework 102
K.2.Mobile Environments 103
K.2.1.Mobile Web-Based Frameworks 104
K.2.2.Native APIs 104
Annex L. Examples 107