index.html
203 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Requirements for Home Networking Scenarios</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<style type="text/css">
/*****************************************************************
* ReSpec CSS
* Robin Berjon (robin at berjon dot com)
* v0.05 - 2009-07-31
*****************************************************************/
/* --- INLINES --- */
em.rfc2119 {
text-transform: lowercase;
font-variant: small-caps;
font-style: normal;
color: #900;
}
h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
border: none;
}
dfn {
font-weight: bold;
}
a.internalDFN {
color: inherit;
border-bottom: 1px solid #99c;
text-decoration: none;
}
a.externalDFN {
color: inherit;
border-bottom: 1px dotted #ccc;
text-decoration: none;
}
a.bibref {
text-decoration: none;
}
code {
color: #ff4500;
}
/* --- WEB IDL --- */
pre.idl {
border-top: 1px solid #90b8de;
border-bottom: 1px solid #90b8de;
padding: 1em;
line-height: 120%;
}
pre.idl::before {
content: "WebIDL";
display: block;
width: 150px;
background: #90b8de;
color: #fff;
font-family: initial;
padding: 3px;
font-weight: bold;
margin: -1em 0 1em -1em;
}
.idlType {
color: #ff4500;
font-weight: bold;
text-decoration: none;
}
/*.idlModule*/
/*.idlModuleID*/
/*.idlInterface*/
.idlInterfaceID, .idlDictionaryID {
font-weight: bold;
color: #005a9c;
}
.idlSuperclass {
font-style: italic;
color: #005a9c;
}
/*.idlAttribute*/
.idlAttrType, .idlFieldType, .idlMemberType {
color: #005a9c;
}
.idlAttrName, .idlFieldName, .idlMemberName {
color: #ff4500;
}
.idlAttrName a, .idlFieldName a, .idlMemberName a {
color: #ff4500;
border-bottom: 1px dotted #ff4500;
text-decoration: none;
}
/*.idlMethod*/
.idlMethType {
color: #005a9c;
}
.idlMethName {
color: #ff4500;
}
.idlMethName a {
color: #ff4500;
border-bottom: 1px dotted #ff4500;
text-decoration: none;
}
/*.idlParam*/
.idlParamType {
color: #005a9c;
}
.idlParamName {
font-style: italic;
}
.extAttr {
color: #666;
}
/*.idlConst*/
.idlConstType {
color: #005a9c;
}
.idlConstName {
color: #ff4500;
}
.idlConstName a {
color: #ff4500;
border-bottom: 1px dotted #ff4500;
text-decoration: none;
}
/*.idlException*/
.idlExceptionID {
font-weight: bold;
color: #c00;
}
.idlTypedefID, .idlTypedefType {
color: #005a9c;
}
.idlRaises, .idlRaises a.idlType, .idlRaises a.idlType code, .excName a, .excName a code {
color: #c00;
font-weight: normal;
}
.excName a {
font-family: monospace;
}
.idlRaises a.idlType, .excName a.idlType {
border-bottom: 1px dotted #c00;
}
.excGetSetTrue, .excGetSetFalse, .prmNullTrue, .prmNullFalse, .prmOptTrue, .prmOptFalse {
width: 45px;
text-align: center;
}
.excGetSetTrue, .prmNullTrue, .prmOptTrue { color: #0c0; }
.excGetSetFalse, .prmNullFalse, .prmOptFalse { color: #c00; }
.idlImplements a {
font-weight: bold;
}
dl.attributes, dl.methods, dl.constants, dl.fields, dl.dictionary-members {
margin-left: 2em;
}
.attributes dt, .methods dt, .constants dt, .fields dt, .dictionary-members dt {
font-weight: normal;
}
.attributes dt code, .methods dt code, .constants dt code, .fields dt code, .dictionary-members dt code {
font-weight: bold;
color: #000;
font-family: monospace;
}
.attributes dt code, .fields dt code, .dictionary-members dt code {
background: #ffffd2;
}
.attributes dt .idlAttrType code, .fields dt .idlFieldType code, .dictionary-members dt .idlMemberType code {
color: #005a9c;
background: transparent;
font-family: inherit;
font-weight: normal;
font-style: italic;
}
.methods dt code {
background: #d9e6f8;
}
.constants dt code {
background: #ddffd2;
}
.attributes dd, .methods dd, .constants dd, .fields dd, .dictionary-members dd {
margin-bottom: 1em;
}
table.parameters, table.exceptions {
border-spacing: 0;
border-collapse: collapse;
margin: 0.5em 0;
width: 100%;
}
table.parameters { border-bottom: 1px solid #90b8de; }
table.exceptions { border-bottom: 1px solid #deb890; }
.parameters th, .exceptions th {
color: #fff;
padding: 3px 5px;
text-align: left;
font-family: initial;
font-weight: normal;
text-shadow: #666 1px 1px 0;
}
.parameters th { background: #90b8de; }
.exceptions th { background: #deb890; }
.parameters td, .exceptions td {
padding: 3px 10px;
border-top: 1px solid #ddd;
vertical-align: top;
}
.parameters tr:first-child td, .exceptions tr:first-child td {
border-top: none;
}
.parameters td.prmName, .exceptions td.excName, .exceptions td.excCodeName {
width: 100px;
}
.parameters td.prmType {
width: 120px;
}
table.exceptions table {
border-spacing: 0;
border-collapse: collapse;
width: 100%;
}
/* --- TOC --- */
.toc a {
text-decoration: none;
}
a .secno {
color: #000;
}
/* --- TABLE --- */
table.simple {
border-spacing: 0;
border-collapse: collapse;
border-bottom: 3px solid #005a9c;
}
.simple th {
background: #005a9c;
color: #fff;
padding: 3px 5px;
text-align: left;
}
.simple th[scope="row"] {
background: inherit;
color: inherit;
border-top: 1px solid #ddd;
}
.simple td {
padding: 3px 10px;
border-top: 1px solid #ddd;
}
.simple tr:nth-child(even) {
background: #f0f6ff;
}
/* --- DL --- */
.section dd > p:first-child {
margin-top: 0;
}
.section dd > p:last-child {
margin-bottom: 0;
}
.section dd {
margin-bottom: 1em;
}
.section dl.attrs dd, .section dl.eldef dd {
margin-bottom: 0;
}
/* --- EXAMPLES --- */
pre.example {
border-top: 1px solid #ff4500;
border-bottom: 1px solid #ff4500;
padding: 1em;
margin-top: 1em;
}
pre.example::before {
content: "Example";
display: block;
width: 150px;
background: #ff4500;
color: #fff;
font-family: initial;
padding: 3px;
font-weight: bold;
margin: -1em 0 1em -1em;
}
/* --- EDITORIAL NOTES --- */
.issue {
padding: 1em;
margin: 1em 0em 0em;
border: 1px solid #f00;
background: #ffc;
}
.issue::before {
content: "Issue";
display: block;
width: 150px;
margin: -1.5em 0 0.5em 0;
font-weight: bold;
border: 1px solid #f00;
background: #fff;
padding: 3px 1em;
}
.note {
margin: 1em 0em 0em;
padding: 1em;
border: 2px solid #cff6d9;
background: #e2fff0;
}
.note::before {
content: "Note";
display: block;
width: 150px;
margin: -1.5em 0 0.5em 0;
font-weight: bold;
border: 1px solid #cff6d9;
background: #fff;
padding: 3px 1em;
}
/* --- Best Practices --- */
div.practice {
border: solid #bebebe 1px;
margin: 2em 1em 1em 2em;
}
span.practicelab {
margin: 1.5em 0.5em 1em 1em;
font-weight: bold;
font-style: italic;
}
span.practicelab { background: #dfffff; }
span.practicelab {
position: relative;
padding: 0 0.5em;
top: -1.5em;
}
p.practicedesc {
margin: 1.5em 0.5em 1em 1em;
}
@media screen {
p.practicedesc {
position: relative;
top: -2em;
padding: 0;
margin: 1.5em 0.5em -1em 1em;
}
}
/* --- SYNTAX HIGHLIGHTING --- */
pre.sh_sourceCode {
background-color: white;
color: black;
font-style: normal;
font-weight: normal;
}
pre.sh_sourceCode .sh_keyword { color: #005a9c; font-weight: bold; } /* language keywords */
pre.sh_sourceCode .sh_type { color: #666; } /* basic types */
pre.sh_sourceCode .sh_usertype { color: teal; } /* user defined types */
pre.sh_sourceCode .sh_string { color: red; font-family: monospace; } /* strings and chars */
pre.sh_sourceCode .sh_regexp { color: orange; font-family: monospace; } /* regular expressions */
pre.sh_sourceCode .sh_specialchar { color: #ffc0cb; font-family: monospace; } /* e.g., \n, \t, \\ */
pre.sh_sourceCode .sh_comment { color: #A52A2A; font-style: italic; } /* comments */
pre.sh_sourceCode .sh_number { color: purple; } /* literal numbers */
pre.sh_sourceCode .sh_preproc { color: #00008B; font-weight: bold; } /* e.g., #include, import */
pre.sh_sourceCode .sh_symbol { color: blue; } /* e.g., *, + */
pre.sh_sourceCode .sh_function { color: black; font-weight: bold; } /* function calls and declarations */
pre.sh_sourceCode .sh_cbracket { color: red; } /* block brackets (e.g., {, }) */
pre.sh_sourceCode .sh_todo { font-weight: bold; background-color: #00FFFF; } /* TODO and FIXME */
/* Predefined variables and functions (for instance glsl) */
pre.sh_sourceCode .sh_predef_var { color: #00008B; }
pre.sh_sourceCode .sh_predef_func { color: #00008B; font-weight: bold; }
/* for OOP */
pre.sh_sourceCode .sh_classname { color: teal; }
/* line numbers (not yet implemented) */
pre.sh_sourceCode .sh_linenum { display: none; }
/* Internet related */
pre.sh_sourceCode .sh_url { color: blue; text-decoration: underline; font-family: monospace; }
/* for ChangeLog and Log files */
pre.sh_sourceCode .sh_date { color: blue; font-weight: bold; }
pre.sh_sourceCode .sh_time, pre.sh_sourceCode .sh_file { color: #00008B; font-weight: bold; }
pre.sh_sourceCode .sh_ip, pre.sh_sourceCode .sh_name { color: #006400; }
/* for Prolog, Perl... */
pre.sh_sourceCode .sh_variable { color: #006400; }
/* for LaTeX */
pre.sh_sourceCode .sh_italics { color: #006400; font-style: italic; }
pre.sh_sourceCode .sh_bold { color: #006400; font-weight: bold; }
pre.sh_sourceCode .sh_underline { color: #006400; text-decoration: underline; }
pre.sh_sourceCode .sh_fixed { color: green; font-family: monospace; }
pre.sh_sourceCode .sh_argument { color: #006400; }
pre.sh_sourceCode .sh_optionalargument { color: purple; }
pre.sh_sourceCode .sh_math { color: orange; }
pre.sh_sourceCode .sh_bibtex { color: blue; }
/* for diffs */
pre.sh_sourceCode .sh_oldfile { color: orange; }
pre.sh_sourceCode .sh_newfile { color: #006400; }
pre.sh_sourceCode .sh_difflines { color: blue; }
/* for css */
pre.sh_sourceCode .sh_selector { color: purple; }
pre.sh_sourceCode .sh_property { color: blue; }
pre.sh_sourceCode .sh_value { color: #006400; font-style: italic; }
/* other */
pre.sh_sourceCode .sh_section { color: black; font-weight: bold; }
pre.sh_sourceCode .sh_paren { color: red; }
pre.sh_sourceCode .sh_attribute { color: #006400; }
</style><link href="http://www.w3.org/StyleSheets/TR/W3C-IG-NOTE" rel="stylesheet" type="text/css" charset="utf-8" /></head>
<body style="display: inherit; "><div class="head"><p><a href="http://www.w3.org/"><img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C" /></a></p><h1 class="title" id="title">Requirements for Home Networking Scenarios</h1><h2 id="w3c-interest-group-note-01-december-2011"><acronym title="World Wide Web Consortium">W3C</acronym> Interest Group Note 01 December 2011</h2><dl><dt>This version:</dt><dd><a href="http://www.w3.org/TR/2011/NOTE-hnreq-20111201/">http://www.w3.org/TR/2011/NOTE-hnreq-20111201/</a></dd><dt>Latest published version:</dt><dd><a href="http://www.w3.org/TR/hnreq/">http://www.w3.org/TR/hnreq/</a></dd><dt>Previous version:</dt><dd>none</dd><dt>Editor:</dt><dd><span>Giuseppe Pascale</span>, <a href="http://www.opera.com/">Opera Software</a></dd>
<dt>Authors:</dt><dd><span>Clarke Stevens</span>, <a href="http://www.cablelabs.com/">CableLabs</a></dd>
<dd><span>Jan Lindquist</span>, <a href="http://www.ericsson.com/">Ericsson</a></dd>
<dd><span>Jean-Claude Dufourd</span>, <a href="http://www.telecom-paristech.fr/">Telecom ParisTech</a></dd>
<dd><span>Matt Hammond</span>, <a href="http://www.bbc.co.uk/">BBC</a></dd>
<dd><span>Russell Berkoff</span>, <a href="http://www.samsung.com/">Samsung</a></dd>
<dd><span>Tatsuya Igarashi</span>, <a href="http://www.sony.com/">Sony</a></dd>
</dl><p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2011 <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.eu/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. <acronym title="World Wide Web Consortium">W3C</acronym> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p><hr /></div>
<div id="abstract" class="introductory section"><h2>Abstract</h2>
<p>This document lists the design goals and requirements that potential <acronym title="World Wide Web Consortium">W3C</acronym> recommendations should support in order to enable access to services and content provided by home network devices on other devices, including the discovery and playback of content available to those devices, both from services such as traditional broadcast media and internet based services but also from the home network.</p>
</div><div id="sotd" class="introductory section"><h2>Status of This Document</h2><p><em>This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current <acronym title="World Wide Web Consortium">W3C</acronym> publications and the latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/"><acronym title="World Wide Web Consortium">W3C</acronym> technical reports index</a> at http://www.w3.org/TR/.</em></p>
<p>Recommendations in this document are the result of discussion in the Home Network Task Force of the <a href="http://www.w3.org/2011/webtv/">Web and TV Interest Group</a>. The Home Network Task Force believes that most of these recommendations listed in this document will be refined and addressed within the <a href="http://www.w3.org/2009/dap/">Device APIs Working Group</a>, as part of its work on a devices and services discovery API standard. In particular, while the Home Network Task Force may continue to discuss areas of home networking scenarios that have not already been raised in this document, it does not anticipate further work on the scenarios and requirements highlighted in this document within the Web and TV Interest Group.</p>
<p>This document was published by the <a href="http://www.w3.org/2011/webtv/">Web and TV Interest Group</a> as an Interest Group Note. If you wish to make comments regarding this document, please send them to <a href="mailto:public-web-and-tv@w3.org">public-web-and-tv@w3.org</a> (<a href="mailto:public-web-and-tv-request@w3.org?subject=subscribe">subscribe</a>, <a href="http://lists.w3.org/Archives/Public/public-web-and-tv/">archives</a>). All feedback is welcome.</p><p>Publication as an Interest Group Note does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</p>
<p>The disclosure obligations of the Participants of this group are described in the <a href="http://www.w3.org/2010/09/webTVIGcharter.html#patentpolicy">charter</a>.</p>
</div>
<div id="toc" class="section"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">2. </span>Conformance</a></li><li class="tocline"><a href="#terminology" class="tocxref"><span class="secno">3. </span>Terminology</a></li><li class="tocline"><a href="#requirements" class="tocxref"><span class="secno">4. </span>Requirements</a><ul class="toc"><li class="tocline"><a href="#general" class="tocxref"><span class="secno">4.1 </span>General</a><ul class="toc"><li class="tocline"><a href="#compatibility-with-widely-deployed-standards" class="tocxref"><span class="secno">4.1.1 </span>Compatibility with widely deployed standards</a></li></ul></li><li class="tocline"><a href="#discovery-and-advertising" class="tocxref"><span class="secno">4.2 </span>Discovery and Advertising</a><ul class="toc"><li class="tocline"><a href="#service-discovery" class="tocxref"><span class="secno">4.2.1 </span>Service Discovery</a></li><li class="tocline"><a href="#application-discovery" class="tocxref"><span class="secno">4.2.2 </span>Application Discovery</a></li><li class="tocline"><a href="#content-discovery" class="tocxref"><span class="secno">4.2.3 </span>Content Discovery</a></li><li class="tocline"><a href="#content-advertisement" class="tocxref"><span class="secno">4.2.4 </span>Content Advertisement</a></li><li class="tocline"><a href="#services-advertisement" class="tocxref"><span class="secno">4.2.5 </span>Services Advertisement</a></li><li class="tocline"><a href="#media-identification" class="tocxref"><span class="secno">4.2.6 </span>Media Identification</a></li></ul></li><li class="tocline"><a href="#control-and-communication" class="tocxref"><span class="secno">4.3 </span>Control and Communication</a><ul class="toc"><li class="tocline"><a href="#control-of-content-players" class="tocxref"><span class="secno">4.3.1 </span>Control of Content Players</a></li><li class="tocline"><a href="#control-of-content-recorders" class="tocxref"><span class="secno">4.3.2 </span>Control of Content Recorders</a></li><li class="tocline"><a href="#playback-of-content" class="tocxref"><span class="secno">4.3.3 </span>Playback of Content</a></li><li class="tocline"><a href="#playback-of-live-content" class="tocxref"><span class="secno">4.3.4 </span>Playback of Live Content</a></li><li class="tocline"><a href="#x3-box-model" class="tocxref"><span class="secno">4.3.5 </span>3 Box Model</a></li><li class="tocline"><a href="#time-synchronization" class="tocxref"><span class="secno">4.3.6 </span>Time-synchronization</a></li><li class="tocline"><a href="#accurate-time-synchronization" class="tocxref"><span class="secno">4.3.7 </span>Accurate Time-synchronization</a></li><li class="tocline"><a href="#service-communication" class="tocxref"><span class="secno">4.3.8 </span>Service Communication</a></li><li class="tocline"><a href="#application-communication" class="tocxref"><span class="secno">4.3.9 </span>Application Communication</a></li><li class="tocline"><a href="#content-protection" class="tocxref"><span class="secno">4.3.10 </span>Content Protection</a></li></ul></li><li class="tocline"><a href="#migration" class="tocxref"><span class="secno">4.4 </span>Migration</a><ul class="toc"><li class="tocline"><a href="#push-migration" class="tocxref"><span class="secno">4.4.1 </span>Push Migration</a></li><li class="tocline"><a href="#pull-migration" class="tocxref"><span class="secno">4.4.2 </span>Pull Migration</a></li></ul></li><li class="tocline"><a href="#security-and-privacy" class="tocxref"><span class="secno">4.5 </span>Security and Privacy</a><ul class="toc"><li class="tocline"><a href="#application-trust-level" class="tocxref"><span class="secno">4.5.1 </span>Application Trust Level</a></li><li class="tocline"><a href="#access-to-home-network-services" class="tocxref"><span class="secno">4.5.2 </span>Access to Home Network Services</a></li><li class="tocline"><a href="#prevent-leaking-of-information" class="tocxref"><span class="secno">4.5.3 </span>Prevent Leaking of Information</a></li></ul></li></ul></li><li class="tocline"><a href="#use-cases" class="tocxref"><span class="secno">5. </span>Use Cases</a><ul class="toc"><li class="tocline"><a href="#u1.-service-user-interface" class="tocxref"><span class="secno">5.1 </span>U1. Service User Interface</a></li><li class="tocline"><a href="#u2.-discovered-content-host" class="tocxref"><span class="secno">5.2 </span>U2. Discovered Content Host</a></li><li class="tocline"><a href="#u3.-service-migration" class="tocxref"><span class="secno">5.3 </span>U3. Service Migration</a></li><li class="tocline"><a href="#u4.-service-distribution" class="tocxref"><span class="secno">5.4 </span>U4. Service Distribution</a></li><li class="tocline"><a href="#u5.-3-box-model" class="tocxref"><span class="secno">5.5 </span>U5. 3-Box Model</a></li><li class="tocline"><a href="#u6.-application-exposing-a-service" class="tocxref"><span class="secno">5.6 </span>U6. Application Exposing a Service</a></li><li class="tocline"><a href="#u7.-application-discovering-a-service" class="tocxref"><span class="secno">5.7 </span>U7. Application Discovering a Service</a></li><li class="tocline"><a href="#u8.-application-push-migration" class="tocxref"><span class="secno">5.8 </span>U8. Application Push-Migration</a></li><li class="tocline"><a href="#u9.-application-pull-migration" class="tocxref"><span class="secno">5.9 </span>U9. Application Pull-Migration</a></li><li class="tocline"><a href="#u10.-media-identification" class="tocxref"><span class="secno">5.10 </span>U10. Media Identification</a></li><li class="tocline"><a href="#u11.-tv-control" class="tocxref"><span class="secno">5.11 </span>U11. TV Control</a></li><li class="tocline"><a href="#u12.-time-synchronization" class="tocxref"><span class="secno">5.12 </span>U12. Time Synchronization</a></li><li class="tocline"><a href="#u13.-lip-sync-time-synchronization" class="tocxref"><span class="secno">5.13 </span>U13. Lip Sync Time Synchronization</a></li><li class="tocline"><a href="#u14.-local-link-of-web-applications" class="tocxref"><span class="secno">5.14 </span>U14. Local Link of Web Applications</a></li><li class="tocline"><a href="#u15.-home-network-enabled-user-agent---network-media-player" class="tocxref"><span class="secno">5.15 </span>U15. Home Network Enabled User-Agent - Network Media Player</a></li><li class="tocline"><a href="#u16.-home-network-enabled-user-agent---network-media-server" class="tocxref"><span class="secno">5.16 </span>U16. Home Network Enabled User-Agent - Network Media Server</a></li><li class="tocline"><a href="#u17.-home-network-enabled-user-agent" class="tocxref"><span class="secno">5.17 </span>U17. Home Network Enabled User-Agent</a></li><li class="tocline"><a href="#u18.-home-network-enabled-user-agent---network-record-controller" class="tocxref"><span class="secno">5.18 </span>U18. Home Network Enabled User-Agent - Network Record Controller</a></li><li class="tocline"><a href="#u19.-upnp---dlna-ecosystem-support" class="tocxref"><span class="secno">5.19 </span>U19. UPnP / DLNA ecosystem support</a></li></ul></li><li class="tocline"><a href="#security" class="tocxref"><span class="secno">6. </span>Security</a><ul class="toc"><li class="tocline"><a href="#threats" class="tocxref"><span class="secno">6.1 </span>Threats</a><ul class="toc"><li class="tocline"><a href="#security-1" class="tocxref"><span class="secno">6.1.1 </span>Security</a></li><li class="tocline"><a href="#privacy" class="tocxref"><span class="secno">6.1.2 </span>Privacy</a></li></ul></li><li class="tocline"><a href="#potential-solutions" class="tocxref"><span class="secno">6.2 </span>Potential Solutions</a><ul class="toc"><li class="tocline"><a href="#home-network-access-allowed-only-to-trusted-applications" class="tocxref"><span class="secno">6.2.1 </span>Home Network Access Allowed Only to Trusted Applications</a><ul class="toc"><li class="tocline"><a href="#how-to-determine-the-trust-level-of-an-application--several-may-apply" class="tocxref"><span class="secno">6.2.1.1 </span>How to Determine the Trust Level of an Application (Several May Apply)</a></li><li class="tocline"><a href="#trust-levels-options--mutually-exclusive" class="tocxref"><span class="secno">6.2.1.2 </span>Trust Levels Options (Mutually Exclusive)</a></li></ul></li><li class="tocline"><a href="#device-pairing" class="tocxref"><span class="secno">6.2.2 </span>Device Pairing</a></li><li class="tocline"><a href="#device-information-only-visible-to-the-user" class="tocxref"><span class="secno">6.2.3 </span>Device Information only Visible to the User</a></li><li class="tocline"><a href="#modular-access-to-home-network-services-and-content" class="tocxref"><span class="secno">6.2.4 </span>Modular Access to Home Network Services and Content</a></li></ul></li></ul></li><li class="tocline"><a href="#categorization-of-requirements-and-next-steps" class="tocxref"><span class="secno">7. </span>Categorization of Requirements and Next Steps</a><ul class="toc"><li class="tocline"><a href="#requirements-categorization" class="tocxref"><span class="secno">7.1 </span>Requirements Categorization</a></li><li class="tocline"><a href="#identified-gaps" class="tocxref"><span class="secno">7.2 </span>Identified Gaps</a></li><li class="tocline"><a href="#next-steps" class="tocxref"><span class="secno">7.3 </span>Next Steps</a></li><li class="tocline"><a href="#open-issues" class="tocxref"><span class="secno">7.4 </span>Open Issues</a></li></ul></li><li class="tocline"><a href="#related-works--informative" class="tocxref"><span class="secno">8. </span>Related Works (Informative)</a><ul class="toc"><li class="tocline"><a href="#cablelabs" class="tocxref"><span class="secno">8.1 </span>CableLabs</a></li><li class="tocline"><a href="#opera" class="tocxref"><span class="secno">8.2 </span>Opera</a><ul class="toc"><li class="tocline"><a href="#problem" class="tocxref"><span class="secno">8.2.1 </span>Problem</a></li><li class="tocline"><a href="#current-practice" class="tocxref"><span class="secno">8.2.2 </span>Current Practice</a></li><li class="tocline"><a href="#proposed-solution" class="tocxref"><span class="secno">8.2.3 </span>Proposed Solution</a></li><li class="tocline"><a href="#bbc" class="tocxref"><span class="secno">8.2.4 </span>BBC</a></li></ul></li><li class="tocline"><a href="#telecom-paristech" class="tocxref"><span class="secno">8.3 </span>Telecom ParisTech</a></li><li class="tocline"><a href="#cea-2014-web-based-protocol-and-framework-for-remote-user-interface---overview" class="tocxref"><span class="secno">8.4 </span>CEA-2014 Web-based Protocol and Framework for Remote User Interface - Overview</a><ul class="toc"><li class="tocline"><a href="#remote-ui-application-listing" class="tocxref"><span class="secno">8.4.1 </span>Remote UI Application Listing</a></li><li class="tocline"><a href="#client-capabilities-matching" class="tocxref"><span class="secno">8.4.2 </span>Client Capabilities Matching</a></li><li class="tocline"><a href="#standardized-audio-video-player" class="tocxref"><span class="secno">8.4.3 </span>Standardized Audio-Video Player</a></li><li class="tocline"><a href="#digital-rights-management-framework" class="tocxref"><span class="secno">8.4.4 </span>Digital Rights Management Framework</a></li><li class="tocline"><a href="#content-download-management-framework" class="tocxref"><span class="secno">8.4.5 </span>Content Download Management Framework</a></li><li class="tocline"><a href="#upnp---dlna-home-network-framework" class="tocxref"><span class="secno">8.4.6 </span>UPnP / DLNA Home Network Framework</a></li><li class="tocline"><a href="#svg--scalable-vector-graphics--integration-with-xhtml" class="tocxref"><span class="secno">8.4.7 </span>SVG (Scalable Vector Graphics) integration with XHTML</a></li><li class="tocline"><a href="#server-to-client-notification-framework" class="tocxref"><span class="secno">8.4.8 </span>Server to Client Notification Framework</a></li><li class="tocline"><a href="#remote-ui-save-and-restore-framework" class="tocxref"><span class="secno">8.4.9 </span>Remote UI Save and Restore Framework</a></li></ul></li><li class="tocline"><a href="#universal-plug-n-play--upnp--reference" class="tocxref"><span class="secno">8.5 </span>Universal Plug'n Play (UPnP) Reference</a><ul class="toc"><li class="tocline"><a href="#introduction-1" class="tocxref"><span class="secno">8.5.1 </span>Introduction</a></li><li class="tocline"><a href="#upnp-av-architecture" class="tocxref"><span class="secno">8.5.2 </span>UPnP AV Architecture</a></li><li class="tocline"><a href="#upnp-device-architecture" class="tocxref"><span class="secno">8.5.3 </span>UPnP Device Architecture</a></li><li class="tocline"><a href="#upnp-media-renderer-device" class="tocxref"><span class="secno">8.5.4 </span>UPnP Media Renderer Device</a></li><li class="tocline"><a href="#upnp-media-server-device" class="tocxref"><span class="secno">8.5.5 </span>UPnP Media Server Device</a></li></ul></li><li class="tocline"><a href="#ericsson-labs" class="tocxref"><span class="secno">8.6 </span>Ericsson Labs</a></li></ul></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">A. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">A.1 </span>Normative references</a></li><li class="tocline"><a href="#informative-references" class="tocxref"><span class="secno">A.2 </span>Informative references</a></li></ul></li></ul></div>
<div id="introduction" class="section">
<!-- OddPage -->
<h2><span class="secno">1. </span>Introduction</h2>
<p>There is an increasing amount of personal and streaming (broadcast) content that users would like to be able to access from any device in the home (personal computers, tablets, mobile phones, TVs and others).</p>
<p>Growing numbers of consumer electronic devices such as TVs and mobile phones can access internet based services as well as content originating from both home network devices and broadcast services. For example, many commercial video providers currently provide the ability for a user to access content stored on a home network device (e.g. a <abbr title="digital video recorder">DVR</abbr>) or accessed via a network connected <abbr title="set-top box">STB</abbr>. A home network content discovery and control protocol is used by the <abbr title="digital video recorder">DVR</abbr> and <abbr title="set-top box">STB</abbr> to provide this access, through a native user interface, to other devices in the home (e.g. PCs, TVs).</p>
<p>The dominant scenario today is for a home network device to both discover and playback home network content. Examples of these devices may include personal computers or connected televisions. This is commonly referred to as a 2-Box model. An emerging scenario is for the content discovery and control to take place on a separate handheld device, such as a smartphones or tablets. The handheld device then instructs a content player (e.g. a TV) to playback content from a content server (e.g. a <abbr title="digital video recorder">DVR</abbr>). This is referred to as the 3-Box model.</p>
<p>In all use cases, security mechanisms are made available to protect user privacy and content owners’ rights.</p>
<p>There is no standardized way to build a web application that can use content discovery and control protocols to access the content on other devices in the home network. This document lists the design goals and requirements that future <acronym title="World Wide Web Consortium">W3C</acronym> recommendations need to address in order to address this problem. This would enable content providers to deliver web applications to any conforming device in order to enhance and harmonize the user experience.</p>
</div>
<div id="conformance" class="section">
<!-- OddPage -->
<h2><span class="secno">2. </span>Conformance</h2>
<p>As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.</p>
<p>The key words <em class="rfc2119" title="must">must</em>, <em class="rfc2119" title="must not">must not</em>, <em class="rfc2119" title="shall">shall</em>, <em class="rfc2119" title="should">should</em> and <em class="rfc2119" title="should not">should not</em> in this specification are to be interpreted as described in RFC 2119 [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC2119">RFC2119</a></cite>].</p>
<p>This specification only applies to one class of product: <dfn id="dfn-w3c-technical-reports"><acronym title="World Wide Web Consortium">W3C</acronym> Technical Reports</dfn>. A number of specifications may be created to address the requirements enumerated in this document. In some cases the union of multiple parts of different specifications may be needed to address a single requirement. Nevertheless, this document speaks only of <dfn id="dfn-conforming-specifications">conforming specifications</dfn>.</p>
<p>Conforming specifications are ones that address one or more requirements listed in this document. Conforming specifications should attempt to address <em class="rfc2119" title="should">should</em> level requirements requirements unless there is a technically valid reason not to do so.</p>
</div>
<div id="terminology" class="section">
<!-- OddPage -->
<h2><span class="secno">3. </span>Terminology</h2>
<dl>
<dt><dfn id="dfn-programme">programme</dfn> (program)</dt>
<dd>A programme (program) comprises a single period of audio visual content. It is usually expected to be labeled in content directories or television programme guides as a single entity. This might include an episode of a television programme, a radio programme, or a movie.</dd>
<dt><dfn id="dfn-device">device</dfn></dt>
<dd>For the purposes of this document, a device is any piece of equipment connected to the <a href="#dfn-home-network" class="internalDFN">home network</a>. Note that this is a generic term that also includes <a href="#dfn-television" class="internalDFN">television</a> (defined below).</dd>
<dt><dfn id="dfn-television">television</dfn></dt>
<dd>A <a href="#dfn-device" class="internalDFN">device</a> that presents <a href="#dfn-programme" class="internalDFN">programme</a> content from a variety of sources - such as received via broadcast (cable, satellite, terrestrial), on-demand streaming services, or streamed from other devices in the home (e.g. PVR). Within the scope of this document, it is presumed that a television is connected to the <a href="#dfn-home-network" class="internalDFN">home network</a>.</dd>
<dt><dfn id="dfn-service">service</dfn></dt>
<dd>For the purposes of this document, a service is any functionality available on a <a href="#dfn-device" class="internalDFN">device</a>, such as the ability to play back audio/video content, record content and print documents</dd>
<dt><dfn id="dfn-document">document</dfn></dt>
<dd>An individual resource that adheres to a certain content type, ranging from short static documents to long essays or reports with rich multimedia. For simplicity, terms such as shown, displayed, and visible might sometimes be used when referring to the way a document is rendered to the user. These terms are not meant to imply a visual medium; they must be considered to apply to other media in equivalent ways.</dd>
<dt><dfn id="dfn-application">application</dfn></dt>
<dd>For the purposes of this document, the term “application” refers to a collection of documents (not necessarily delivered over HTTP) which use server-side or client-side processing to provide a "native application"-like experience within a Web browser or other kinds of Web run-time. Applications may include locally executable elements of interactivity and persistent state. Note that locally stored applications like <acronym title="World Wide Web Consortium">W3C</acronym> Widgets [<cite><a class="bibref" rel="biblioentry" href="#bib-WIDGETS">WIDGETS</a></cite>] are intended to be covered by this definition.</dd>
<dt><dfn id="dfn-home-network">home network</dfn></dt>
<dd>For the purposes of this document, the term “home network” refers to the networking infrastructure that facilitates Internet Protocol communications between devices within the home. This may range from a single legacy IPv4 subnet to multiple IPv4 subnets and dual stack or IPv6 environments and will typically (but not always) be connected to the Internet.</dd>
<dt><dfn id="dfn-content-item">content item</dfn></dt>
<dd>For the purposes of this document, the term “content item” refers to metadata describing or more binary versions of media. The media described by an item may either be stored or streamed. A single content item may refer to multiple media binaries that represent different formats for the content being described.</dd>
<dt><dfn id="dfn-channel-item">channel item</dfn></dt>
<dd>For the purposes of this document, the term “channel item” refers to an “item” describing a streaming source. A channel item may contain metadata describing the channel source such as channel number, distribution network, etc. A channel may not be available on the home network, i.e. the “channel item” may refer to a channel that can only be locally tuned. In these cases “channel item” metadata will not provide network addressing information (URLs) to connect to the channel source.</dd>
<dt><dfn id="dfn-epg-item">epg item</dfn> (electronic programming guide)</dt>
<dd>For the purposes of this document, the term “epg item” refers to an item that may be available with some defined time range. An “epg item” may contain metadata describing the channel source for the content and the time range the channel media will be available.</dd>
<dt><dfn id="dfn-record-schedule">record schedule</dfn> (item)</dt>
<dd>For the purposes of this document, the term “record schedule” refers to an item which contains metadata describing a request to a network recording service to record content. “Record schedule items” may include: simple time/duration requests, recording of a specific <a href="#dfn-epg-item" class="internalDFN">epg item</a>, and recording dynamically selected <a title="epg item" href="#dfn-epg-item" class="internalDFN">epg items</a> based metadata properties of desired content. “Record schedule items” additionally include metadata describing the status of the recording request.</dd>
<dt><dfn id="dfn-record-task">record task</dfn> (item)</dt>
<dd>For the purposes of this document, the term “record task item” refers to an item which contains metadata describing a pending or completed network recording operation. “Record task items” are created by a network recording service and allow network record service clients to control pending recording operations. Additionally, “record task items” include metadata describing the status of the recording request and the identity of <a title="content item" href="#dfn-content-item" class="internalDFN">content items</a> that represent the results of network recording operations.</dd>
</dl>
</div>
<div id="requirements" class="section">
<!-- OddPage -->
<h2><span class="secno">4. </span>Requirements</h2>
<p>This section enumerates the requirements that conforming specification(s) would need to address to enable discovery and control of devices and services in the home network by a user agent. These requirements are directly motivated by the use cases described in this document (see <a href="#use-cases" class="sectionRef">section 5. Use Cases</a>) and are based on an interactive process of feedback from the discussions in the Home-Network Task Force of the Web and TV Interest Group.</p>
<div id="general" class="section">
<h3><span class="secno">4.1 </span>General</h3>
<div id="compatibility-with-widely-deployed-standards" class="section">
<h4><span class="secno">4.1.1 </span>Compatibility with widely deployed standards</h4>
<p>Several home network protocols (e.g. UPnP and M-DNS/DNS-SD) are in popular use today for advertising and sharing content and services in a home network environment. <a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="shall">shall</em> set out requirements for an API that would enable interaction with those protocols.</p>
</div>
</div>
<div id="discovery-and-advertising" class="section">
<h3><span class="secno">4.2 </span>Discovery and Advertising</h3>
<div id="service-discovery" class="section">
<h4><span class="secno">4.2.1 </span>Service Discovery</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for applications to discover services advertised by devices and applications in the home network. Details of the advertising protocols are out of scope for this document and the type and number of supported discovery protocols is user agent dependent. Nevertheless <a href="#dfn-conforming-specifications" class="internalDFN">conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for application search for specific services and to be able to determine the means by which it should communicate with that service.</p>
</div>
<div id="application-discovery" class="section">
<h4><span class="secno">4.2.2 </span>Application Discovery</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for applications running in different user-agents to discover each other directly via the home network. Details of the advertising protocol are out of scope for this document.</p>
</div>
<div id="content-discovery" class="section">
<h4><span class="secno">4.2.3 </span>Content Discovery</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for applications to discover devices in the home network capable of serving content (content servers). In addition, <a href="#dfn-conforming-specifications" class="internalDFN">conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a mechanism to retrieve a list of the available content, provide additional information (metadata) about the content and to support negotiation of a supported content format between content servers and content players.</p>
</div>
<div id="content-advertisement" class="section">
<h4><span class="secno">4.2.4 </span>Content Advertisement</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for applications to expose content descriptions to a service on the home network. Other devices or applications on the home network should be able to play back the content served by the application and retrieve additional metadata about the served content.</p>
</div>
<div id="services-advertisement" class="section">
<h4><span class="secno">4.2.5 </span>Services Advertisement</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for applications to expose and advertise services on the home network.</p>
</div>
<div id="media-identification" class="section">
<h4><span class="secno">4.2.6 </span>Media Identification</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide applications with a means to identify and thereby recognize a program that may be available from devices or services on the home network, when such an identifier is available. Such identifiers <em class="rfc2119" title="should">should</em> be unique to a program, but common across multiple instance of the same program; and <em class="rfc2119" title="should">should</em> be consistent across different services and devices in different home networks.</p>
</div>
</div>
<div id="control-and-communication" class="section">
<h3><span class="secno">4.3 </span>Control and Communication</h3>
<div id="control-of-content-players" class="section">
<h4><span class="secno">4.3.1 </span>Control of Content Players</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> enable applications to know what content can be presented by a device or service on the home network and control the playback of that content presented, in such a way that the application does not have to handle:</p>
<ul>
<li>issues of codec, container format, or transport protocol compatibility</li>
<li>differences in the mechanisms by which content is delivered to the rendering device (e.g. received from broadcast vs. streamed from a media server)</li>
</ul>
</div>
<div id="control-of-content-recorders" class="section">
<h4><span class="secno">4.3.2 </span>Control of Content Recorders</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> enable applications to control recording of content presented by devices or services within the home network, in such a way that the application does not have to handle:</p>
<ul>
<li>issues of codec, container format, or transport protocol compatibility</li>
<li>differences in the mechanisms by which content is delivered to the rendering device (e.g. received from broadcast vs. streamed from a media server)</li>
</ul>
</div>
<div id="playback-of-content" class="section">
<h4><span class="secno">4.3.3 </span>Playback of Content</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means to play back content advertised by a home network content server.</p>
</div>
<div id="playback-of-live-content" class="section">
<h4><span class="secno">4.3.4 </span>Playback of Live Content</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means to play back live content advertised by a home network content server.</p>
</div>
<div id="x3-box-model" class="section">
<h4><span class="secno">4.3.5 </span>3 Box Model</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for controlling the playback of content from home network content servers to home network content players. <a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> support means to negotiate a supported content type format that is available on the content server and is suitable for being played on the content player.</p>
</div>
<div id="time-synchronization" class="section">
<h4><span class="secno">4.3.6 </span>Time-synchronization</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for applications to co-time the presentation of their own content (audio, video or other) with the timeline of a programme being played back on another device, including programmes being received via broadcast. <a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide applications with a means to be aware of the progress (time within the programme) of the playback of media content on a remote device/service, including programmes being received via broadcast.</p>
</div>
<div id="accurate-time-synchronization" class="section">
<h4><span class="secno">4.3.7 </span>Accurate Time-synchronization</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> support any protocols or optional protocol features that enable applications to be aware of the progress (time within the programme) of the playback of a programme on a remote device to within frame accuracy (1/25th or 1/30th second) or better. <a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> support the ability to determine an estimate of the level of accuracy with which timing information about media playback on a remove device/service is conveyed to applications.</p>
</div>
<div id="service-communication" class="section">
<h4><span class="secno">4.3.8 </span>Service Communication</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for an application to exchange messages directly via the home network with services discovered in the home network.</p>
</div>
<div id="application-communication" class="section">
<h4><span class="secno">4.3.9 </span>Application Communication</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means for applications to exchange messages directly via the home network with other applications running on a different user agent in the home network.</p>
</div>
<div id="content-protection" class="section">
<h4><span class="secno">4.3.10 </span>Content Protection</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> support the content protection mechanism for a content item used by a content server in order to play back that content item. <a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="must">must</em> provide a graceful failure model when a content protection mechanism is not supported.</p>
</div>
</div>
<div id="migration" class="section">
<h3><span class="secno">4.4 </span>Migration</h3>
<div id="push-migration" class="section">
<h4><span class="secno">4.4.1 </span>Push Migration</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means to transfer an application to a different user agent in the home network without requiring support of an application server.</p>
</div>
<div id="pull-migration" class="section">
<h4><span class="secno">4.4.2 </span>Pull Migration</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> support transfering an application to a different user agent in the home network without requiring support of an application server. The request is initiated by the target user agent.</p>
</div>
</div>
<div id="security-and-privacy" class="section">
<h3><span class="secno">4.5 </span>Security and Privacy</h3>
<div id="application-trust-level" class="section">
<h4><span class="secno">4.5.1 </span>Application Trust Level</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> provide a means to define the trust level of an application. Determining the trust level may involve interaction with the user and the use of security mechanisms such as password, PIN etc.</p>
</div>
<div id="access-to-home-network-services" class="section">
<h4><span class="secno">4.5.2 </span>Access to Home Network Services</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> allow access to home network devices and services only to trusted applications.</p>
</div>
<div id="prevent-leaking-of-information" class="section">
<h4><span class="secno">4.5.3 </span>Prevent Leaking of Information</h4>
<p><a href="#dfn-conforming-specifications" class="internalDFN">Conforming specifications</a> <em class="rfc2119" title="should">should</em> prevent unauthorized transfer of information outside the home network.</p>
</div>
</div>
</div>
<div id="use-cases" class="section">
<!-- OddPage -->
<h2><span class="secno">5. </span>Use Cases</h2>
<p>This section is a non-exhaustive list of use cases that would be enabled by one (or more) specifications implementing the requirements listed above. Each use case is written according to the following template:</p>
<dl>
<dt>Ux. <TITLE></dt>
<dd>Use case title</dd>
<dt>Description</dt>
<dd><ul>
<li>High level description/overview of the goals of the use case</li>
<li>Schematic illustration (devices involved, work flows, etc.) (Optional)</li>
</ul></dd>
<dt>Motivation</dt>
<dd><ul>
<li>Explanation of the benefit to the ecosystem</li>
<li>Why existing standards cannot be used to accomplish this use case</li>
</ul></dd>
<dt>Dependencies</dt>
<dd>Other use cases, proposals or other ongoing standardization activities which this use case is dependent on or related to.</dd>
<dt>Requirements</dt>
<dd>List of requirements implied by this Use Case.</dd>
</dl>
<div id="u1.-service-user-interface" class="section">
<h3><span class="secno">5.1 </span>U1. Service User Interface</h3>
<dl>
<dt>Description</dt>
<dd>
<p>An application as an interface to a service: the application provides a remote user interface for a device (light switch, HiFi volume control, radio station chooser, etc.) or a service on a device (remote control on the media player software on a computer).</p>
<p>Possible implementation:</p>
<ul>
<li>the application discovers services with a discovery protocol, selects one service of a certain expected type, e.g. a media renderer service.</li>
<li>the application binds to it and provides a UI for it.</li>
<li>on user interaction, the application sends the messages to set the content url to play then play, pause, ... to the media renderer service, with appropriate parameters.</li>
</ul>
</dd>
<dt>Motivation</dt>
<dd>
<p>There is no standard interface to discovery protocols in existing standards implemented in connected devices. There is no standard interface to service communication protocols in existing standards implemented in connected devices. What should be standardized is:</p>
<ul>
<li>an interface to get a list of discovered services;</li>
<li>an interface to get the list of messages exposed by a discovered service;</li>
<li>an interface to send a message to a discovered service;</li>
<li>an interface to set a listener for messages from a discovered service.</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<p>In order to interface with a service, the application first needs to discover the service (or the device, then the service on the device).</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Determine list of discovered services</td>
<td><a href="#service-discovery" class="sectionRef">section 4.2.1 Service Discovery</a></td>
</tr>
<tr>
<td>Determine list of discovered services</td>
<td><a href="#service-discovery" class="sectionRef">section 4.2.1 Service Discovery</a></td>
</tr>
<tr>
<td>Send a message to a discovered service</td>
<td><a href="#service-communication" class="sectionRef">section 4.3.8 Service Communication</a></td>
</tr>
<tr>
<td>Listen to messages (possibly unsolicited) from a discovered service</td>
<td><a href="#service-communication" class="sectionRef">section 4.3.8 Service Communication</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u2.-discovered-content-host" class="section">
<h3><span class="secno">5.2 </span>U2. Discovered Content Host</h3>
<dl>
<dt>Description</dt>
<dd>
<p>A document as host for discovered content: e.g. the document describe content provided by a local, discovered device or service.</p>
</dd>
<dt>Motivation</dt>
<dd>
<p>Rendering a media on another device than the one hosting is the basic step to enable more complex use cases.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Support a document which displays discovered content</td>
<td><a href="#playback-of-content" class="sectionRef">section 4.3.3 Playback of Content</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u3.-service-migration" class="section">
<h3><span class="secno">5.3 </span>U3. Service Migration</h3>
<dl>
<dt>Description</dt>
<dd>
<p>An application moving across HNTF user agents in a decentralized situation (local application, without a server).</p>
<p>A radio service is split into a radio application which resides typically on a HiFi, TV, personal music player or computer, and a radio controller application which resides on a device with intuitive interaction capability such as a phone, computer or tablet. The radio application is implemented as a document exposing a service interface on the network, and has a state that needs preserving if the document is migrated. The radio controller application is a pure interface, and does not have its own state.</p>
<p>The radio application does not have a visual interface. The radio application exposes a service of type JCDsRadioApp with seven possible messages:</p>
<ul>
<li>setURI(radioStationURI, radioName),</li>
<li>play(),</li>
<li>stop(),</li>
<li>setVolume(n),</li>
<li>getURI(),</li>
<li>getRadioName(),</li>
<li>getPlayState(),</li>
<li>getVolume().</li>
</ul>
<p>The radio application is running on a TV set.</p>
<p>The radio controller application has a visual interface, comprising:</p>
<ul>
<li>a button to choose the radio station.</li>
<li>a play button.</li>
<li>a stop button.</li>
<li>a label for the current radio station name.</li>
<li>a volume bar to display the current volume.</li>
<li>two buttons to increase and decrease the volume.</li>
</ul>
<p>The radio controller application is running on a smartphone. The radio controller application looks for a service called JCDsRadioApp by using the HNTF discovery mechanism, then establishes a connection with the above application. The radio controller application gets the radio name, volume, play state of the radio application and displays that information.</p>
<p>The stage is now set.</p>
<p>The user wants to move from the TV in the main room to the computer in her office:</p>
<ul>
<li>In the HNTF user agent on the TV, the user requests to migrate the radio application.</li>
<li>The TV HNTF UA looks for other HNTF UAs on the network, by discovering service "HNTFUserAgentv1.0".</li>
<li>The result of the discovery is a list of HNTF UAs: the one on the phone, the one on the computer, possibly other ones.</li>
<li>The user selects the HNTF UA running on the computer.</li>
<li>The TV HNTF UA sends the message migrate(appURI, contextURI) to the computer HNTF UA.</li>
<li>The computer HNTF UA requests the appURI to get the radio application, then requests the contextURI, which contains all the information needed to place the radio application in the same state it was in on the TV.</li>
<li>The computer HNTF UA loads the radio application, then the context. Loading the context first sets the volume to half and the station to "Jazz".</li>
<li>Then the computer HNTF UA exposes a service of type JCDsRadioApp.</li>
<li>Then the smartphone HNTF UA understands that its connection to the radio application in the TV is down, so it starts again a discovery of service type JCDsRadioApp. It finds one on the computer HNTF UA, and sends a connection request.</li>
<li>The computer HNTF UA receives a connection request from the device mentioned in the migration context as formerly connected. It accepts the connection without requiring a user validation.</li>
</ul>
<p>End of migration.</p>
<p>When moving the radio document, the following needs to be preserved:</p>
<ul>
<li>the service needs to be restarted and exposed on the new device</li>
<li>the connection to the (same) radio controller needs to be reestablished</li>
<li>the radio needs to be playing the same station, with the same volume, etc.</li>
</ul>
<p>Another possible example is a multi-user game, e.g. with lots of players sending location and activity information about their character/cars. Upon migration, the game state needs to be transferred to the new device, and the connections to other players need to be reestablished.</p>
</dd>
<dt>Motivation</dt>
<dd>
<ul>
<li>no way to discover a service from an application</li>
<li>no way to expose a service from an application</li>
<li>no way to move an application to another device and restart it while keeping an execution context</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<p>This use case depends on discovery. This is a refinement of ISSUE-15, where the migrated document uses a service rather than exposes a service.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>User-Agents support a service to transfer a running Application to different User-Agent.</td>
<td><a href="#push-migration" class="sectionRef">section 4.4.1 Push Migration</a></td>
</tr>
<tr>
<td>Applications support the ability to save their current state and provide this information via a contextURI.</td>
<td><a href="#push-migration" class="sectionRef">section 4.4.1 Push Migration</a></td>
</tr>
<tr>
<td>Applications support the ability to restore their state on a different User-Agent using state information provided by a contextURI.</td>
<td><a href="#push-migration" class="sectionRef">section 4.4.1 Push Migration</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u4.-service-distribution" class="section">
<h3><span class="secno">5.4 </span>U4. Service Distribution</h3>
<dl>
<dt>Description</dt>
<dd>
<p>An application spawning other applications on other devices and communicating with them: e.g. the TV set receives and renders an application implementing some voting; the application discovers multiple phones in the home, proposes to activate voting interfaces on each of the viewers' phones, communicates with the voting interfaces, collates votes and sends them back to the channel's voting service.</p>
<p>Possible implementation:</p>
<ul>
<li>The TV receives a connected TV application for voting, which starts automatically.</li>
<li>The application exposes a service on the HN to collect votes and forward them to the TV channel.</li>
<li>The application discovers personal interactive devices (phones and tablets for our case) running the HNTF document UA which exposes a recognizable service.</li>
<li>The application sends a <i>suggest</i> message with a URL to a voting interface.
</li><li> Willing users accept the suggested migration and their UA loads the voting interface.
</li><li> The voting interface document loads and discovers and binds to the vote collecting service.
</li><li> The user votes
</li><li> The voting interface document sends a <i>vote</i> message to the vote collecting service.
</li><li> The vote collecting service exposed by the TV application receives the <i>vote</i> message and forwards them for a certain voting period.
</li><li> At the end of the show (or of the voting period), the application is killed by the TV system, so the voting collection service disappears.
</li><li> Seeing the voting collection service disappear, the voting interfaces may shut down.
</li></ul>
<p>This use case does not require new technology, but reuses technology required by other use cases. Technologies required by other use cases are:</p>
<ul>
<li>the ability to discover</li>
<li>the ability to expose a service</li>
</ul>
<p>This use case requires:</p>
<ul>
<li>the HNTF UAs to implement a service which could be called "HNTF service", so that documents can discover other "HNTF UAs"</li>
<li>the HNTF service to include a "suggest" message telling the UA to please render a document given by URL</li>
<li>maybe the HNTF service to include a message allowing a document to determine its capabilities, to be able to segregate between devices appropriate for voting or not.</li>
</ul>
<p>A few sketches for clarification:</p>
<p><a href="ServiceDistributionUC1.jpg"><img alt="Step 1: TV receives voting document from a server" src="ServiceDistributionUC1.jpg" width="600" height="450" /></a></p>
<p><a href="ServiceDistributionUC2.jpg"><img alt="Step 2: document discovers devices" src="ServiceDistributionUC2.jpg" width="600" height="450" /></a></p>
<p><a href="ServiceDistributionUC3.jpg"><img alt="Step 3: document spawns sub-documents (by reference)" src="ServiceDistributionUC3.jpg" width="600" height="450" /></a></p>
<p><a href="ServiceDistributionUC4.jpg"><img alt="Step 4: devices which approved spawn fetch sub-documents" src="ServiceDistributionUC4.jpg" width="600" height="450" /></a></p>
<p><a href="ServiceDistributionUC5.jpg"><img alt="Step 5: local communication between documents" src="ServiceDistributionUC5.jpg" width="600" height="450" /></a></p>
</dd>
<dt>Motivation</dt>
<dd>
<p>This is the generic version of a crucial "second screen" usage scenario.</p>
<p>As there are more devices in the home, some generic and some task-specific, and with varying capabilities (including different UI methods), there is a growing need to spread an application across different devices to achieve service distribution. But the service usually "enters" the home network through one particular device. The service running entirely on the initial device, as part of other use cases, can discover its environment and determine that other devices could meaningfully contribute to the quality of experience. From then on, the service needs to send part of "itself" to other devices.</p>
</dd>
<dt>Dependencies</dt>
<dd>
<ul>
<li><a href="#u1.-service-user-interface" class="sectionRef">section 5.1 U1. Service User Interface</a></li>
<li><a href="#u6.-application-exposing-a-service" class="sectionRef">section 5.6 U6. Application Exposing a Service</a></li>
<li><a href="#u7.-application-discovering-a-service" class="sectionRef">section 5.7 U7. Application Discovering a Service</a></li>
</ul>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>A document exposes an interface to a service</td>
<td><a href="#service-discovery" class="sectionRef">section 4.2.1 Service Discovery</a>
<br /><a href="#service-communication" class="sectionRef">section 4.3.8 Service Communication</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u5.-3-box-model" class="section">
<h3><span class="secno">5.5 </span>U5. 3-Box Model</h3>
<dl>
<dt>Description</dt>
<dd>
<p>A document as an interface coordinating action between other services. In the most obvious example, a document discovers media content sources and media players. The document allows the user to select a source and a player, then control playback (Play, pause, rewind, etc.) of the content to the player.</p>
</dd>
<dt>Motivation</dt>
<dd>
<p>Assets offered by one service (on one device) can be consumed by another service (on another device) and controlled by a separate controlling document (on a third device). Vendors can offer control services to manage services across the whole home.</p>
</dd>
<dt>Dependencies</dt>
<dd>
<p>This is similar to Service User Interface (see <a href="#u1.-service-user-interface" class="sectionRef">section 5.1 U1. Service User Interface</a>) but it explicitly manages services between independent devices, multiple simultaneous </p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>An application may invoke services to control devices on other User-Agents separate from the User-Agent issuing the service requests</td>
<td><a href="#x3-box-model" class="sectionRef">section 4.3.5 3 Box Model</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u6.-application-exposing-a-service" class="section">
<h3><span class="secno">5.6 </span>U6. Application Exposing a Service</h3>
<dl>
<dt>Description</dt>
<dd>
<p>An application exposes a service on the home network. In order to allow this with some technologies, it may be necessary for the HNTF user agent to advertise itself on the HN as a device. For example, an application rendered on a connected TV has access to the connected TV API for EPG information. Other devices on the HN do not have access to this information. The application implements a service exposing the EPG information and makes it discoverable by other devices.</p>
<p>Possible implementation:</p>
<ul>
<li>the application A is a TV-broadcast-related application, which is allowed to call the function returning the description of the next program.</li>
<li>the application A exposes a service with one message getNextProgramDescription.</li>
<li>application B on another device discovers the service (not knowing that it is an application, it is just another service to application B).</li>
</ul>
<p>Neither application A or B know the actual nature of the other. They may have an IP address, and they share a service type.</p>
</dd>
<dt>Motivation</dt>
<dd>
<p>Allowing sharing resources other than content, such as a capability (a large screen, a sensor) or an "authorization" (permission to use a restricted API).</p>
</dd>
<dt>Dependencies</dt>
<dd>
<p>This is a prerequisite to applications discovering each other without a "middle man": one of the two applications exposes a service that the other application may discover.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>An application can cause a User-Agent to act as a device which exposes services</td>
<td><a href="#services-advertisement" class="sectionRef">section 4.2.5 Services Advertisement</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u7.-application-discovering-a-service" class="section">
<h3><span class="secno">5.7 </span>U7. Application Discovering a Service</h3>
<dl>
<dt>Description</dt>
<dd>
<p>An application discovers a service. Discovery means that after discovery, the application has:</p>
<ul>
<li>an identification of a device (maybe) and a service;</li>
<li>a means to know the messages that can be exchanged, possibly with their parameters;</li>
<li>a means to send messages to the service, if the service may receive messages;</li>
<li>a means to receive messages from the service, if the service may send messages.</li>
</ul>
</dd>
<dt>Motivation</dt>
<dd>
<p>Very basic use case, on which all other use cases depend. There is no existing way for an application to discover services and communicate with them, if the author did not have the address of the service.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>An application can determine allowable messages and parameters provided by a service</td>
<td><a href="#service-discovery" class="sectionRef">section 4.2.1 Service Discovery</a></td>
</tr>
<tr>
<td>An application can send messages to a service</td>
<td><a href="#service-communication" class="sectionRef">section 4.3.8 Service Communication</a></td>
</tr>
<tr>
<td>An application can receive messages from a service</td>
<td><a href="#service-communication" class="sectionRef">section 4.3.8 Service Communication</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u8.-application-push-migration" class="section">
<h3><span class="secno">5.8 </span>U8. Application Push-Migration</h3>
<dl>
<dt>Description</dt>
<dd>
<p>An application moving across devices in a decentralized situation (local application, without a server).</p>
<p>I start using my phone for the user interface to a device and then my tablet becomes available, so I move the interface application to the tablet. The application in question is an HNTF application, which means it has discovered services and has connections to some services and a history of execution. Just restarting the application on another device would lose the execution state, the existing connections, etc...</p>
<ul><li> I start using my phone as a UI of a service on my TV, e.g. EPG, but the screen is small.
</li><li> My tablet finally becomes available.
</li><li> I request the migration of the current application: this is a user agent function.
</li><li> The user agent discovers its peers on the network, i.e. other user agents capable of running the current document.
</li><li> The user agent proposes to me a list of suitable user agents, including the one running on the tablet.
</li><li> I choose the user agent running on the tablet.
</li><li> The UA on the phone binds to the UA on the tablet, and sends a migration message with the URL of the document, and the URL of the execution state.
</li><li> The UA on the tablet receives the migration message, fetches the application and the execution state and loads both.
</li><li> The UA on the tablet signals to the UA on the phone that migration is complete, by replying "success" to the migration message.
</li><li> The UA on the phone stops rendering the migrated application.
</li><li> I pick up the tablet and go on with the service at the point I left it on the phone.
</li></ul>
</dd>
<dt>Motivation</dt>
<dd>
<p>There is no way with current standards and in the absence of a central server to achieve the saving and transfer of the execution state of a widget, so there is no way to start an application on a device, switch devices and restart the application on the new device, keeping the exact same execution state.</p>
</dd>
<dt>Dependencies</dt>
<dd>
<p>This use case depends on discovery.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>User-Agents support a service to transfer a runningapplication from another User-Agent to itself</td>
<td><a href="#push-migration" class="sectionRef">section 4.4.1 Push Migration</a></td>
</tr>
<tr>
<td>Applications support the ability to save their current state and provide this information via a contextURI</td>
<td><a href="#push-migration" class="sectionRef">section 4.4.1 Push Migration</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u9.-application-pull-migration" class="section">
<h3><span class="secno">5.9 </span>U9. Application Pull-Migration</h3>
<dl>
<dt>Description</dt>
<dd>
<p>An application moving across devices in a decentralized situation (local application, without a server), <strong>the migration being initiated on the target device</strong>.</p>
<p>I start using my phone for the user interface to a device and then my tablet becomes available, so I move the interface application to the tablet by interacting with the tablet. The application in question is an HNTF application, which means it has discovered services and has connections to some services and a history of execution. Just restarting the application on another device would lose the execution state, the existing connections, etc...</p>
<ul>
<li>I start using my phone as a UI of a service on my TV, e.g. EPG, but the screen is small.</li>
<li>My tablet finally becomes available.</li>
<li>I drop my phone.</li>
<li>I take the tablet, start the HNTFUA and request a list of discoverable HNTFUAs on the tablet: this is a user agent function.</li>
<li>I start the HNTFUA of the phone and request from it a list of pullable applications and I choose one in the list.</li>
<li>The UA on the tablet sends a pull-migration message with the identifier of the wanted application chosen from the above list.</li>
<li>The UA on the tablet receives the response to the pull-migration message, i.e. the url of the application and the url of the execution state, fetches the application and the execution state and loads both.</li>
<li>The UA on the tablet signals to the UA on the phone that migration is complete.</li>
<li>The UA on the phone stops rendering the migrated application.</li>
</ul>
</dd>
<dt>Motivation</dt>
<dd>
<p>Same as ISSUE-15, with the additional twist of triggering the migration from the target device rather than the source device.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>User-Agents support a service to notify a running application of a request to transfer itself to another User-Agent</td>
<td><a href="#pull-migration" class="sectionRef">section 4.4.2 Pull Migration</a></td>
</tr>
<tr>
<td>Applications support the ability to save their current state and provide this information via a contextURI</td>
<td><a href="#pull-migration" class="sectionRef">section 4.4.2 Pull Migration</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u10.-media-identification" class="section">
<h3><span class="secno">5.10 </span>U10. Media Identification</h3>
<dl>
<dt>Description</dt>
<dd>
<p>Where available, applications should be able to determine and refer to programmes using a unique and consistent identifier. If the same programme is available from multiple devices or services, the programme should have the same identifier associated with it across all devices or services.</p>
<p>Scenario: An application, wants to present more information associated with a particular programme that the user is currently viewing on their television, without the television acting as an intermediary that serves that additional information.</p>
<ol>
<li>The application discovers an appropriate service</li>
<li>The application sends a request to the service to return an identifier for the programme currently playing on the television</li>
<li>The application discovers a service that can return metadata for an identified programme</li>
<li>The application sends a request to the service to retrieve a unique identifier for the programme that was assigned by the original broadcaster, content publisher or content creator</li>
<li>The application contacts an internet service that can resolve identifiers to additional programme metadata</li>
<li>The internet service returns additional metadata for the programme</li>
</ol>
</dd>
<dt>Motivation</dt>
<dd>
<ul>
<li>Allows anyone (not just the original content creator or distributor) to create an application that can associate programmes with metadata and web based content; without that metadata or content having to be delivered, or referenced by data served from services on the television or set top box.</li>
<li>Recommendations to be fed to any groups defining home network protocols to add global content identifier support where not present</li>
<li>Areas for standardization: (Application specific API/protocols)
<ul>
<li>Requirement for any high level media playback API abstractions (see issue-20) should include the ability to:
<ul>
<li>expose such identifiers as part of programme metadata</li>
<li>search for programmes using such identifiers</li>
<li>request playback of a programme using such an identifier</li>
</ul></li>
<li>This use case does not suggest mandating a particular identifier format.</li>
</ul>
</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<p><a href="#u11.-tv-control" class="sectionRef">section 5.11 U11. TV Control</a> (for outlined user scenario)</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Provide consistent program identifiers which are meaningful across multiple devices</td>
<td><a href="#media-identification" class="sectionRef">section 4.2.6 Media Identification</a></td>
</tr>
<tr>
<td>Provide a means to obtain metadata corresponding to program identifiers</td>
<td><a href="#media-identification" class="sectionRef">section 4.2.6 Media Identification</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u11.-tv-control" class="section">
<h3><span class="secno">5.11 </span>U11. TV Control</h3>
<dl>
<dt>Description</dt>
<dd>
<p>An API, or service, for simplified control of key functionality of television devices, including those with integrated broadcast receivers and limited or no media streaming capabilities. The application defines its own user interface, independent of the user interface of the television device.</p>
<p>Application developers would benefit from a simplified API or services that provide:</p>
<ul>
<li>A single unified directory of programmes that a given rendering device (e.g. television display) is able to obtain and play. The application does not have to check, for itself, across multiple sources of content and for any issues of codec, container format, and transport protocol compatibility.</li>
<li>A single simple method for requesting a programme or channel to be presented by a rendering device, irrespective of the above factors.</li>
</ul>
<p>It is also desirable to be able to control other common aspects of television functionality through the same API.</p>
<p>The target of the API would be a processing engine on the home network. For a Javascript API this processing engine could be incorporated into the user agent. Alternatively, it could be implemented by any other device on the home network, including the television device itself. For the latter case, the user agent must be able to discover and communicate with the processing engine in order to execute the functions of the API.</p>
<p>The processing engine may, when appropriate, utilize existing home networking protocols to perform its function. For example: it may use UPnP AV services to discover and stream content.</p>
<p>Scenario 1: Basic programme guide application: The application uses the API to perform the following tasks:</p>
<ul>
<li>The application sends a request to discover television devices on the home network</li>
<li>The application sends a request to ask for the identity of the programme currently being presented on the television, and the source (e.g. television channel)</li>
<li>The application sends a request to retrieve basic programme metadata (title, description, start and end times) and displays this for the user</li>
<li>The application sends a request to retrieve a list of sources (e.g. channels) of programmes that can be displayed on the television</li>
<li>The application sends a request to retrieve a list of programmes, and their basic metadata for those sources for presentation to the user</li>
<li>The application sends a request to cause a given channel or programme be played on the television.</li>
</ul>
<p>Extension to scenario 1: Control of other television functions:</p>
<ul>
<li>The application can send a request to change the volume of the television</li>
<li>The application can enable or disable accessibility features such as subtitles or audio-description</li>
<li>The application can request to seek (jump to a different time point) within the programme being played</li>
</ul>
<p>Scenario 2: A web site with material supporting a particular programme wants to be able to offer to play the programme on a television if it is available. A possible interaction (via the API):</p>
<ul>
<li>The application sends a request to discover television devices on the home network</li>
<li>The application makes a request to query if a specific programme is available to the television. If it is available, the application offers the choice to the user to display it.</li>
<li>If the user accepts, the application requests that programme be played on the television.</li>
</ul>
<p>Each of the interactions described should be ideally achievable a single call to an API or service method.</p>
</dd>
<dt>Motivation</dt>
<dd>
<ul>
<li>Simplify creation of applications that will work with a range of devices and variety of means by which a given programme might played on the television.</li>
<li>Standardization could facilitate a new ecosystem of interfaces.</li>
<li>Existing standards for home network communication are not commonly available from the browser context and expose functionality at a lower level.</li>
<li>What could be standardized:
<ul>
<li>Type of use case: Application specific services / protocols / APIs</li>
<li>A Javascript API</li>
<li>Service(s) for television type devices on the home network</li>
</ul>
</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<ul>
<li><a href="#u7.-application-discovering-a-service" class="sectionRef">section 5.7 U7. Application Discovering a Service</a></li>
<li>Scenario 2 requires <a href="#u10.-media-identification" class="sectionRef">section 5.10 U10. Media Identification</a></li>
</ul>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Provide a directory of programs a rendering device can play</td>
<td><a href="#control-of-content-players" class="sectionRef">section 4.3.1 Control of Content Players</a></td>
</tr>
<tr>
<td>Provide a service to select a program on a rendering device to play</td>
<td><a href="#control-of-content-players" class="sectionRef">section 4.3.1 Control of Content Players</a></td>
</tr>
<tr>
<td>Provide services to control other aspects of a rendering device such as Seek, Volume, etc.</td>
<td><a href="#control-of-content-players" class="sectionRef">section 4.3.1 Control of Content Players</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u12.-time-synchronization" class="section">
<h3><span class="secno">5.12 </span>U12. Time Synchronization</h3>
<dl>
<dt>Description</dt>
<dd>
<p>Applications should be able to time synchronize their activity with the time-line of a programme being played on a television or other home media rendering device.</p>
<p>Application developers will benefit from having a single simple API that provides a unified interface to this functionality, irrespective of the means by which the programme is being delivered to, or played by, the television device.</p>
<p>The application is running on a different device from where the programme is being played. This could be a laptop, mobile phone, tablet, etc. Both devices are on the same home network. The device playing the programme may be a television or other media rendering device. The programme being played may be being obtained by a variety of different means:</p>
<ul>
<li>from a live broadcast via an integrated tuner</li>
<li>playback from local storage (e.g. a Personal Video Recorder device)</li>
<li>streaming from another device on the home network</li>
<li>streaming from an on-demand internet service</li>
</ul>
<p>The target of the API would be a processing engine on the home network. For a Javascript API this processing engine could be incorporated into the user agent. Alternatively, it could be implemented by any other device on the home network, including the television device itself. For the latter case, the user agent must be able to discover and communicate with the processing engine in order to execute the functions of the API.</p>
<p>The processing engine may, when appropriate, utilize existing home networking protocols to perform its function. For example: it may use UPnP AV services to query and set the playback time index.</p>
<p>An API meeting these requirements may enable an application to:</p>
<ul>
<li>request the current playback time index of the programme being played on a given device</li>
<li>command the device to jump to a different playback time index</li>
<li>request notification when programme playback reaches a particular moment or time interval in the programme timeline.</li>
</ul>
<p>Scenario: An application wants to present a slideshow of content relating to the programme the user is watching on their television. As the programme progresses, the slideshow automatically moves onto the correct slide for any given point in the programme. If it is possible to seek within the programme timeline (because the programme is not being watched from a live broadcast), the user can use the application to jump to a different point in the presentation and the television will also seek to the corresponding segment of the programme.</p>
</dd>
<dt>Motivation</dt>
<dd>
<ul>
<li>Simplify creation of applications that will work with a range of devices and variety of means by which a given programme might played on the television.</li>
<li>Enable the creation of added-value viewing experience for the user where additional information is available in a timely fashion without interrupting the TV viewing experience or increasing on screen 'clutter'.</li>
<li>What could be standardized:
<ul>
<li>Type of use case: Application specific services / protocols / APIs</li>
<li>A Javascript API</li>
<li>Services or protocols implemented by devices on the home network</li>
</ul></li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<ul>
<li><a href="#u7.-application-discovering-a-service" class="sectionRef">section 5.7 U7. Application Discovering a Service</a></li>
<li><a href="#u10.-media-identification" class="sectionRef">section 5.10 U10. Media Identification</a> required for an application to know which content to provide for the programme being watched in the described scenario.</li>
<li>This use case could be considered an extension of <a href="#u11.-tv-control" class="sectionRef">section 5.11 U11. TV Control</a></li>
</ul>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Provide ability to generate notification to application when a particular playback time is reached</td>
<td><a href="#time-synchronization" class="sectionRef">section 4.3.6 Time-synchronization</a></td>
</tr>
<tr>
<td>Provide the ability to position playback to a specified time-index</td>
<td><a href="#time-synchronization" class="sectionRef">section 4.3.6 Time-synchronization</a></td>
</tr>
<tr>
<td>Obtain the current playback time-index</td>
<td><a href="#time-synchronization" class="sectionRef">section 4.3.6 Time-synchronization</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u13.-lip-sync-time-synchronization" class="section">
<h3><span class="secno">5.13 </span>U13. Lip Sync Time Synchronization</h3>
<dl>
<dt>Description</dt>
<dd>
<p>This use case is a specialization of the use case Time Synchronisation (see <a href="#u12.-time-synchronization" class="sectionRef">section 5.12 U12. Time Synchronization</a>)</p>
<p>An application should be able to synchronize the presentation of its own content with a high degree of accuracy to the timeline of a programme being played on a television or other home media rendering device. The level of accuracy should be sufficient to achieve 'lip-sync' between audio and video (typically within 1 to 2 video frames or tens of milliseconds).</p>
<p>In addition to the functions described in the Time Synchronisation use case; the API used by the application should be able to:</p>
<ul>
<li>report an estimate of the timing synchronism accuracy that is achievable</li>
<li>provide synchronization to within lip-sync accuracy if all devices involved support it</li>
</ul>
<p>The processing engine that implements the API may utilize existing home networking protocols to achieve the required accuracy. A likely necessary component will be the synchronization of clocks between the television or media rendering device and the device on which the application is running. Possible protocols that might be used to achieve this include: Precision Time Protocol (IEEE 1588-2002) [<cite><a class="bibref" rel="biblioentry" href="#bib-IEEE1588">IEEE1588</a></cite>], IEEE 802.1AS [<cite><a class="bibref" rel="biblioentry" href="#bib-IEEE802-1AS">IEEE802-1AS</a></cite>], UPnP Precision Time Synchronization [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-AVT3">UPNP-AVT3</a></cite>].</p>
<p>Applications will benefit if the API presents a simple unified set of functions such that the application does not need know which protocols are being used.</p>
<p>Scenario: An application plays alternative audio that is time synchronized to a programme that the user is watching. The synchronization is sufficiently accurate to maintain 'lip-sync' between the alternative audio and the programme video. The alternative audio may be delivered to the application independently of the television device - such as via a direct stream from a broadcaster's internet based server.</p>
</dd>
<dt>Motivation</dt>
<dd>
<ul>
<li>Simplify creation of applications requiring lip-sync accurate time synchronization that will work with a range of devices and variety of means by which a given programme might be played on the television.</li>
<li>What could be standardized:
<ul>
<li>Type of use case: Application specific services / protocols / APIs</li>
<li>A Javascript API</li>
<li>Services or protocols implemented by devices on the home network</li>
</ul>
</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<p>This use case is a specialization of the Time Synchronization use case (see <a href="#u12.-time-synchronization" class="sectionRef">section 5.12 U12. Time Synchronization</a>)</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Determine the time synchronization capabilities of home-network devices</td>
<td><a href="#accurate-time-synchronization" class="sectionRef">section 4.3.7 Accurate Time-synchronization</a></td>
</tr>
<tr>
<td>Provide the capability for applications to synchronize with playback content to approximately frame resolution</td>
<td><a href="#accurate-time-synchronization" class="sectionRef">section 4.3.7 Accurate Time-synchronization</a></td>
</tr>
<tr>
<td>Provide the capability to precisely synchronize multiple content streams</td>
<td><a href="#accurate-time-synchronization" class="sectionRef">section 4.3.7 Accurate Time-synchronization</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u14.-local-link-of-web-applications" class="section">
<h3><span class="secno">5.14 </span>U14. Local Link of Web Applications</h3>
<dl>
<dt>Description</dt>
<dd>
<p>This use case is about the bi-directional communication between web applications via the local IP network e.g. Home IP network.</p>
<p>Assumptions:</p>
<ul>
<li>User devices are connected to the same local IP network</li>
<li>The applications on user devices know each other and can exchange messages for communications</li>
<li>Note that the applications may not necessarily be provided by the same distributor or service provider</li>
<li>A user uses the IR remote controller to operate the HTML5 browser on the TV device (10 feet UI)</li>
<li>A user uses the touch screen to operate the HTML5 browser on the tablet device or smart phone (Touch UI)</li>
<li>Note that the application may not necessarily to be a web application as long as it communicates by the same network protocols as the user-agent does.</li>
</ul>
<p>User Scenario A - Single User:</p>
<ul>
<li>Bob operates the TV device to watch movies on an online video service</li>
<li>Bob also operates the tablet device to access a social network service about movies</li>
<li>Bob views web pages of the social network service and find a favorite movie</li>
<li>Bob clicks the “your device” button on the web page of the social network service</li>
<li>The application on the TV device show the web page of the video service about the movie, then Bob starts to watch the movie</li>
</ul>
<p>User Scenario B - Multiple Users:</p>
<ul>
<li>Bob operates his smart phone to use an application for a picture service</li>
<li>Alice operates her smart phone to access another picture application</li>
<li>Bob selects his favorite picture and clicks the “Sharing photo with other device” on the application</li>
<li>The application on Bob’s device shows the device name list and he selects the Alice’s device</li>
<li>The picture file is transferred from the Bob’s device to the Alice’s device while each application shows the progress bar of file transfer</li>
<li>After the transfer is completed, the application on the Alice’s device shows the Bob’s favorite picture</li>
</ul>
<p>User Scenario - Interactive Quiz:</p>
<ul>
<li>Alice and Bob operates the TV device to watch a quiz programme, from live broadcast</li>
<li>Alice and Bob also operate their smart phones to access a quiz application</li>
<li>Note: The smart phone quiz application knows that the quiz programme is being watched on the TV and establishes communication with an interactive application on the TV that is active during the quiz programme)</li>
<li>The TV application overlays on-screen information informing Alice and Bob that they are now taking part in the quiz.</li>
<li>As a question is asked in the quiz programme, the interactive TV application instructs Alice and Bob's smart phone quiz applications to ask Alice and Bob the same questions. Alice and Bob enter answers to the questions using their smart phones, which are relayed back to the interactive TV application.</li>
<li>Between quiz rounds, Alice and Bob's scores are displayed on their smart phones and overlayed on screen by the TV interactive application. Scores are compared to those of the contestants featuring in the programme.</li>
<li>Note: Regarding need/justification: Using local-link communication to an interactive application provided as part of a broadcast stream provides a way around scalability concerns if participation is substantial for a particularly popular programme.</li>
</ul>
<p>Use case (System Interactions):</p>
<ul>
<li>A User-Agent discovers other Users agent on the same IP-sub network</li>
<li>Via API, the User-Agent provides the discovered application list which contains the applications which are running on other user-agent, e.g. application id, the URL for message exchange, physical device name(for user selection)</li>
<li>The application establishes the bi-directional communication for message exchanges with the application on the other user-agent via API</li>
</ul>
<p>Implementation examples:</p>
<ul>
<li>For the local discovery, the HTML5 browser implements UPnP Discovery to provide the generic discovery API to find applications on the same IP sub-network</li>
<li>For the message exchange, the HTML5 browser implements the extended WebSocket protocol and APIs for bi-directional communications</li>
<li>The HTML5 browser should implement some mechanism to confirm the user consensus to permit the device discovery and message exchanges for the applications</li>
</ul>
<p>Additional comments:</p>
<ul>
<li>The above user scenarios are examples. As long as the message exchange API is service/application agnostic, many rich user experience can be realized as the open web platform does</li>
</ul>
</dd>
<dt>Motivation</dt>
<dd>
<p>The “Local Link” enables applications to exchange message, e.g. String, Blob, via the local network directly. Without the “local Link”, the applications which are running on different devices can in-directly communicate via a service on the Internet. But, the “Local Link” has the following benefits:</p>
<ul>
<li>Adhoc: Without any syndication of services, the applications provided by different services can communicate each other's in ad-hoc. Also, all devices are not required to be bound to the same service. This is a kind of service mash-up using multiple devices</li>
<li>Efficient: A large size of files can be transferred between devices via high bandwidth local network connection.</li>
<li>Off-line: Even if the Internet access is not available, the applications can still communicate</li>
<li>User-centric: Users can easily recognize which devices communicate. Only devices on the same network are listed and the communications of different user device are based on the user consent</li>
</ul>
<p>There are some standards of local discovery, e.g. UPnP, Bonjour, WS-Discovery, but there is no standard of the JavaScript API which enables communications between Web applications in the manner of application/service agnostic.</p>
<p>What needs to be standardized:</p>
<ul>
<li>Type of use case: Generic APIs</li>
<li>General service discovery and messaging APIs should be standardized</li>
<li>Network protocols for the APIs should be specified</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<p>Any other use cases related to the local IP network discovery since the discovery is also application/service agnostic</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Support applications communicating with each-other via ad-hoc messages</td>
<td><a href="#application-communication" class="sectionRef">section 4.3.9 Application Communication</a>
<br /><a href="#application-discovery" class="sectionRef">section 4.2.2 Application Discovery</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u15.-home-network-enabled-user-agent---network-media-player" class="section">
<h3><span class="secno">5.15 </span>U15. Home Network Enabled User-Agent - Network Media Player</h3>
<dl>
<dt>Description</dt>
<dd>
<p>Enable a User-Agent to act as a Home Network Media Player</p>
<p>The User-Agent acts as a Home Network Media Player device. For example (steps further detailed below):</p>
<ol>
<li>List available Home Network Media Server devices.</li>
<li>List available content on a Home Network Media Server.</li>
<li>List available content on a Home Network Media Server matching specified metadata criterion.</li>
<li>Determine capabilities of User-Agent playback facilities provided to Home Network Media Player. Ex: supported content formats, number of streams, supported resolution(s).</li>
<li>Play content from a Home Network Media Server.</li>
<li>View EPG data from a Home Network Media Server.</li>
<li>Tune and play live programs from a Home Network Media Server capable of streaming live content.</li>
<li>Select and play recorded content from a Home Network Recording device.</li>
<li>Select and play time-shifted content.</li>
</ol>
<p>Detailed steps for "List available Home Network Media Server devices":</p>
<ol>
<li>Web page issues a method to discover home network devices</li>
<li>User-Agent gets an event indicating the list is ready.</li>
<li>User-Agent retrieves a list of handles representing the discovered devices</li>
<li>Web page issues a method to get information about each discovered device</li>
<li>Web page retains handles for devices of the appropriate type.</li>
<li>Web page displays available devices to end-user.</li>
<li>End-User selects one of the displayed devices.</li>
<li>Web page issues method to access the device.</li>
<li>User-Agent responds that a password is required.</li>
<li>Web page obtains the password from the end-user (or secure password store) and issues method to provide the password to the User-Agent</li>
<li>Web page can now access the device.</li>
</ol>
<p>Detailed steps for "List available content on a Home Network Media Server":</p>
<ol>
<li>Web page formats an action request to browse the Home Network device metadata containers for EPG Items matching desired channel/time ranges.</li>
<li>Web page issues method to send action request to selected Home Network device</li>
<li>User-Agent sends request to Home Network Media Server device.</li>
<li>User-Agent generates event when Home Network device responds (or times-out)</li>
<li>Web page gets response (XML document) from Home Network Media Server device.</li>
<li>Web page displays containers and items as indicated in XML document
<br /><em>This depends on the data representation of Home Network Media Server content metadata.</em></li>
<li>Web page displays the information in the Home Media Server response.</li>
</ol>
<p>Detailed steps for "List available content on a Home Network Media Server matching specified metadata criterion":</p>
<ol>
<li>Web page formats an action request to determine searchable metadata on the selected Home Network device metadata store.</li>
<li>Web page issues method to send action request to selected Home Network device.</li>
<li>Web page formats an action request to search the Home Network device metadata store.</li>
<li>Web page issues method to send action request to selected Home Network device</li>
<li>User-Agent sends request to Home Network Media Server device.</li>
<li>User-Agent generates event when Home Network device responds (or times-out)</li>
<li>Web page gets response (XML document) from Home Network Media Server device.</li>
<li>Web page displays containers and items as indicated in XML document</li>
</ol>
<p>Detailed steps for "Play content from a Home Network Media Server":</p>
<ol>
<li>End-user select displayed Home Network Media Server item for playback.</li>
<li>Web page formats an action request to browse metadata for selected item.</li>
<li>User-Agent sends request to Home Network Media Server device.</li>
<li>User-Agent generates event when Home Network device responds (or times-out)</li>
<li>Web page gets response (XML document) from Home Network Media Server device.</li>
<li>Web page selects media binary format that is compatible with User-Agent.</li>
<li>Web page displays Media Player using HTML5 <code><video></code> element.</li>
<li>Web page transfers item URL to <code><video></code> element <code>@src</code> (or creates <code><source></code> element as child element)</li>
</ol>
<p>Detailed steps for "View EPG data from a Home Network Media Server":</p>
<ol>
<li>Web page formats an action request to determine root container(s) for EPG data on the selected Home Network device metadata store.</li>
<li>Web page issues method to send action request to selected Home Network device.</li>
<li>Web page formats an action request to search the Home Network device metadata store.</li>
<li>Web page issues method to send action request to selected Home Network device</li>
<li>User-Agent sends request to Home Network Media Server device.</li>
<li>User-Agent generates event when Home Network device responds (or times-out)</li>
<li>Web page gets response (XML document) from Home Network Media Server device.</li>
<li>Web page displays EPG containers and EPG items as indicated in XML document</li>
</ol>
<p>Detailed steps for "Tune and play live programs from a Home Network Media Server capable of streaming live content":</p>
<ol>
<li>Web page formats an action request to determine root container(s) for Channel Lineup metadata on the selected Home Network device.<br />
Notes:
<ul>
<li>Multiple Channel Lineup containers may represent either an aggregate of multiple channel sources (Broadcast, Cable, Satellite) or selected channel sources (“Favorite Channels” for instance).</li>
<li>Channel Lineup containers contain Channel Items which are metadata bundles of channel related properties. Some example of channel properties are: Channel Name, Channel Number, Channel Icon, Channel Preview Stream.</li>
<li>A Channel Item contains metadata describing one or more URLs which stream the channel's binary content. Access to one of these URL implies any tuning operations necessary to make the requested channel source available.</li>
</ul>
</li>
<li>Web page formats a channel listing based on Channel Items found. In addition the Web page may construct a subset of available Channel Items based previously stored end-user selections.</li>
<li>Web page may support a Channel Up/Down notion based on an ordering of channels selected by the end-user of by using metadata properties of the Channel Items (Channel Number, Channel Name, etc.)</li>
<li>Web page will typically offer the end-user the ability to select a channel for playback. The Web page will generate a <code><video></code> element referencing the channel's streaming URL provided by the Channel Item metadata.</li>
</ol>
<p>Detailed steps for "Select and play recorded content from a Home Network Recording device":</p>
<ol>
<li>Web page formats an action request to determine root container(s) for Recorded Content metadata on the selected Home Network device.
<br />Notes:
<ul>
<li>Recorded Content Items are similar to stored Content Items. However, Recorded Content Items may contain metadata containing the ID of the Recording Service request that resulted in the creation of this item.</li>
</ul></li>
<li>Web page display information about recorded content item.</li>
<li>Web page offers end-user the ability to play recorded item.</li>
<li>Web page offers end-user the ability to manipulate the Recording request which created the item.</li>
</ol>
<p>Notes for "Select and play Time-Shift recorded content from a Home Network Recording device":</p>
<ul>
<li>Time-shift recording is an important variant of Network Recording. For Time-Shift recording no explicit request is required to record content; instead, the recording device automatically records the currently tuned channel (or favorite channel) in a circular buffer. Recorded content may be organized as one of more blocks of continuous content or as a list of separate captured programs.</li>
<li>Time-shift recording generates temporary Content Items (bundles of content metadata). These content items are typically pointed to by the Channel Item that the content was captured from. For Time-shift Content Items some additional metadata properties are defined to indicate that the recording of an item may not be complete, and/or that a Content Item may represent a partial recording the original content.</li>
</ul>
<p>Detailed steps for "Select and play Time-Shift recorded content from a Home Network Recording device":</p>
<ol>
<li>Web page access Channel Items (as described in prior use-case)</li>
<li>Web page detects Channel Item lists to one or more Content Items as preserved content.</li>
<li>Web page displays preserved Content Items which is available for the channel.</li>
<li>Web page offers user ability to play preserved content by accessing URL in preserved Content Item.</li>
<li>Web page offers user ability to convert preserved content to permanently recorded content by offering preserved Content Item(s) to the Network Recording service.</li>
</ol>
</dd>
<dt>Motivation</dt>
<dd>
<ul>
<li>Existing Home Network interfaces do not (by scope/tradition) standardize user interface control. However, the combination of HTML markup and Javascript allow both access to Home Network devices functions and access to very capable user interface resources.</li>
<li>Why were you not able to use only existing standards to accomplish this?
<ul>
<li>HTML User-Agents do not provided the abstractions necessary for Javascript to issue discover and issue commands to home network devices.</li>
<li>Basic access methods to home network devices need to be standardized so that developers can implement pages to control Home Network devices using Javascript/HTML.</li>
</ul>
</li>
<li>What might you suggest could be standardized?
<ul>
<li>Provide generic access methods to enable a User-Agent to discover and command home network devices.</li>
<li>Provide a means for applications to control some of the parameters that may need to be exposed to support well-established home network protocols. A more detailed analysis is needed to identify such parameters and a way to specify them in a transport agnostic way</li>
<li>Provide access and privacy controls for untrusted pages accessing home network devices.</li>
<li>Allow pages to discover functional differences (optional functionality) that may be implemented in some but not all Home Network ecosystem devices.</li>
</ul>
</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<p>This use-case provides the basic framework for generic access to home network devices. It is "agnostic" towards the underlying functionality of the devices being controlled.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Application can obtain and display descriptive metadata for playback content</td>
<td><a href="#service-discovery" class="sectionRef">section 4.2.1 Service Discovery</a>
<br /><a href="#content-discovery" class="sectionRef">section 4.2.3 Content Discovery</a></td>
</tr>
<tr>
<td>Application can obtain and display other descriptive metadata such as Electronic Programming Guides</td>
<td><a href="#service-discovery" class="sectionRef">section 4.2.1 Service Discovery</a>
<br /><a href="#content-discovery" class="sectionRef">section 4.2.3 Content Discovery</a></td>
</tr>
<tr>
<td>Application can select content binary formats which match the User-Agent’s supported playback formats</td>
<td><a href="#playback-of-content" class="sectionRef">section 4.3.3 Playback of Content</a></td>
</tr>
<tr>
<td>Application can play content from Home Network stored content sources</td>
<td><a href="#playback-of-content" class="sectionRef">section 4.3.3 Playback of Content</a></td>
</tr>
<tr>
<td>Applications can play live content from Home Network streaming sources</td>
<td><a href="#playback-of-live-content" class="sectionRef">section 4.3.4 Playback of Live Content</a></td>
</tr>
<tr>
<td>Applications can play content from Home Network recording sources</td>
<td><a href="#playback-of-content" class="sectionRef">section 4.3.3 Playback of Content</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u16.-home-network-enabled-user-agent---network-media-server" class="section">
<h3><span class="secno">5.16 </span>U16. Home Network Enabled User-Agent - Network Media Server</h3>
<dl>
<dt>Description</dt>
<dd>
<p>Enable a User-Agent to act as a Home Network Media Server.</p>
<p>Scenario: The User-Agent acts as a Home Network Media Server device. For example:</p>
<ul>
<li>Create a discoverable Home Network Media Server device.</li>
<li>List available content that the User-Agent chooses to make available on the Home Network.</li>
<li>Provide descriptive metadata (title, description) for this content.</li>
<li>Provide multiple binary formats for this content.</li>
<li>Provide functionality to allow other User-Agents to search for content matching specified metadata criteria.</li>
<li>Provide capability for Home Network Media Server to notify clients when list of available content changes.</li>
</ul>
<p>Detailed steps for "Create a discoverable Home Network Media Server device":</p>
<ol>
<li>Web page provides User-Agent descriptive metadata for the device to be created.</li>
<li>Web page provides User-Agent access to programs to service requests made to Home Network Media Server.</li>
<li>Web page requests User-Agent to make device visible on Home Network</li>
</ol>
<p>Detailed steps for "List available content that the User-Agent chooses to make available on the Home Network":</p>
<ol>
<li>Created Media Server device receives request to list Media Server content.</li>
<li>User-Agent invokes previously registered program (php?) to service request.</li>
<li>User-Agent forwards results of registered program to requesting end-point providing identifiers for (Content Items) describing available content.</li>
</ol>
<p>Detailed steps for "Provide descriptive metadata (title, description) for this content":</p>
<ol>
<li>Created Media Server device receives a request to provide metadata for a Content Item.</li>
<li>User-Agent invokes a previously registered program (php?) to provide metadata corresponding to a Content Item.</li>
<li>User-Agent forwards results of registered program to requesting end-point.</li>
</ol>
<p>Detailed steps for "Provide multiple binary formats for this content":</p>
<ol>
<li>Content Items contain metadata providing one or more alternative formats for content represented by a content item. This metadata consists of a URL which serves the content item and additional descriptive metadata for the content binary served by the corresponding URL.</li>
</ol>
<p>Detailed steps for "Provide functionality to allow other User-Agents to search for content matching specified metadata criteria":</p>
<ol>
<li>Created Media Server device receives a request to provide Content Item identifiers whose metadata matches criteria provided by the end-point.</li>
<li>User-Agent invokes a previously registered program (php?) to provide identifiers of Content Items which match the search criteria provided.</li>
<li>User-Agent forwards results of registered program to requesting end-point.</li>
</ol>
<p>Detailed steps for "Notify User-Agents of changes to available content":</p>
<ol>
<li>User-Agent receives request from end-point(s) to report changes to available content.</li>
<li>User-Agent receives notification that available content has changed.</li>
<li>User-Agent forwards notification to end-point(s) which have registered for this notification.</li>
</ol>
</dd>
<dt>Motivation</dt>
<dd>
<p>Existing Home Network interfaces do not (by scope/tradition) standardize user interface control. However, the combination of HTML markup and Javascript allow both access to Home Network devices functions and access to very capable user interface resources.</p>
<p>Why were you not able to use only existing standards to accomplish this?</p>
<ul>
<li>HTML User-Agents do not provided the abstractions necessary for Javascript to issue discover and issue commands to home network devices.</li>
<li>Basic access methods to home network devices need to be standardized so that developers can implement pages to control Home Network devices using Javascript/HTML.</li>
</ul>
<p>What might you suggest could be standardized?</p>
<ul>
<li>Provide generic access methods to enable a User-Agent to discover and command home network devices.</li>
<li>Provide a mean for applications to control some of the parameters that may need to be exposed to support well-established home network protocols. A more detailed analysis is needed to identify such parameters and a way to specify them in a transport agnostic way</li>
<li>Provide access and privacy controls for untrusted pages accessing home network devices.</li>
<li>Allow pages to discover functional differences (optional functionality) that may be implemented in some but not all Home Network ecosystem devices.</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<p>This use-case provides the basic framework for generic access to home network devices. It is "agnostic" towards the underlying functionality of the devices being controlled.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Applications can cause a User-Agent to act as a Home Network media server</td>
<td><a href="#content-advertisement" class="sectionRef">section 4.2.4 Content Advertisement</a></td>
</tr>
<tr>
<td>Applications support services which provide metadata describing available content</td>
<td><a href="#content-advertisement" class="sectionRef">section 4.2.4 Content Advertisement</a></td>
</tr>
<tr>
<td>Application supports services which allow searching for content metadata matching specified criteria</td>
<td><a href="#content-advertisement" class="sectionRef">section 4.2.4 Content Advertisement</a></td>
</tr>
<tr>
<td>Application supports services which notify clients of changes in available content or content metadata</td>
<td><a href="#content-advertisement" class="sectionRef">section 4.2.4 Content Advertisement</a></td>
</tr>
<tr>
<td>Content descriptions support offering content in multiple binary formats</td>
<td><a href="#content-advertisement" class="sectionRef">section 4.2.4 Content Advertisement</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u17.-home-network-enabled-user-agent" class="section">
<h3><span class="secno">5.17 </span>U17. Home Network Enabled User-Agent</h3>
<dl>
<dt>Description</dt>
<dd>
<p>Enable a User-Agent to control other media oriented Home Network Devices (3-box model).</p>
<p><a href="hn-ua.jpg"><img src="hn-ua.jpg" alt="" width="600" height="374" /></a></p>
<p>Scenario: The User-Agent commands other media oriented home network devices. For example:</p>
<ul>
<li>Determine the playback capabilities of a Home Network Media Rendering device. For example: supported content formats, number of streams, supported resolution(s).</li>
<li>Direct a Home Network Media Rendering device to play compatible content stored on a Home Network Media Server.</li>
<li>Direct a Home Network Media Rendering device to play live content from a Home Network Media Server capable of streaming content.</li>
<li>Control Home Network Media Renderer attributes: Brightness, Contrast, Volume, etc.</li>
<li>Control Home Network Media Renderer multiplex stream selection: Closed Captioning, Language, Subtitling and Camera Angles.</li>
</ul>
<p>Detailed steps for "Direct a Home Network Media Rendering device to play content stored from a Home Network Media Server":</p>
<ol>
<li>Web page requests User-Agent discover Media Rendering devices on Home Network</li>
<li>Web page allows end-user to select a Media Rendering device</li>
<li>Web page issues request to Media Rendering device to determine content formats it supports</li>
<li>Web page requests User-Agent discover Media Server devices on Home Network</li>
<li>Web page allows end-user to select a Media Server device</li>
<li>Web page obtains list of Content Items available on Media Server</li>
<li>Web page removes items from list which do not have formats compatible with selected Media Renderer device</li>
<li>Web page allows end-user to select from remaining Content Items</li>
<li>Web page selects Content Item URL that provides "best" playback experience on Media Renderer</li>
<li>Web page sends selected Content Item URL to Media Renderer device</li>
<li>Web page sends command to Media Renderer device to begin playback</li>
</ol>
<p>Detailed steps for "Direct a Home Network Media Rendering device to play live content from a Home Network Media Server capable of streaming content":</p>
<ul>
<li>Steps are similar to above use-case. However, Media Rendering device needs to modify buffer sizes to account for content being served at playback rate.</li>
</ul>
<p>Detailed steps for "Control Home Network Media Renderer attributes: Brightness, Contrast, Volume, etc.":</p>
<ol>
<li>Web page issues request to Media Renderer device to get default settings</li>
<li>Web page issues request to Media Renderer device to modify default settings</li>
<li>Web page issues request to Media Renderer device to modify settings for current Content Item (if any)</li>
</ol>
<p>Detailed steps for "Control Home Network Media Renderer multiplex stream selection: Closed Captioning, Language, Subtitling and Camera Angles":</p>
<ol>
<li>Steps are followed to the point where Media Render is provided the Content Item URL.</li>
<li>Web page issues request to Media Renderer to determine what playback attributes can be modified for the selected Content Item.</li>
<li>Web page may request to Media Renderer device to select desired playback settings for the selected Content Item if user wishes to override default settings.</li>
</ol>
</dd>
<dt>Motivation</dt>
<dd>
<p>Existing Home Network interfaces do not (by scope/tradition) standardize user interface control. However, the combination of HTML markup and Javascript allow both access to Home Network devices functions and access to very capable user interface resources.</p>
<p>Why were you not able to use only existing standards to accomplish this?</p>
<ul>
<li>HTML User-Agents do not provided the abstractions necessary for Javascript to issue discover and issue commands to home network devices.</li>
<li>Basic access methods to home network devices need to be standardized so that developers can implement pages to control Home Network devices using Javascript/HTML.</li>
</ul>
<p>What might you suggest could be standardized?</p>
<ul>
<li>Provide generic access methods to enable a User-Agent to discover and command home network devices.</li>
<li>Provide a mean for applications to control some of the parameters that may need to be exposed to support well-established home network protocols. A more detailed analysis is needed to identify such parameters and a way to specify them in a transport agnostic way.</li>
<li>Provide access and privacy controls for untrusted pages accessing home network devices.</li>
<li>Allow pages to discover functional differences (optional functionality) that may be implemented in some but not all Home Network ecosystem devices.</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<p>This use-case provides the basic framework for generic access to home network devices. It is "agnostic" towards the underlying functionality of the devices being controlled.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Application allows a User-Agent to discover and control media playback on other Home-Network Devices</td>
<td><a href="#x3-box-model" class="sectionRef">section 4.3.5 3 Box Model</a>
<br /><a href="#control-of-content-players" class="sectionRef">section 4.3.1 Control of Content Players</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u18.-home-network-enabled-user-agent---network-record-controller" class="section">
<h3><span class="secno">5.18 </span>U18. Home Network Enabled User-Agent - Network Record Controller</h3>
<dl>
<dt>Description</dt>
<dd>
<p>Enable a User-Agent to control a Home Network Recording Device.</p>
<p>Scenario: The User-Agent controls a Home Network Recording device. For example:</p>
<ul>
<li>Request the recording device capture content based on simple time/date criteria.</li>
<li>Request the recording device capture content based recurring time/date criteria.</li>
<li>Request the recording device capture content based on an EPG description.</li>
<li>Request the recording device capture content based on a metadata description.</li>
<li>Provide controls to suspend/restart/cancel planned recording activities.</li>
<li>Provide status information for current/future recording activities.</li>
<li>Provide access to recorded program descriptions and content.</li>
</ul>
<p>Detailed steps for "Request the recording device capture content based on simple time/date criteria":</p>
<ol>
<li>Web page issues a request to determine the capabilities of the Network Recording device.</li>
<li>Web page creates a XML document describing a simple record schedule.</li>
<li>Web page sends XML document to Network Recording device.</li>
<li>Network recording device creates one or more Recording Tasks.</li>
<li>Web page may issue request to Network Recording device to determine status of Recording Tasks.</li>
</ol>
<p>Detailed steps for "Request the recording device capture content based recurring time/date criteria":</p>
<ol>
<li>Web page creates a XML document describing a recurring record schedule.</li>
<li><strong>Note:</strong> See above steps.</li>
</ol>
<p>Detailed steps for "Request the recording device capture content based on an EPG description":</p>
<ol>
<li>Web page obtains a EPG Content Items from Media Server (See prior use-case)</li>
<li>Web page creates a XML document containing identifier of the EPG Item.</li>
<li><strong>Note:</strong> Network Recording service presumes that EPG service resides on same device.</li>
<li>Web page sends XML document to Network Recording device.</li>
<li>Network recording device creates one or more Recording Tasks.</li>
</ol>
<p>Detailed steps for "Request the recording device capture content based on a metadata description":</p>
<ol>
<li>Web page creates a XML document describing a recurring record schedule which selects content based on metadata properties.</li>
<li>Web page sends XML document to Network Recording device.</li>
<li>Network recording device creates one or more Recording Tasks.</li>
</ol>
<p>Detailed steps for "Provide controls to suspend/restart/cancel planned recording activities":</p>
<ol>
<li>Web page may issue request to Recording Device to get current Recording Tasks.
<br /><strong>Note:</strong> Record Tasks are generated from XML Record Schedule documents submitted to Network Recording Device.</li>
<li>Web page may issue request to suspend, restart or cancel Record Tasks or Record Schedules.</li>
</ol>
<p>Detailed steps for "Provide status information for current/future recording activities":</p>
<ol>
<li>Web page may issue request to Recording Device to get current Recording Task documents. Record Tasks contain various status information indicating whether recording is pending (not started), active (started but not completed), or done (completed).</li>
</ol>
<p>Detailed steps for "Provide access to recorded program descriptions and content":</p>
<ol>
<li>The Network Recording device (Record Tasks) creates Content Items.</li>
<li>The Record Task contains identifiers to the created Content Item(s) for the Record Task.</li>
<li>The Content Items contain metadata describing what was recorded.</li>
</ol>
</dd>
<dt>Motivation</dt>
<dd>
<p>Existing Home Network interfaces do not (by scope/tradition) standardize user interface control. However, the combination of HTML markup and Javascript allow both access to Home Network devices functions and access to very capable user interface resources.</p>
<p>Why were you not able to use only existing standards to accomplish this?</p>
<ul>
<li>HTML User-Agents do not provided the abstractions necessary for Javascript to issue discover and issue commands to home network devices.</li>
<li>Basic access methods to home network devices need to be standardized so that developers can implement pages to control Home Network devices using Javascript/HTML.</li>
</ul>
<p>What might you suggest could be standardized?</p>
<ul>
<li>Provide generic access methods to enable a User-Agent to discover and command home network devices.</li>
<li>Provide a means for applications to control some of the parameters that may be needed to be exposed to support well-established home network protocols. A more detailed analysis is needed to identify such parameters and a way to specify them in a transport agnostic way.</li>
<li>Provide access and privacy controls for untrusted pages accessing home network devices.</li>
<li>Allow pages to discover functional differences (optional functionality) that may be implemented in some but not all Home Network ecosystem devices.</li>
</ul>
</dd>
<dt>Dependencies</dt>
<dd>
<p>This use-case provides the basic framework for generic access to home network devices. It is "agnostic" towards the underlying functionality of the devices being controlled.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Application supports various recording schedules: Time of Day, Electronic Programming Guide, Metadata matching</td>
<td><a href="#control-of-content-recorders" class="sectionRef">section 4.3.2 Control of Content Recorders</a></td>
</tr>
<tr>
<td>Application provides status information for current and pending recording activities</td>
<td><a href="#control-of-content-recorders" class="sectionRef">section 4.3.2 Control of Content Recorders</a></td>
</tr>
<tr>
<td>Application provides ability to cancel, suspend, and restart pending recording activities</td>
<td><a href="#control-of-content-recorders" class="sectionRef">section 4.3.2 Control of Content Recorders</a></td>
</tr>
<tr>
<td>Application provides access to recorded content</td>
<td><a href="#control-of-content-recorders" class="sectionRef">section 4.3.2 Control of Content Recorders</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
<div id="u19.-upnp---dlna-ecosystem-support" class="section">
<h3><span class="secno">5.19 </span>U19. UPnP / DLNA ecosystem support</h3>
<dl>
<dt>Description</dt>
<dd>
<p>Use cases U15, U16, U17, U18 and U1 describe functionality implemented by existing UPnP/DLNA home network devices in general terms. However, there is an existing install base of UPnP/DLNA compliant devices and the associated SDOs (UPnP Forum, DLNA) continue actively develop additional device related specifications. It would be beneficial to the end-user community if <acronym title="World Wide Web Consortium">W3C</acronym> User-Agents provided access to UPnP/DLNA devices without requiring any modification to the existing install base of UPnP/DLNA compliant devices.</p>
<p>Scenarios:</p>
<ul>
<li>user agents support applications which can discover UPnP/DLNA compliant devices.</li>
<li>user agents support applications retrieving UPnP Device and Service Description XML documents.</li>
<li>user agents support application issuing of SOAP actions to control UPnP/DLNA devices.</li>
<li>user agents support applications subscribing to UPnP Service Events.</li>
<li>user agents support applications inspection of UPnP Service State Variables.</li>
<li>user agents support applications including DLNA specified HTTP transport headers to obtain DLNA content metadata and to control playback features (such as trick-play, time-based positioning).</li>
</ul>
<p>A summary of UPnP specifications relevant to this use case is provided in <a href="#universal-plug-n-play--upnp--reference" class="sectionRef">section 8.5 Universal Plug'n Play (UPnP) Reference</a>.</p>
</dd>
<dt>Requirements</dt>
<dd><table>
<tbody><tr>
<th>Low Level</th>
<th>High Level</th>
</tr>
<tr>
<td>Application supports access to UPnP/DLNA devices without modification of existing deployed devices</td>
<td><a href="#compatibility-with-widely-deployed-standards" class="sectionRef">section 4.1.1 Compatibility with widely deployed standards</a></td>
</tr>
<tr>
<td>Application support UPnP devices not related to content playback</td>
<td><a href="#compatibility-with-widely-deployed-standards" class="sectionRef">section 4.1.1 Compatibility with widely deployed standards</a></td>
</tr>
</tbody></table>
</dd>
</dl>
</div>
</div>
<div id="security" class="section">
<!-- OddPage -->
<h2><span class="secno">6. </span>Security</h2>
<p>Enabling application access to Home Network devices and content available on such devices raise several security and privacy concerns. Addressing user security and privacy is of primary importance for <a href="#dfn-conforming-specifications" class="internalDFN">conforming specifications</a>. This implies that some features may have to be "restricted" in order not to compromise user security. This may have an impact on the flexibility of these specifications, so a delicate balance between user experience and security needs to be found.</p>
<p>This section lists possible threats that <a href="#dfn-conforming-specifications" class="internalDFN">conforming specifications</a> may have to deal with and possible solutions to reduce risks for the user. This section is not intended as an exhaustive list of problems and solutions but is intended to provide some directions for further investigation.</p>
<div id="threats" class="section">
<h3><span class="secno">6.1 </span>Threats</h3>
<div id="security-1" class="section">
<h4><span class="secno">6.1.1 </span>Security</h4>
<ol>
<li>
Malicious attacks
<ul>
<li>An external server can control an Home Network device (e.g. send spam to your printer)</li>
<li>A vulnerability in one of the Home Network devices can be used as a back door to get access to the Home Network</li>
<li>Denial of service - repeated requests for resources could render a Home Network device/application/service unusable</li>
</ul>
</li>
<li>Leaking of information from the home network to the Internet (e.g. content, content metadata)</li>
<li>Some users inside the home network may (inadvertently) allow external application(s) unwanted access to home network devices (e.g. a family may wish to prevent any website that the children view on their PCs or phones from being able to query and/or control other devices)</li>
</ol>
</div>
<div id="privacy" class="section">
<h4><span class="secno">6.1.2 </span>Privacy</h4>
<ol>
<li>3rd party visibility into content (e.g. movies) available in the HN.</li>
<li>3rd party visibility of types of devices available in the home network</li>
<li>3rd party visibility of applications in use/installed (e.g. don't expose the fact that my home security system is part of my HN)</li>
</ol>
</div>
</div>
<div id="potential-solutions" class="section">
<h3><span class="secno">6.2 </span>Potential Solutions</h3>
<p>The list of techniques listed in this section are not mutually exclusive but can be combined to provide more flexibility in handling user security.</p>
<div id="home-network-access-allowed-only-to-trusted-applications" class="section">
<h4><span class="secno">6.2.1 </span>Home Network Access Allowed Only to Trusted Applications</h4>
<ul>
<li>In order for the application(s) to be able to access Home Network functionalities exposed by the UA, it needs to be trusted (by default is untrusted)</li>
<li>There could be different way to identify if an application is trusted and also different trust levels (and associated permissions).</li>
</ul>
<div id="how-to-determine-the-trust-level-of-an-application--several-may-apply" class="section">
<h5><span class="secno">6.2.1.1 </span>How to Determine the Trust Level of an Application (Several May Apply)</h5>
<ol>
<li>Asking the user to authorize the application (via a dialog, a white list or other means)</li>
<li>Using a white list that is provided by the platform (e.g. surrendering control to service providers)</li>
</ol>
</div>
<div id="trust-levels-options--mutually-exclusive" class="section">
<h5><span class="secno">6.2.1.2 </span>Trust Levels Options (Mutually Exclusive)</h5>
<ol>
<li>just 2 levels (trusted/untrusted)
<ul>
<li>Trusted have full access to the Home Network capabilities</li>
<li>Untrusted have NO access to the Home Network capabilities</li>
</ul>
</li>
<li>multiple trust levels and associated permissions (like user in OSes)
<ul>
<li>identify different subgroups of capabilities that the UA is able to expose</li>
<li>associate these capabilities to a permission and each group to a subset of permissions</li>
</ul>
</li>
<li>don't define generic trust levels but let the user decide on a "per action" base (see <a href="#modular-access-to-home-network-services-and-content" class="sectionRef">section 6.2.4 Modular Access to Home Network Services and Content</a>)</li>
</ol>
</div>
</div>
<div id="device-pairing" class="section">
<h4><span class="secno">6.2.2 </span>Device Pairing</h4>
<ul>
<li>Pairing operation (using a PIN/password) is needed before devices can communicate
<ul>
<li>The user is prompted to authorize the communication. Note that this could lead to a Potential denial-of-service.</li>
<li>The user need to enter a (numeric) PIN or alphanumeric password
<ul>
<li>Numeric PIN may be easier to enter with traditional remote controls</li>
<li>A "default" PIN could be defined as common in other standards.</li>
</ul>
</li>
<li>The pairing could be one way (the control device make a "log in" into the controlled device) or two ways (devices needs to authorize each other)</li>
</ul>
</li>
<li>Pairing Expiration: having pairing expire after a while could provide more security. In some scenarios thought, having the ability to configure it permanently allow for a better user experience. For example a user may have the Home Network devices configured by a technician. This is also very important for people with disabilities that may be unable to configure devices themselves.</li>
</ul>
</div>
<div id="device-information-only-visible-to-the-user" class="section">
<h4><span class="secno">6.2.3 </span>Device Information only Visible to the User</h4>
<p>Exposing information about services, content and devices in the Home Network to an application is a potential privacy leak. This could be minimized allowing the application to only get access to:</p>
<ul>
<li>an identifier for the device/content/service</li>
<li>an API to ask the UA to show more information about the content/service/device in some specific use cases, e.g.:
<ul>
<li>ask the user to authorize a specific device to perform a given action</li>
<li>show the user additional details about a specific device/ piece of content</li>
</ul>
</li>
</ul>
<p>This mechanism could limit the application flexibility but increases the user privacy.</p>
<p>An alternative approach could be to limit the application ability to access this information until the application has been explicitly authorized by the User, or has successfully paired with the device.</p>
</div>
<div id="modular-access-to-home-network-services-and-content" class="section">
<h4><span class="secno">6.2.4 </span>Modular Access to Home Network Services and Content</h4>
<p>One possible approach could be to consider each service as a separate "functionality" that the device has to authorize, in a similar fashion as Apps on mobile phones need to be authorized to access specific functionalities provided by the platform. The main difference in this case is that services available in the Home Network change over time, and also there isn't an installation process for web applications. Furthermore such approach would need a way to uniquely identify services (potentially across different home networking protocols) and expose relevant information for the user to understand what is actually authorizing. Such a technique would be then specification what would decide to enable a level interface for communication between devices/applications, which is not explicitly aware of different services.</p>
</div>
</div>
</div>
<div id="categorization-of-requirements-and-next-steps" class="section">
<!-- OddPage -->
<h2><span class="secno">7. </span>Categorization of Requirements and Next Steps</h2>
<p>One of the deliverable of the Home Network Task Force, according to its charter, is a set of recommendation to <acronym title="World Wide Web Consortium">W3C</acronym> Director for recommendation track work fulfilling some (or all) of the identified requirements.</p>
<p>This section summarizes the consensus of the TF about the desirable next steps and also to try to give an indication of relative priorities of the identified requirements.</p>
<div id="requirements-categorization" class="section">
<h3><span class="secno">7.1 </span>Requirements Categorization</h3>
<p>The HNTF has made an attempt to categorize requirements based on the priority of addressing them to enable some of the use cases that are already available via other technologies or that are felt particularly important to have an enhanced user experience. Go without saying that all identified requirements are considered important by the Task Force; so the criteria followed is more the degree to which each requirements enables use cases that cannot be covered today rather than a value judgment of the importance of one requirement versus another (which differs by individual). By this "enablement" criterion, a feature that enables more use cases is higher priority than a feature that enables a limited subset of use cases.</p>
<p>The following requirements underpin most (if not all) of the use cases (see <a href="#use-cases" class="sectionRef">section 5. Use Cases</a>) listed in this document, so they are considered the starting point for a technical work:</p>
<ul>
<li><a href="#service-discovery" class="sectionRef">section 4.2.1 Service Discovery</a></li>
<li><a href="#content-discovery" class="sectionRef">section 4.2.3 Content Discovery</a></li>
</ul>
<p>These alone are insufficient to fulfill most of the use cases and user scenarios identified. The use cases that seem most straightforward to address next and which also show the most immediate utility are those that support the ability to control and query media playback:</p>
<ul>
<li><a href="#compatibility-with-widely-deployed-standards" class="sectionRef">section 4.1.1 Compatibility with widely deployed standards</a></li>
<li><a href="#control-of-content-players" class="sectionRef">section 4.3.1 Control of Content Players</a></li>
<li><a href="#playback-of-content" class="sectionRef">section 4.3.3 Playback of Content</a></li>
<li><a href="#playback-of-live-content" class="sectionRef">section 4.3.4 Playback of Live Content</a></li>
<li><a href="#x3-box-model" class="sectionRef">section 4.3.5 3 Box Model</a></li>
<li><a href="#time-synchronization" class="sectionRef">section 4.3.6 Time-synchronization</a></li>
<li><a href="#service-communication" class="sectionRef">section 4.3.8 Service Communication</a></li>
</ul>
<p>The requirements listed above focus on enabling applications to utilize existing home network services. The remaining requirements all enable use cases and scenarios that are of great interest and could be considered a "next step" of making it possible for applications to advertise and/or offer services. These requirements would allow leveraging web technologies and creating new types of application which mashes up Web and home networked devices.</p>
<ul>
<li><a href="#services-advertisement" class="sectionRef">section 4.2.5 Services Advertisement</a></li>
<li><a href="#content-advertisement" class="sectionRef">section 4.2.4 Content Advertisement</a></li>
<li><a href="#application-communication" class="sectionRef">section 4.3.9 Application Communication</a></li>
<li><a href="#application-discovery" class="sectionRef">section 4.2.2 Application Discovery</a></li>
<li><a href="#push-migration" class="sectionRef">section 4.4.1 Push Migration</a></li>
<li><a href="#pull-migration" class="sectionRef">section 4.4.2 Pull Migration</a></li>
<li><a href="#accurate-time-synchronization" class="sectionRef">section 4.3.7 Accurate Time-synchronization</a></li>
</ul>
<p>While security requirements are of really high priority in general, some of the requirement listed in this document may or may not be covered by <a href="#dfn-conforming-specifications" class="internalDFN">conforming specifications</a> depending on the particular technical solution that will be designed to cover the requirements listed above. That is why the following requirements to no fall into the High/Low priority scheme:</p>
<ul>
<li><a href="#application-trust-level" class="sectionRef">section 4.5.1 Application Trust Level</a></li>
<li><a href="#access-to-home-network-services" class="sectionRef">section 4.5.2 Access to Home Network Services</a></li>
<li><a href="#prevent-leaking-of-information" class="sectionRef">section 4.5.3 Prevent Leaking of Information</a></li>
</ul>
<p>Media Identification is a prerequisite for applications to be able to properly relate items of media content to a wider web of data/content. On the other end this requirement is orthogonal to the other discussed in this document and could be probably discussed in parallel with the work on the other requirements. That is why the following requirement is also not categorized:</p>
<ul>
<li><a href="#media-identification" class="sectionRef">section 4.2.6 Media Identification</a></li>
</ul>
</div>
<div id="identified-gaps" class="section">
<h3><span class="secno">7.2 </span>Identified Gaps</h3>
<p>A close analysis and discussion of the use-cases and requirements described in this document, lead the group to conclude that the <strong>major gap</strong> in the Open Web platform is the <strong>lack of means for an application to discover services and applications available on the home network</strong>. Filling such a gap will probably allow the coverage of most (if not all) requirements listed in this document (see <a href="#requirements" class="sectionRef">section 4. Requirements</a>).</p>
<p>Some concerns were raised if the discovery alone is enough to address advertisements requirements especially for support of existing protocols such as UPnP. In fact, advertisements itself could be implemented as a service so that applications can discover it and then register to be advertised on the network. Such a service may be provided by the UA itself (i.e. the functionality is provided by the UA but exposed as a service) or by an external device. It is not clear though (lacking implementations of this) if this approach will be enough flexible and efficient.</p>
<p>Furthermore to have an interoperable solution, a common advertising service would have to be standardized or JavaScript binding to already in use advertising services/protocols would have to be provided.</p>
<p>The discussion will have to be deferred to the point in time when a User Agent supporting discovery is available.</p>
</div>
<div id="next-steps" class="section">
<h3><span class="secno">7.3 </span>Next Steps</h3>
<p>The HNTF believes that all the identified use cases and requirements are important to achieve a better convergence between the Web and TV. The TF also believes that all of them have an impact on the current web platform architecture so a recommendation track work would be needed to make sure that the identified requirements are covered in an open and interoperable way.</p>
<p>The HNTF believes that many of the requirements identified here may match the deliverables in the <a href="http://www.w3.org/2011/07/DeviceAPICharter">Device APIs Working Group Charter</a>. Therefore it is proposed to provide this requirement document as an input for further work to the <strong>Device APIs (DAP) Working Group</strong>. However, if after a more detailed analysis, requirements detailed in this document are found to be out-of-scope for the DAP WG, then the HNTF recommends that additional <acronym title="World Wide Web Consortium">W3C</acronym> Working Groups be chartered to address the remaining requirements.</p>
</div>
<div id="open-issues" class="section">
<h3><span class="secno">7.4 </span>Open Issues</h3>
<p>During his work, the HNTF did not have time to explore topics like the access to the home network from outside the home or concepts like group of homes. The TF believes that this is an area of extreme interest and would suggest the DAP WG (or any other working group working on the requirements extracted from this document) further investigate these topics. The Web & TV IG itself may consider discussing these topics and provide feedbacks to one or more <acronym title="World Wide Web Consortium">W3C</acronym> Working Groups.</p>
</div>
</div>
<div id="related-works--informative" class="section">
<!-- OddPage -->
<h2><span class="secno">8. </span>Related Works (Informative)</h2>
<p>This section include references to related works (prototypes, draft APIs, etc.) that have been produced by IG participants and are related to the use cases outlined in this document. Note that this section is informative and that the Web and TV Interest Group do not endorse any of the works listed in this section. Nevertheless the Web and TV Interest Group thinks that these related works contain useful ideas that could be discussed and expanded by a working group writing specifications addressing requirements enumerated in this document.</p>
<div id="cablelabs" class="section">
<h3><span class="secno">8.1 </span>CableLabs</h3>
<p>CableLabs is a not-for-profit research and development consortium that has cable operators as its members. While working on defining use cases and requirements as member of the Home Network TF of the Web and TV IG, some work has been done by CableLabs to experiment with possible ways to support use cases discussed by the Home Network Task Force in an HTML5 user agent. See CableLabs Revised Home Networking API [<cite><a class="bibref" rel="biblioentry" href="#bib-CLABS-HNAPI">CLABS-HNAPI</a></cite>].</p>
</div>
<div id="opera" class="section">
<h3><span class="secno">8.2 </span>Opera</h3>
<p>Opera proposed a low-level API to address some of the use cases outlined in this document and discussed by the Home Network Task Force of the Web and TV IG. This section contains an outline of the proposal as presented to the DAP WG.</p>
<div id="problem" class="section">
<h4><span class="secno">8.2.1 </span>Problem</h4>
<p>A number of devices connected within a local network today advertise service API endpoints to the network, the primary purpose of which is to allow other devices within the same local network to connect, control and interact with those services through the provided interfaces.</p>
<p>It is possible today to build native applications that can both discover and communicate with such local-networked services. There is currently no standard or, indeed, any particularly easy way to discover or interact with local devices and services from a web application without significant technical hackery on the part of the user (see 'current practice' below).</p>
<p>We need a way for a user agent, acting as a broker between a user and a web application to discover services via common discovery protocols (i.e. SSDP and DNS-SD) within the local network, allow web applications to request a particular service type (or class of service) that it wishes to interact with and then for a user to authorize that connectivity based on services found in their local network matching the requested service type. The solution should then enable communication to occur between the authorized web application and the local-networked service, bypassing or overriding the same-origin policy rule if necessary to allow for safe and secure cross-domain communication.</p>
</div>
<div id="current-practice" class="section">
<h4><span class="secno">8.2.2 </span>Current Practice</h4>
<p>Assuming the user is able to obtain a local-networked service's host and port information, which in itself is a hard task for both technical and non-technical users alike, the user must then provide that host and port information to the web application by entering such information in e.g. a web form and submitting said form. Having got this far the web application, despite having all the information required to communicate with a local-networked device/service, is then likely to encounter another issue, namely the same-origin policy rule which prevents a web application from communicating with a networked device that does not share the same host and port origin combination as itself.</p>
<p>As a solution to this, CORS has been developed to enable cross-origin messaging from web applications. Within the home network, if the target networked device happened to provide the HTTP header <code>Access-Control-Allow-Origin: *</code> then there is little problem with the browser now being able to communicate with the provided host and port.</p>
<p>However, the majority of local-networked services do not implement CORS and because <code>Access-Control-Allow-Origin: *</code> is generally a bad idea to enable within a local network, it is not really the ideal future-facing solution within local networks to ensure access is granted only to web applications that a user has explicitly authorized access to.</p>
<p>In the vast majority of use cases communication from a web application to a local-networked service is blocked or inherently insecure today due to one or more of the issues above being present in modern web browsers.</p>
<p>The current practice therefore does not fulfill the requirements of the initial problem and so we began to consider alternative approaches.</p>
</div>
<div id="proposed-solution" class="section">
<h4><span class="secno">8.2.3 </span>Proposed Solution</h4>
<p>To counter the issues identified in the current practice above we developed a low-level API, produced incrementally over the course of the last few months, that allows a web application to request a particular service type (or class of service type) and for the user to then be able to authorize and connect a discovered matching service to the requesting web application. This enables a user-authorized web application to control, interact and synchronize content (and otherwise generally communicate) with home-networked services, negating the operational issues present in browsers today.</p>
<p>The proposed solution is available, see Networked Service Discovery and Messaging [<cite><a class="bibref" rel="biblioentry" href="#bib-DISCO-PROP">DISCO-PROP</a></cite>].</p>
<p>A note on CORS: this API is intended to work with or without CORS support enabled in local-networked services. That is to say, CORS in combination with e.g. HTTP authentication schemes, assuming such a model is deployed widely in the future, may provide a good user authorization model for this API (perhaps even to the point of negating the need for any specialized Service Discovery user interfaces at all). As it stands, the proposed solution is intended to work with existing services deployed within local networks without shoe-horning all communications in to a future-only CORS model.</p>
<p><strong>Disclaimer:</strong> This API proposal does not represent the consensus of any standards group and should not be referenced as anything other than an unofficial draft which is a work in progress.</p>
</div>
<div id="bbc" class="section">
<h4><span class="secno">8.2.4 </span>BBC</h4>
<p>The BBC is non-profit, publicly funded broadcaster based in the UK that also engages in technical research. As part of its participation in the Home Network TF, the BBC has shared its own experimental API work that enables clients, including HTML user agents, to discover and communicate with television style devices within the home network.</p>
<p>This API defines a RESTful web service to be implemented by a television, set-top-box, or similar device. The data model represents programmes and sources of programmes in a relatively abstract way. The API in turn defines a uniform way to discover, identify, acquire (e.g. record) and control playback of programme content. There is also provision for starting and communicating with web or native applications running on the television. Applications using this API avoid having to deal with issues of codec, container format or transport protocol compatibility.</p>
<p>Documents providing background, an introductory overview and a draft specification of the API are available:</p>
<ul>
<li><a href="http://www.bbc.co.uk/blogs/researchanddevelopment/2011/02/universal-control.shtml">Universal Control</a></li>
<li>White Paper 193 : The Universal Control API version 0.6.0 - An Overview [<cite><a class="bibref" rel="biblioentry" href="#bib-BBC-WP193">BBC-WP193</a></cite>]</li>
<li>White Paper 194 : The Universal Control API v.0.6.0 - Specification for the behaviour of a universal control server running on a set-top box, and the clients that connect to it [<cite><a class="bibref" rel="biblioentry" href="#bib-BBC-WP194">BBC-WP194</a></cite>]</li>
</ul>
<p>The BBC has prototyped various remote control and second screen experiences that use this API. These include:</p>
<ul>
<li>The presentation of time-synchronised slideshows</li>
<li>Near-lip-synced alternative audio</li>
<li>A Mobile phone as a remote control with support for blind users</li>
<li>Enhancement of websites with awareness of current TV viewing</li>
</ul>
<p>The following documents briefly describe some of these applications:</p>
<ul>
<li><a href="http://www.w3.org/2010/11/web-and-tv/slides/BBC-Universal-Control-API.pdf">Universal Control API</a> (PDF slides)</li>
<li><a href="http://www.bbc.co.uk/blogs/researchanddevelopment/2011/04/the-autumnwatch-companion---de.shtml">Designing for second screens: The Autumnwatch Companion</a></li>
</ul>
</div>
</div>
<div id="telecom-paristech" class="section">
<h3><span class="secno">8.3 </span>Telecom ParisTech</h3>
<p>Telecom ParisTech is a French academic institution where research relevant to HNTF on combining <acronym title="World Wide Web Consortium">W3C</acronym> widgets, SVG and UPnP went on from 2008 to 2010. The work has been implemented as part of the open source multimedia player GPAC (see <a href="http://gpac.wp.institut-telecom.fr/">GPAC</a>) and is publically available. All use cases contributed by Telecom ParisTech to HNTF have been implemented in that system, but for the "pull migration" use case.</p>
<p>This work is described in the following papers:</p>
<ol>
<li><a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=11187">Communicating and migratable interactive multimedia documents</a> (PDF) [<cite><a class="bibref" rel="biblioentry" href="#bib-PTECH-MIGRATE">PTECH-MIGRATE</a></cite>]</li>
<li><a href="http://www.svgopen.org/2009/papers/28-SVG_Communicating_Widgets/">SVG Communicating Widgets</a> [<cite><a class="bibref" rel="biblioentry" href="#bib-PTECH-SCW">PTECH-SCW</a></cite>]</li>
<li><a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9917">Declarative Interfaces for Dynamic Widgets Communications</a> (PDF) [<cite><a class="bibref" rel="biblioentry" href="#bib-PTECH-DECL">PTECH-DECL</a></cite>]</li>
<li><a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9919">Widgets Mobility</a> (PDF) [<cite><a class="bibref" rel="biblioentry" href="#bib-PTECH-WM">PTECH-WM</a></cite>]</li>
</ol>
</div>
<div id="cea-2014-web-based-protocol-and-framework-for-remote-user-interface---overview" class="section">
<h3><span class="secno">8.4 </span>CEA-2014 Web-based Protocol and Framework for Remote User Interface - Overview</h3>
<p>CEA-2014 [<cite><a class="bibref" rel="biblioentry" href="#bib-CEA-2014">CEA-2014</a></cite>] describes web based Remote UI applications for CE devices. CEA-2014 is referenced by multiple Standards Development Organizations to provide ecosystem specific Remote UI solutions.</p>
<p>CEA-2014 leverages existing web technology standards including XHTML for screen layout and user interactions; and ECMAScript for interactive application support. In addition, CEA-2014 provides additional standardized interfaces addressing the following areas:</p>
<ul>
<li>Remote UI Application Listing</li>
<li>Client Capabilities Matching</li>
<li>Standardized Audio-Video Player</li>
<li>Digital Rights Management Framework</li>
<li>Content Download Management Framework</li>
<li>UPnP / DLNA Home Network Framework</li>
<li>SVG (Scalable Vector Graphics) integration with XHTML</li>
<li>Server to Client Notification Framework</li>
<li>Remote UI Save and Restore Framework</li>
</ul>
<div id="remote-ui-application-listing" class="section">
<h4><span class="secno">8.4.1 </span>Remote UI Application Listing</h4>
<p>CEA-2014 defines a mechanism for a Remote UI server to list available applications. This mechanism is based on an XML schema (XML UI Listing) which provides application descriptive metadata. In addition, a CEA-2014 server may include metadata for multiple versions of the same Remote UI application with differing client capability requirements. A Remote UI client system may then choose a version of a Remote UI application which best matches its capabilities. See Client Capability Matching in the following section</p>
</div>
<div id="client-capabilities-matching" class="section">
<h4><span class="secno">8.4.2 </span>Client Capabilities Matching</h4>
<p>CEA-2014 defines XML metadata describing the capabilities of a connecting Remote UI client system. These capabilities include Input Support (Remote Control, Keyboard, etc.), AV Player Capabilities, Client Display Capabilities (resolution, color space) and Digital Rights Management capabilities. When a Remote UI client connects to a server, it will first examine the capability requirements of the Remote UI applications offered and will connect to a version that best matches its capabilities. During connection, the Remote UI Client provides its capabilities to the server. The server may modify the web-page provided to better match the connecting client's capabilities or may reject the connection if it cannot tailor the page to support the client's capabilities.</p>
</div>
<div id="standardized-audio-video-player" class="section">
<h4><span class="secno">8.4.3 </span>Standardized Audio-Video Player</h4>
<p>CEA-2014 defines a standardized Audio-Video Player object. The AV Player object provides methods for control of AV playback (Play, Stop, Pause, Seek and Loop). In addition the AV player provides a "lock-out" mechanism disables end-users from skipping "required content". AV player callbacks are defined to notify web-pages of various playback related state-changes. The CEA specification defines a state-machine for the AV player so web-pages can rely on predictable AV player state transition behavior.</p>
</div>
<div id="digital-rights-management-framework" class="section">
<h4><span class="secno">8.4.4 </span>Digital Rights Management Framework</h4>
<p>CEA-2014 defines a framework to allow a Remote UI application (web-page) to communicate with DRM Agent(s) installed on a Remote UI client. This DRM framework allows generic messaging between the web-page and DRM Agents installed on the Remote UI client.</p>
<p><strong>Note:</strong> CEA-2014 does not define the specifics of any particular DRM system beyond listing of available Digital Rights systems in Remote UI client capabilities.</p>
</div>
<div id="content-download-management-framework" class="section">
<h4><span class="secno">8.4.5 </span>Content Download Management Framework</h4>
<p>CEA-2014 defines a framework for Remote UI applications to initiate the download of content. Once the download process is started the Remote UI client can switch to other Remote UI applications. In addition to providing status of download operations, CEA-2014 defines a Content Access Descriptor XML schema to describe content to be downloaded. Since Content Access Descriptors are XML documents they may be associated with URLs and embedded into Remote UI applications.</p>
</div>
<div id="upnp---dlna-home-network-framework" class="section">
<h4><span class="secno">8.4.6 </span>UPnP / DLNA Home Network Framework</h4>
<p>CEA-2014 defines a UPnP / DLNA binding so that web-pages can discover and control home network devices. The binding allows Remote UI applications discover, manage events and command UPnP and DLNA devices. In conjunction with the UPnP / DLNA Home Network Framework the Standardized AV Player is required to comply with DLNA media transport requirements. The combination makes CEA-2014 Remote UI clients suitable to support both UPnP and DLNA applications.</p>
<p>The ability for Remote UI applications (originating from outside the home) to access home network devices presents significant security and privacy concerns. CEA-2014 requires implementation of a variety of security mechanisms to protect end-users Remote UI applications performing unauthorized access to Home Network devices.</p>
</div>
<div id="svg--scalable-vector-graphics--integration-with-xhtml" class="section">
<h4><span class="secno">8.4.7 </span>SVG (Scalable Vector Graphics) integration with XHTML</h4>
<p>CEA-2014 supports the embedding of SVG markup within XHTML pages and vice versa. CEA-2014 addresses some issues with regard to differing DOM models and event handling between SVG and XHTML resulting from the combination of SVG and XHTML content on the same web-page.</p>
</div>
<div id="server-to-client-notification-framework" class="section">
<h4><span class="secno">8.4.8 </span>Server to Client Notification Framework</h4>
<p>CEA-2014 provides the capability for servers to request Remote UI clients display web-pages. An "event" mechanism is defined so that Remote UI clients and servers can classify these Notification messages. In addition CEA-2014 clients may recover previously sent notifications that may have been missed while the Remote UI client was not present on the network.</p>
</div>
<div id="remote-ui-save-and-restore-framework" class="section">
<h4><span class="secno">8.4.9 </span>Remote UI Save and Restore Framework</h4>
<p>CEA-2014 provides a framework for a Remote UI application to save its state and POST it to a Remote UI server. The saved information consists of a reference to the original Remote UI application URL and metadata describing the saved state of the application. The save state may be restored by a different device effectively allowing the application to be moved to a different Remote UI client. The save-restore process may be triggered by the Remote UI application itself or by a request initiated external to the Remote UI client.</p>
</div>
</div>
<div id="universal-plug-n-play--upnp--reference" class="section">
<h3><span class="secno">8.5 </span>Universal Plug'n Play (UPnP) Reference</h3>
<div id="introduction-1" class="section">
<h4><span class="secno">8.5.1 </span>Introduction</h4>
<p>This section discusses devices compliant to UPnP (Universal Plug'n Play) architecture. This architecture has been developed over +10 years by member companies of the UPnP Forum. Although this section focuses on UPnP device models defined for AV (Audio-Visual) devices, UPnP defines a number of other standard device models for Home Network Gateways, Telephony, Remote Access, and Home Automation applications.</p>
<p>Further information concerning membership in the UPnP Forum may be obtained on <a href="http://www.upnp.org/">UPnP Web site</a>.</p>
</div>
<div id="upnp-av-architecture" class="section">
<h4><span class="secno">8.5.2 </span>UPnP AV Architecture</h4>
<p>UPnP AV (Audio-Visual) Architecture [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-AVARCH2">UPNP-AVARCH2</a></cite>] provides an informative overview of the UPnP model for media serving and media rendering devices. It is a good starting point for readers becoming familiar with UPnP architecture related to audio-video device support.</p>
</div>
<div id="upnp-device-architecture" class="section">
<h4><span class="secno">8.5.3 </span>UPnP Device Architecture</h4>
<p>UPnP Device Architecture [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-DEVICEARCH">UPNP-DEVICEARCH</a></cite>] provides the basic mechanisms for discovering, advertising, and commanding of UPnP devices. All UPnP Devices implement and comply with the requirements in this specification.</p>
</div>
<div id="upnp-media-renderer-device" class="section">
<h4><span class="secno">8.5.4 </span>UPnP Media Renderer Device</h4>
<p>The UPnP MediaRenderer specification [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-MR3">UPNP-MR3</a></cite>] defines the required and optional services of a standard UPnP MediaRenderer device.</p>
<p>The following references define the required and optional services provided by a standard UPnP MediaRenderer device:</p>
<ul>
<li><strong>UPnP Rendering Control Service</strong>
<br />The UPnP RenderingControl specification [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-RC3">UPNP-RC3</a></cite>] defines actions and variables which control presentation of content on a standard UPnP MediaRenderer device. Examples may include: controlling display brightness, audio volume, soundtrack selection, display pan/zoom, etc.</li>
<li><strong>UPnP AVTransport Service</strong>
<br />The UPnP AVTransport specification [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-AVT3">UPNP-AVT3</a></cite>] defines actions and variables which control connection to and playback of AV content on a standard UPnP MediaRenderer device. Examples may include: setting a playback URL, issuing Play, Stop, Seek, and Pause operations and determining the current state of a rendering device (Playing, Stopped, Paused, etc).</li>
<li><strong>UPnP Connection Manager</strong>
<br />The UPnP ConnectionManager service [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-CM3">UPNP-CM3</a></cite>] defines actions and variables to allocate and control multiple sessions on a standard UPnP MediaRenderer device. Examples may include allocating a Picture-in-Picture window on a rendering device, or allocating an additional audio player instance on a rendering device.</li>
</ul>
</div>
<div id="upnp-media-server-device" class="section">
<h4><span class="secno">8.5.5 </span>UPnP Media Server Device</h4>
<p>The UPnP MediaServer device specification [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-MS4">UPNP-MS4</a></cite>] defines the required and optional services of a standard UPnP MediaServer device.</p>
<p>The following references define services provided by a standard UPnP MediaServer device:</p>
<ul>
<li><strong>UPnP Content Directory Service</strong>
<br />The UPnP ContentDirectory service [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-CD4">UPNP-CD4</a></cite>] publishes metadata for stored content, broadcast content, channel lineup(s) and electronic programming guide(s). A UPnP MediaServer device may optionally serve content described by ContentDirectory service metadata or the ContentDirectory service may provide metadata referring to content residing on other home network servers.</li>
<li><strong>UPnP Connection Manager Service</strong>
<br />The UPnP ConnectionManager service [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-CM3">UPNP-CM3</a></cite>] defines actions and variables controlling multiple sessions allocated on a standard UPnP server device. The ConnectionManager service runs on both standard UPnP MediaRender and UPnP MediaServer devices.</li>
<li><strong>UPnP Device Protection Service</strong>
<br />The UPnP DeviceProtection service specification [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-DP1">UPNP-DP1</a></cite>] provides secure communication to UPnP devices. For a UPnP MediaServer, the UPnP DeviceProtection service controls access to the UPnP MediaServer device services.</li>
<li><strong>UPnP Scheduled Recording Service</strong>
<br />The UPnP ScheduledRecording service [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP-SR2">UPNP-SR2</a></cite>] defines actions and variables which control creating and tracking of recording requests for a recording device. Examples may include: creating a recording request based time or electronic programming guide metadata, displaying programs already recorded and displaying and controlling pending recording activities. The ScheduledRecording service supports recording from both network (URLs) and non-network sources (such as analog and digital tuners).</li>
</ul>
</div>
</div>
<div id="ericsson-labs" class="section">
<h3><span class="secno">8.6 </span>Ericsson Labs</h3>
<p>Ericsson Labs is the part of Ericsson Research that focuses on iterative open innovation and experiments with new technologies, services and business models. The purpose of Ericsson Labs is to support Ericsson’s vision of the Networked Society by working with partners including technology providers and third-party developers.</p>
<p>Ericsson Labs provides access to experimental APIs in their infancy so that developers can create new, innovative services. "Web Technologies" is one of the major categories of experimental APIs and the category contains API named "Web Device Connectivity".</p>
<ul>
<li><a href="https://labs.ericsson.com/">Ericsson Labs</a></li>
<li><a href="https://labs.ericsson.com/apis?api_category=203">Web Technologies</a></li>
<li><a href="https://labs.ericsson.com/apis/web-device-connectivity/">Web Device Connectivity</a> [<cite><a class="bibref" rel="biblioentry" href="#bib-ERICSSON-WDC">ERICSSON-WDC</a></cite>]</li>
</ul>
<p>The Web Device Connectivity API enables you to connect end users’ devices to the Web. It provides end users with new experiences of devices in their home networks being a part of the Web and web sites can seamlessly make use of those home devices. For example, an web site or a blog can access the viewer's DLNA enabled TV and let the viewer choose his/her DLNA enabled TV to play the contents on the web site.</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=fwQA4K9UdTM&feature=player_embedded">Demo video</a></li>
</ul>
<p>Web Device Connectivity platform consists of a software running inside each end users' home network and interacting with home devices, in-cloud servers aggregating device information and enforcing security policy, and a Javascript library providing API for web sites. Developers can create web sites, by including the Javascript library, which accesses devices in end users' home networks through the Ericsson Labs Web Device Connectivity platform.</p>
</div>
</div>
<div id="references" class="appendix section">
<!-- OddPage -->
<h2><span class="secno">A. </span>References</h2><div id="normative-references" class="section"><h3><span class="secno">A.1 </span>Normative references</h3><p>No normative references.</p></div><div id="informative-references" class="section"><h3><span class="secno">A.2 </span>Informative references</h3><dl class="bibliography"><dt id="bib-BBC-WP193">[BBC-WP193]</dt><dd>J.P. Barrett; M.E. Hammond; S.J.E Jolly. <a href="http://www.bbc.co.uk/rd/publications/whitepaper193.shtml"><cite>White Paper 193 : The Universal Control API version 0.6.0 - An Overview</cite></a>. June 2011. URL: <a href="http://www.bbc.co.uk/rd/publications/whitepaper193.shtml">http://www.bbc.co.uk/rd/publications/whitepaper193.shtml</a>
</dd><dt id="bib-BBC-WP194">[BBC-WP194]</dt><dd>J.P. Barrett; M.E. Hammond; S.J.E Jolly. <a href="http://www.bbc.co.uk/rd/publications/whitepaper194.shtml"><cite>White Paper 194 : The Universal Control API v.0.6.0 - Specification for the behaviour of a universal control server running on a set-top box, and the clients that connect to it</cite></a>. June 2011. URL: <a href="http://www.bbc.co.uk/rd/publications/whitepaper194.shtml">http://www.bbc.co.uk/rd/publications/whitepaper194.shtml</a>
</dd><dt id="bib-CEA-2014">[CEA-2014]</dt><dd><a href="http://www.ce.org/Standards/browseByCommittee_2757.asp"><cite>Web-based Protocol and Framework for Remote User Interface on UPnP Networks and the Internet (Web4CE)</cite></a>. January 2011. ANSI/CEA Standard. URL: <a href="http://www.ce.org/Standards/browseByCommittee_2757.asp">http://www.ce.org/Standards/browseByCommittee_2757.asp</a>
</dd><dt id="bib-CLABS-HNAPI">[CLABS-HNAPI]</dt><dd><a href="http://www.w3.org/2011/webtv/HNTF/CableLabs_Revised_API_20110727-2.pdf"><cite>CableLabs Revised Home Networking API</cite></a>. 26 July 2011. Draft proposal. URL: <a href="http://www.w3.org/2011/webtv/HNTF/CableLabs_Revised_API_20110727-2.pdf">http://www.w3.org/2011/webtv/HNTF/CableLabs_Revised_API_20110727-2.pdf</a>
</dd><dt id="bib-DISCO-PROP">[DISCO-PROP]</dt><dd>Rich Tibbett, Clarke Stevens. <a href="http://people.opera.com/richt/release/specs/discovery/Overview.html"><cite>Networked Service Discovery and Messaging</cite></a>. 22 September 2011. Draft proposal (no official standing). URL: <a href="http://people.opera.com/richt/release/specs/discovery/Overview.html">http://people.opera.com/richt/release/specs/discovery/Overview.html</a>
</dd><dt id="bib-ERICSSON-WDC">[ERICSSON-WDC]</dt><dd><a href="https://labs.ericsson.com/apis/web-device-connectivity/"><cite>Web Device Connectivity</cite></a>. 18 October 2010. Ericsson Labs. URL: <a href="https://labs.ericsson.com/apis/web-device-connectivity/"></a>
</dd><dt id="bib-IEEE1588">[IEEE1588]</dt><dd><a href="http://grouper.ieee.org/groups/1588/"><cite>IEEE 1588-2008: A Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</cite></a>. 24 July 2008. URL: <a href="http://grouper.ieee.org/groups/1588/">http://grouper.ieee.org/groups/1588/</a>
</dd><dt id="bib-IEEE802-1AS">[IEEE802-1AS]</dt><dd>Geoff Garner. <a href="http://ieee802.org/1/pages/802.1as.html"><cite>IEEE 802.1AS - Timing and Synchronization</cite></a>. 30 March 2011. IEEE Standard. URL: <a href="http://ieee802.org/1/pages/802.1as.html">http://ieee802.org/1/pages/802.1as.html</a>
</dd><dt id="bib-PTECH-DECL">[PTECH-DECL]</dt><dd>C. Concolato; J. Le Feuvre; J. C. Dufourd. <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9917"><cite>Declarative Interfaces for Dynamic Widgets Communications</cite></a>. September 2009. Document Engineering, Munich, Germany, September 2009, pp. 241-244. PDF Document. URL: <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9917">http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9917</a>
</dd><dt id="bib-PTECH-MIGRATE">[PTECH-MIGRATE]</dt><dd>C. Concolato; J. C. Dufourd; J. Le Feuvre; K. Parkl J. Song. <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=11187"><cite>Communicating and migratable interactive multimedia documents</cite></a>. May 2011. Multimedia Tools and Applications. PDF document. URL: <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=11187">http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=11187</a>
</dd><dt id="bib-PTECH-SCW">[PTECH-SCW]</dt><dd>J. C. Dufourd; C. Concolato; J. Le Feuvre. <a href="http://www.svgopen.org/2009/papers/28-SVG_Communicating_Widgets/"><cite>SVG Communicating Widgets</cite></a>. October 2009. SVG Open, Mountain View, CA, USA. URL: <a href="http://www.svgopen.org/2009/papers/28-SVG_Communicating_Widgets/">http://www.svgopen.org/2009/papers/28-SVG_Communicating_Widgets/</a>
</dd><dt id="bib-PTECH-WM">[PTECH-WM]</dt><dd>J. Le Feuvre; C. Concolato; J. C. Dufourd. <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9919"><cite>Widgets Mobility</cite></a>. September 2009. International Conference on Mobile Technology, Applications and Systems, Nice, France. PDF document. URL: <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9919">http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9919</a>
</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd>S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119. URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
</dd><dt id="bib-UPNP-AVARCH2">[UPNP-AVARCH2]</dt><dd>John Ritchie, Thomas Kuehnel, Wouter van der Beek, Jeffrey Kang. <a href="http://www.upnp.org/specs/av/UPnP-av-AVArchitecture-v2-20101231.pdf"><cite>UPnP AV Architecture:2</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-AVArchitecture-v2-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-AVArchitecture-v2-20101231.pdf</a>
</dd><dt id="bib-UPNP-AVT3">[UPNP-AVT3]</dt><dd><a href="http://www.upnp.org/specs/av/UPnP-av-AVTransport-v3-Service-20101231.pdf"><cite>AVTransport:3 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-AVTransport-v3-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-AVTransport-v3-Service-20101231.pdf</a>
</dd><dt id="bib-UPNP-CD4">[UPNP-CD4]</dt><dd><a href="http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v4-Service-20101231.pdf"><cite>ContentDirectory:4 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v4-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v4-Service-20101231.pdf</a>
</dd><dt id="bib-UPNP-CM3">[UPNP-CM3]</dt><dd><a href="http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v3-Service-20101231.pdf"><cite>ConnectionManager:3 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v3-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v3-Service-20101231.pdf</a>
</dd><dt id="bib-UPNP-DEVICEARCH">[UPNP-DEVICEARCH]</dt><dd><a href="http://www.upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.0-20081015.pdf"><cite>UPnP Device Architecture 1.0</cite></a>. 15 October 2008. UPnP Forum. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.0-20081015.pdf">http://www.upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.0-20081015.pdf</a>
</dd><dt id="bib-UPNP-DP1">[UPNP-DP1]</dt><dd><a href="http://www.upnp.org/specs/gw/UPnP-gw-DeviceProtection-v1-Service-20110224.pdf"><cite>DeviceProtection:1 Service</cite></a>. 24 February 2011. UPnP Forum. Standardized DCP. For UPnP Version 1.0. URL: <a href="http://www.upnp.org/specs/gw/UPnP-gw-DeviceProtection-v1-Service-20110224.pdf">http://www.upnp.org/specs/gw/UPnP-gw-DeviceProtection-v1-Service-20110224.pdf</a>
</dd><dt id="bib-UPNP-MR3">[UPNP-MR3]</dt><dd><a href="http://www.upnp.org/specs/av/UPnP-av-MediaRenderer-v3-Device-20101231.pdf"><cite>MediaRenderer:3 Device</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-MediaRenderer-v3-Device-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-MediaRenderer-v3-Device-20101231.pdf</a>
</dd><dt id="bib-UPNP-MS4">[UPNP-MS4]</dt><dd><a href="http://upnp.org/specs/av/UPnP-av-MediaServer-v4-Device.pdf"><cite>MediaServer:4 Device</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://upnp.org/specs/av/UPnP-av-MediaServer-v4-Device.pdf">http://upnp.org/specs/av/UPnP-av-MediaServer-v4-Device.pdf</a>
</dd><dt id="bib-UPNP-RC3">[UPNP-RC3]</dt><dd><a href="http://www.upnp.org/specs/av/UPnP-av-RenderingControl-v3-Service-20101231.pdf"><cite>RenderingControl:3 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-RenderingControl-v3-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-RenderingControl-v3-Service-20101231.pdf</a>
</dd><dt id="bib-UPNP-SR2">[UPNP-SR2]</dt><dd><a href="http://www.upnp.org/specs/av/UPnP-av-ScheduledRecording-v2-Service-20101231.pdf"><cite>ScheduledRecording:2 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-ScheduledRecording-v2-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-ScheduledRecording-v2-Service-20101231.pdf</a>
</dd><dt id="bib-WIDGETS">[WIDGETS]</dt><dd>Marcos Cáceres. <a href="http://www.w3.org/TR/widgets/"><cite>Widget Packaging and XML Configuration</cite></a>. W3C Proposed Recommendation. URL: <a href="http://www.w3.org/TR/widgets/">http://www.w3.org/TR/widgets/</a>
</dd></dl></div></div></body></html>