Get this product faster from our US warehouse
EDWIN A. HEREDIA is a Senior Program Manager in the Windows Multimedia Platform Team at Microsoft overseeing the design and implementation of innovative pervasive media experiences for home networks and the Internet. He has been working in the fields of communication protocols and media technologies for more than fifteen years. He has been an active participant and lead contributor in a number of worldwide industry standardization projects, including those envisioned by the UPnP Forum and the Digital Living Network Alliance (DLNA). He received an MSc degree in electrical engineering from the University of Calgary and a PhD in electrical engineering from the University of Delaware.
Preface xvii
Acknowledgments xxi
Acronyms xxiii
1. Introduction 1
1.1 Networks of Media Devices 1
1.2 Ubiquitous Computing at Home 3
1.3 Home Networking Challenges 5
1.4 Protocols for Networks of Media Devices 6
1.5 Protocol Development 6
2. Scenarios and Models 11
2.1 Usage Scenarios 11
2.1.1 Picture Sharing 11
2.1.2 Audio and A/V Streaming 12
2.1.3 Upload, Download, and Content Synchronization 14
2.1.4 Photo Printing 16
2.2 Control Models 16
2.2.1 The 2-Box Pull Model 17
2.2.2 The 2-Box Push Model 18
2.2.3 The 3-Box Model 19
2.2.4 Players vs. Renderers 19
2.3 Media Characterization 21
3 Device Classification 25
3.1 UPnP Devices and Control Points 25
3.2 UPnP Media Servers and Media Renderers 26
3.3 Device Taxonomy 29
3.4 Device Classes and Capabilities 30
3.4.1 Digital Media Servers 30
3.4.2 Digital Media Players 32
3.4.3 Digital Media Renderers 34
3.4.4 Digital Media Controllers 34
3.4.5 Push Controllers 36
3.4.6 Upload Devices and Controllers 37
3.4.7 Download Devices and Controllers 38
3.4.8 Printer Devices and Controllers 39
3.4.9 Home Infrastructure Devices 40
3.5 Device Nomenclature 41
4. Network Connectivity 43
4.1 Physical and Link Layers 43
4.2 TCP/IP Protocols 44
4.2.1 IP 44
4.2.2 TCP 46
4.2.3 UDP 49
4.2.4 ICMP 50
4.2.5 ARP 50
4.3 IP Addressing 51
4.4 DHCP 53
4.4.1 Address Acquisition 54
4.4.2 Verification and Renewal 55
4.4.3 Additional Functions 55
4.5 Auto-IP 56
4.5.1 Initialization Phase 56
4.5.2 Operational Phase 56
5. Discovery Protocols 59
5.1 Root and Embedded Devices 59
5.2 Discovery Messages 60
5.3 Presence Advertisements (SSDP Alive Messages) 63
5.4 Number and Types of Presence Advertisements 66
5.5 Exit Advertisements (SSDP Bye-Bye Messages) 67
5.6 Discovery Search Requests (M-SEARCH Requests) 68
5.7 Discovery Search Responses (M-SEARCH Responses) 70
6. Description Protocols 73
6.1 Device Description Document (DDD) 73
6.1.1 Structure of the Device Description Document 75
6.1.2 UPnP Device Type Identifier 76
6.1.3 Device Class Identifier 76
6.1.4 Capability Identifier 77
6.1.5 Icons in the Device Description Document 78
6.1.6 Service List in the Device Description Document 79
6.1.7 Embedded Devices 82
6.2 Service Description Document (SDD) 83
6.2.1 Structure of the Service Description Document 84
6.2.2 Description of Actions 85
6.2.3 Description of State Variables 87
6.2.4 Data Types 89
7. Server Control Protocols 91
7.1 The DMS Content Directory Service 92
7.1.1 The CDS Hierarchy 93
7.1.2 Class Values for Containers and Items 95
7.1.3 XML Representation of the CDS 97
7.1.4 Time Format for dc:date 102
7.1.5 The Element 106
7.1.6 Properties res@size and res@duration 107
7.1.7 Property res@bitrate 107
7.1.8 Property res@resolution 108
7.1.9 Property res@protocolInfo 109
7.1.10 CDS Actions and State Variables 116
7.1.11 CDS Example 117
7.1.12 CDS Browse Operations 122
7.1.13 CDS Search Operations 127
7.1.14 CDS Update Information 136
7.1.15 Album Art and Thumbnail Images 137
7.2 The DMS Connection Manager Service 139
7.2.1 CMS Actions and State Variables 139
7.2.2 Use of GetProtocolInfo() in a DMS 140
8. Renderer Control Protocols 147
8.1 Usage Model 147
8.2 Discovery of Content and Devices 150
8.3 The Connection Manager Service in a DMR 150
8.3.1 Use of protocolInfo in a DMR 151
8.3.2 Use of GetProtocolInfo() in a DMR 153
8.3.3 Connection and Service ID Values 155
8.4 The AV Transport Service in a DMR 156
8.4.1 AVT Media and Tracks 156
8.4.2 Relevant Actions and State Variables 157
8.4.3 DMR Transport States 160
8.4.4 Playing a Media Resource 161
8.4.5 Using SetAVTransportURI() 162
8.4.6 DMR State Transitions 164
8.4.7 Setting up the URI and Metadata State Variables 166
8.4.8 Playing Media Collections 168
8.4.9 Controller Seek Operations 171
8.4.10 Controller-Time Seek Operations 173
8.4.11 Time Format 175
8.4.12 Controller-Byte Seek Operations 176
8.4.13 Other Seek Operations 177
8.4.14 Playing at Different Speeds 178
8.4.15 AVT Service Events 180
8.5 The Rendering Control Service in a DMR 182
8.5.1 Relevant RCS Actions and State Variables 182
8.5.2 Audio Control Actions 184
8.5.3 Display Control Actions 187
8.5.4 RCS Service Events 189
8.6 Multiple Controllers in the Network 190
9. Exchange Protocols for Actions and Events 193
9.1 Control and Event URLs 193
9.2 Exchange Protocols for Actions 195
9.2.1 Action Requests 195
9.2.2 Action Response-Success 198
9.2.3 Action Response-Error 200
9.3 Exchange Protocols for Events 201
9.3.1 Subscription Request and Response 203
9.3.2 Renewal Request and Response 205
9.3.3 Cancellation Request and Response 206
9.3.4 Event Message and Response 206
10. HTTP Media Streaming 209
10.1 HTTP Servers and Clients 210
10.2 Transfer Modes 211
10.2.1 TCP Flow Control 212
10.2.2 Ideal Network Conditions 217
10.2.3 Interactive Mode 217
10.2.4 Background Mode 218
10.2.5 Streaming Mode 219
10.2.6 HTTP Streaming in Practice 221
10.3 HTTP Methods 223
10.3.1 The HTTP GET Method 223
10.3.2 The HTTP HEAD Method 225
10.3.3 The HTTP POST Method 226
10.4 HTTP Versions 226
10.5 Relevant HTTP Headers 227
10.5.1 Cache-Control 227
10.5.2 ContentFeatures.dlna.org 229
10.5.3 Content-Length 230
10.5.4 Content-Range 230
10.5.5 Content-Type 231
10.5.6 Date 231
10.5.7 getContentFeatures.dlna.org 232
10.5.8 Host 232
10.5.9 PlaySpeed.dlna.org 233
10.5.10 Pragma 234
10.5.11 Range 235
10.5.12 scmsFlags.dlna.org 235
10.5.13 Server 236
10.5.14 TimeSeekRange.dlna.org 237
10.5.15 Transfer-Encoding 239
10.5.16 TranferMode.dlna.org 239
10.5.17 User-Agent 240
11. Media Control Experience 241
11.1 Navigation Operations 243
11.1.1 Server Discovery 243
11.1.2 Renderer Discovery 246
11.1.3 Content Browsing 248
11.2 Playback Operations 250
11.2.1 Play 250
11.2.2 Stop 251
11.2.3 Pause 251
11.2.4 Seek 255
11.2.5 Fast Forward and Rewind 262
12. Digital Media Requirements 269
12.1 Media Formats and Profiles 270
12.1.1 Media Classes 270
12.1.2 Media Formats 270
12.1.3 Media Format Profiles 271
12.2 Proliferation of Media Format Profiles 271
12.3 Exposing Content in a CDS 273
12.4 MIME Types 274
12.5 The Profile ID 275
12.6 Media Interoperability 276
12.7 Mandatory Profiles for the MHD Category 278
12.7.1 MHD Image Class 278
12.7.2 MHD Audio Class 278
12.7.3 MHD A/V Class 278
12.8 Mandatory Profiles for the HND Category 279
12.8.1 HND Image Class 279
12.8.2 HND Audio Class 279
12.8.3 HND A/V Class 279
12.9 Summary of DLNA Media Requirements 280
13. Media Format Profiles 281
13.1 Image Class: JPEG Content 281
13.1.1 JPEG Content: Profile ID 281
13.1.2 JPEG Content: Introduction 282
13.1.3 JPEG Content: Encoding and File Format 282
13.1.4 JPEG Content: MIME Type 283
13.2 Audio Class: AAC Content 283
13.2.1 AAC Content: Profile ID 283
13.2.2 AAC Content: Introduction 284
13.2.3 AAC Content: Encoding and File Format 284
13.2.4 AAC Content: MIME Types 285
13.3 Audio Class: LPCM Content 285
13.3.1 LPCM Content: Profile ID 285
13.3.2 LPCM Content: Introduction 285
13.3.3 LPCM Content: Encoding and File Format 285
13.3.4 LPCM Content: MIME Types 285
13.3.5 LPCM Content: Transcoding Options 286
13.4 Audio Class: MP3 Content 286
13.4.1 MP3 Content: Profile ID 286
13.4.2 MP3 Content: Introduction 287
13.4.3 MP3 Content: Encoding and File Format 287
13.4.4 MP3 Content: MIME Type 287
13.5 Audio Class: WMA Content 287
13.5.1 WMA Content: Profile ID 287
13.5.2 WMA Content: Introduction 288
13.5.3 WMA Content: Encoding and File Format 288
13.5.4 WMA Content: MIME Type 288
13.6 A/V Class: AVC Content 289
13.6.1 AVC Content: Profile ID 289
13.6.2 AVC Content: Introduction 289
13.6.3 AVC Content: File Format 289
13.6.4 AVC Content: Video Encoding 289
13.6.5 AVC Content: Audio Encoding 290
13.6.6 AVC Content: MIME Type 290
13.7 A/V Class: MPEG-2 PS Content 290
13.7.1 MPEG-2 PS Content: Profile ID 290
13.7.2 MPEG-2 PS Content: Introduction 290
13.7.3 MPEG-2 PS Content: File Format 291
13.7.4 MPEG-2 PS Content: IFO Files 291
13.7.5 MPEG-2 PS Content: Video Encoding 292
13.7.6 MPEG-2 PS Content: Audio Encoding 292
13.7.7 MPEG-2 PS Content: MIME Type 293
13.8 A/V Class: MPEG-2 TS Content 293
13.8.1 MPEG-2 TS Content: Profile ID 293
13.8.2 MPEG-2 TS Content: Introduction 293
13.8.3 MPEG-2 TS Content: File Format 294
13.8.4 MPEG-2 TS Content: Video Encoding 299
13.8.5 MPEG-2 TS Content: Audio Encoding 300
13.8.6 MPEG-2 TS Content: MIME Types 301
13.9 A/V Class: WMV Content 301
13.9.1 WMV Content: Profile ID 301
13.9.2 WMV Content: Introduction 301
13.9.3 WMV Content: File Format 302
13.9.4 WMV Content: Video Encoding 302
13.9.5 WMV Content: Audio Encoding 302
13.9.6 WMV Content: MIME Type 302
13.10 MP4 Files 303
13.11 Profiles for Link Protection 303
13.12 Assignment of Profile IDs 304
14. AVT Actions and State Variables 307
14.1 AVT Actions 307
14.1.1 GetCurrentTransportActions() 307
14.1.2 GetDeviceCapabilities() 308
14.1.3 GetMediaInfo() 309
14.1.4 GetPositionInfo() 310
14.1.5 GetTransportInfo() 311
14.1.6 GetTransportSettings() 312
14.1.7 Next() 313
14.1.8 Pause() 313
14.1.9 Play() 314
14.1.10 Previous() 315
14.1.11 Seek() 315
14.1.12 SetAVTransportURI() 316
14.1.13 SetNextAVTransportURI() 317
14.1.14 SetPlayMode() 318
14.1.15 Stop() 319
14.1.16 X_DLNA_GetBytePositionInfo() 319
14.1.17 Other AVT Actions 320
14.2 AVT State Variables 320
14.2.1 AbsoluteCounterPosition 320
14.2.2 AbsoluteTimePosition 321
14.2.3 AVTransportURI 321
14.2.4 AVTransportURIMetaData 321
14.2.5 CurrentMediaDuration 321
14.2.6 CurrentPlayMode 322
14.2.7 CurrentRecordQualityMode 322
14.2.8 CurrentTrack 323
14.2.9 CurrentTrackDuration 323
14.2.10 CurrentTrackMetaData 323
14.2.11 CurrentTrackURI 323
14.2.12 CurrentTransportActions 324
14.2.13 LastChange 324
14.2.14 NextAVTransportURI 324
14.2.15 NextAVTransportURIMetaData 325
14.2.16 NumberOfTracks 325
14.2.17 PlaybackStorageMedium 325
14.2.18 PossiblePlaybackStorageMedia 326
14.2.19 PossibleRecordStorageMedia 326
14.2.20 PossibleRecordQualityModes 326
14.2.21 RecordMediumWriteStatus 326
14.2.22 RecordStorageMedium 327
14.2.23 RelativeCounterPosition 327
14.2.24 RelativeTimePosition 327
14.2.25 TransportPlaySpeed 327
14.2.26 TransportState 328
14.2.27 TransportStatus 328
14.2.28 X_DLNA_AbsoluteBytePosition 329
14.2.29 X_DLNA_CurrentTrackSize 329
14.2.30 X_DLNA_RelativeBytePosition 329
15. CDS Actions and State Variables 331
15.1 CDS Actions 331
15.1.1 Browse() 331
15.1.2 GetSearchCapabilities() 334
15.1.3 GetSortCapabilities() 335
15.1.4 GetSystemUpdateID() 335
15.1.5 Search() 336
15.1.6 Other CDS Actions 339
15.2 CDS State Variables 339
15.2.1 ContainerUpdateIDs 339
15.2.2 SearchCapabilities 340
15.2.3 SortCapabilities 340
15.2.4 SystemUpdateID 340
16. CMS Actions and State Variables 341
16.1 CMS Actions 341
16.1.1 GetCurrentConnectionIDs() 341
16.1.2 GetCurrentConnectionInfo() 342
16.1.3 GetProtocolInfo() 343
16.1.4 Other CMS Actions 344
16.2 CMS State Variables 344
16.2.1 CurrentConnectionIDs 344
16.2.2 SinkProtocolInfo 345
16.2.3 SourceProtocolInfo 345
17. RCS Actions and State Variables 347
17.1 RCS Actions 347
17.1.1 GetBrightness() 347
17.1.2 GetContrast() 348
17.1.3 GetMute() 348
17.1.4 GetSharpness() 349
17.1.5 GetVolume() 350
17.1.6 ListPresets() 350
17.1.7 SelectPreset() 351
17.1.8 SetBrightness() 352
17.1.9 SetContrast() 352
17.1.10 SetMute() 353
17.1.11 SetSharpness() 353
17.1.12 SetVolume() 354
17.1.13 Other RCS Actions 355
17.2 RCS State Variables 355
17.2.1 Brightness 355
17.2.2 Contrast 356
17.2.3 LastChange 356
17.2.4 Mute 356
17.2.5 PresetNameList 357
17.2.6 Sharpness 357
17.2.7 Volume 358
Appendix A: Error Codes 359
A.1 Generic UPnP Error Codes 359
A.2 Error Codes for the Content Directory Service 360
A.3 Error Codes for the Connection Manager Service 361
A.4 Error Codes for the AV Transport Service 361
A.5 Error Codes for the Rendering Control Service 362
Appendix B: Size Limits in Data Structures 363
Glossary 365
References 371
Index 379