c9f97355 by David LaPalomento

Put together a working minimal media segment example

Create example binary data that is a valid Media Segment and does not produce decode errors when coupled with an appropriate media segment. Add some free-form notes from media source extensions research so far. Update the testing sandbox player.
1 parent 71a0366f
1 # Media Source Extensions Notes
2 A collection of findings experimenting with Media Source Extensions on
3 Chrome 36.
4
5 * Specifying an audio and video codec when creating a source buffer
6 but passing in an initialization segment with only a video track
7 results in a decode error
8
9 ## ISO Base Media File Format (BMFF)
10
11 ### Init Segment
12 - `ftyp`
13 - `moov`
14 - `mvex`
15
16 ### Media Segment
17 The structure of a minimal media segment that actually encapsulates
18 movie data is outlined below:
19
20 - `moof`
21 - `mfhd`
22 - `traf`
23 - `tfhd`
24 - `tfdt`
25 - `trun`
26 - `mdat`
27
28 ### Structure
29
30 sample: time {number}, data {array}
31 chunk: samples {array}
32 track: samples {array}
33 segment: moov {box}, mdats {array} | moof {box}, mdats {array}, data {array}
34
35 track
36 chunk
37 sample
38
39 movie fragment -> track fragment -> [samples]
...\ No newline at end of file ...\ No newline at end of file
1 // a minimal set of boxes assembled to form a valid BMFF media segment
2 var mfhd = [
3 0, 0, 0, 16, 109, 102, 104, 100, 0, 0, 0, 0, 0, 0, 0, 1
4 ]; // sequence number 1
5 var tfhd = [
6 0, 0, 0, 16, 116, 102, 104, 100, 0, 2, 0, 0, 0, 0, 0, 1
7 ]; // track id 1
8 var tfdt = [
9 0, 0, 0, 16, 116, 102, 100, 116, 0, 0, 0, 0, 0, 0, 0, 0
10 ];
11 var trun = [
12 0, 0, 0, 124, 116, 114, 117, 110, 0, 0, 2, 5, 0, 0, 0, 25, 0, 0, 0,
13 196, 0, 0, 0, 0, 0, 0, 12, 219, 0, 0, 0, 183, 0, 0, 0, 172, 0, 0, 0,
14 182, 0, 0, 0, 183, 0, 0, 0, 198, 0, 0, 0, 146, 0, 0, 0, 176, 0, 0,
15 0, 190, 0, 0, 0, 169, 0, 0, 0, 243, 0, 0, 0, 174, 0, 0, 0, 131, 0,
16 0, 0, 161, 0, 0, 0, 144, 0, 0, 0, 163, 0, 0, 0, 128, 0, 0, 0, 174,
17 0, 0, 0, 194, 0, 0, 0, 133, 0, 0, 0, 183, 0, 0, 0, 154, 0, 0, 0,
18 150, 0, 0, 0, 169, 0, 0, 0, 157
19 ];
20 var mdat = [
21 0, 0, 28, 188, 109, 100, 97, 116, 0, 0, 2, 151, 6, 5, 255, 255, 147,
22 220, 69, 233, 189, 230, 217, 72, 183, 150, 44, 216, 32, 217, 35, 238,
23 239, 120, 50, 54, 52, 32, 45, 32, 99, 111, 114, 101, 32, 49, 49, 56,
24 32, 114, 50, 48, 56, 53, 32, 56, 97, 54, 50, 56, 51, 53, 32, 45, 32,
25 72, 46, 50, 54, 52, 47, 77, 80, 69, 71, 45, 52, 32, 65, 86, 67, 32,
26 99, 111, 100, 101, 99, 32, 45, 32, 67, 111, 112, 121, 108, 101, 102,
27 116, 32, 50, 48, 48, 51, 45, 50, 48, 49, 49, 32, 45, 32, 104, 116,
28 116, 112, 58, 47, 47, 119, 119, 119, 46, 118, 105, 100, 101, 111, 108,
29 97, 110, 46, 111, 114, 103, 47, 120, 50, 54, 52, 46, 104, 116, 109,
30 108, 32, 45, 32, 111, 112, 116, 105, 111, 110, 115, 58, 32, 99, 97,
31 98, 97, 99, 61, 48, 32, 114, 101, 102, 61, 51, 32, 100, 101, 98, 108,
32 111, 99, 107, 61, 49, 58, 48, 58, 48, 32, 97, 110, 97, 108, 121, 115,
33 101, 61, 48, 120, 49, 58, 48, 120, 49, 49, 49, 32, 109, 101, 61, 104,
34 101, 120, 32, 115, 117, 98, 109, 101, 61, 55, 32, 112, 115, 121, 61,
35 49, 32, 112, 115, 121, 95, 114, 100, 61, 49, 46, 48, 48, 58, 48, 46,
36 48, 48, 32, 109, 105, 120, 101, 100, 95, 114, 101, 102, 61, 49, 32,
37 109, 101, 95, 114, 97, 110, 103, 101, 61, 49, 54, 32, 99, 104, 114,
38 111, 109, 97, 95, 109, 101, 61, 49, 32, 116, 114, 101, 108, 108, 105,
39 115, 61, 49, 32, 56, 120, 56, 100, 99, 116, 61, 48, 32, 99, 113, 109,
40 61, 48, 32, 100, 101, 97, 100, 122, 111, 110, 101, 61, 50, 49, 44, 49,
41 49, 32, 102, 97, 115, 116, 95, 112, 115, 107, 105, 112, 61, 49, 32,
42 99, 104, 114, 111, 109, 97, 95, 113, 112, 95, 111, 102, 102, 115, 101,
43 116, 61, 45, 50, 32, 116, 104, 114, 101, 97, 100, 115, 61, 51, 32,
44 115, 108, 105, 99, 101, 100, 95, 116, 104, 114, 101, 97, 100, 115, 61,
45 48, 32, 110, 114, 61, 48, 32, 100, 101, 99, 105, 109, 97, 116, 101,
46 61, 49, 32, 105, 110, 116, 101, 114, 108, 97, 99, 101, 100, 61, 48,
47 32, 98, 108, 117, 114, 97, 121, 95, 99, 111, 109, 112, 97, 116, 61,
48 48, 32, 99, 111, 110, 115, 116, 114, 97, 105, 110, 101, 100, 95, 105,
49 110, 116, 114, 97, 61, 48, 32, 98, 102, 114, 97, 109, 101, 115, 61,
50 48, 32, 119, 101, 105, 103, 104, 116, 112, 61, 48, 32, 107, 101, 121,
51 105, 110, 116, 61, 50, 53, 32, 107, 101, 121, 105, 110, 116, 95, 109,
52 105, 110, 61, 49, 51, 32, 115, 99, 101, 110, 101, 99, 117, 116, 61,
53 52, 48, 32, 105, 110, 116, 114, 97, 95, 114, 101, 102, 114, 101, 115,
54 104, 61, 48, 32, 114, 99, 95, 108, 111, 111, 107, 97, 104, 101, 97,
55 100, 61, 52, 48, 32, 114, 99, 61, 99, 98, 114, 32, 109, 98, 116, 114,
56 101, 101, 61, 49, 32, 98, 105, 116, 114, 97, 116, 101, 61, 52, 56, 32,
57 114, 97, 116, 101, 116, 111, 108, 61, 49, 46, 48, 32, 113, 99, 111,
58 109, 112, 61, 48, 46, 54, 48, 32, 113, 112, 109, 105, 110, 61, 48, 32,
59 113, 112, 109, 97, 120, 61, 54, 57, 32, 113, 112, 115, 116, 101, 112,
60 61, 52, 32, 118, 98, 118, 95, 109, 97, 120, 114, 97, 116, 101, 61, 52,
61 56, 32, 118, 98, 118, 95, 98, 117, 102, 115, 105, 122, 101, 61, 50,
62 48, 48, 48, 32, 110, 97, 108, 95, 104, 114, 100, 61, 110, 111, 110,
63 101, 32, 105, 112, 95, 114, 97, 116, 105, 111, 61, 49, 46, 52, 48, 32,
64 97, 113, 61, 49, 58, 49, 46, 48, 48, 0, 128, 0, 0, 10, 60, 101, 136,
65 132, 25, 201, 6, 34, 128, 0, 195, 76, 156, 156, 156, 156, 156, 156,
66 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 157, 117,
67 215, 93, 117, 215, 93, 117, 215, 93, 117, 215, 93, 117, 215, 93, 117,
68 215, 93, 117, 215, 93, 117, 215, 95, 255, 222, 238, 80, 168, 38, 192,
69 35, 16, 144, 238, 68, 216, 105, 218, 55, 168, 0, 162, 196, 199, 82,
70 63, 12, 225, 73, 161, 167, 199, 63, 255, 119, 220, 120, 86, 40, 104,
71 195, 139, 254, 42, 238, 91, 250, 153, 255, 255, 85, 225, 81, 64, 72,
72 185, 204, 154, 55, 71, 225, 39, 244, 108, 42, 251, 175, 255, 254, 171,
73 134, 8, 60, 160, 192, 171, 24, 186, 235, 174, 186, 235, 174, 186, 235,
74 174, 186, 235, 254, 68, 82, 105, 120, 193, 48, 3, 216, 90, 173, 113,
75 18, 222, 1, 212, 208, 33, 57, 132, 214, 13, 165, 0, 49, 178, 166, 201,
76 246, 232, 31, 159, 114, 199, 225, 248, 120, 43, 94, 172, 137, 32, 75,
77 180, 11, 247, 223, 215, 60, 255, 225, 240, 208, 6, 179, 209, 69, 200,
78 98, 8, 78, 127, 56, 167, 193, 4, 10, 86, 12, 135, 128, 50, 171, 244,
79 132, 239, 23, 93, 117, 215, 93, 117, 255, 255, 174, 21, 39, 0, 34, 47,
80 146, 109, 95, 99, 121, 145, 164, 252, 245, 215, 93, 127, 218, 223,
81 102, 56, 80, 108, 162, 144, 4, 45, 36, 192, 200, 180, 217, 171, 107,
82 207, 0, 5, 118, 124, 132, 86, 222, 3, 228, 95, 255, 135, 132, 133, 95,
83 63, 201, 94, 237, 216, 117, 215, 93, 253, 52, 167, 211, 72, 160, 150,
84 220, 152, 252, 49, 23, 119, 68, 166, 120, 38, 182, 158, 46, 186, 235,
85 174, 186, 235, 237, 7, 14, 24, 92, 172, 85, 41, 52, 237, 176, 36, 7,
86 36, 243, 235, 141, 132, 30, 250, 171, 62, 170, 183, 14, 146, 109, 247,
87 254, 0, 216, 166, 193, 132, 65, 114, 198, 145, 17, 236, 4, 181, 80,
88 52, 183, 125, 238, 240, 182, 55, 155, 38, 215, 252, 231, 217, 97, 81,
89 252, 12, 81, 121, 32, 222, 64, 100, 123, 224, 117, 17, 49, 226, 133,
90 65, 77, 215, 128, 8, 79, 114, 61, 95, 127, 46, 199, 213, 220, 111,
91 165, 80, 103, 234, 179, 148, 4, 110, 94, 206, 245, 255, 196, 106, 207,
92 10, 148, 0, 134, 53, 178, 28, 75, 239, 243, 54, 131, 72, 65, 84, 194,
93 41, 207, 235, 70, 173, 59, 32, 134, 180, 210, 191, 128, 35, 215, 219,
94 55, 10, 106, 126, 109, 51, 86, 17, 157, 104, 20, 103, 247, 214, 44,
95 196, 132, 32, 28, 171, 255, 255, 206, 255, 213, 147, 97, 133, 76, 214,
96 102, 231, 231, 241, 72, 156, 56, 161, 87, 89, 7, 57, 85, 100, 65, 255,
97 32, 110, 253, 1, 25, 209, 163, 106, 105, 49, 152, 90, 243, 182, 81,
98 195, 130, 157, 24, 201, 118, 229, 255, 196, 106, 39, 10, 138, 240, 68,
99 214, 2, 163, 144, 173, 82, 203, 73, 174, 70, 10, 101, 231, 250, 63,
100 97, 37, 178, 3, 121, 219, 125, 96, 145, 38, 57, 34, 37, 63, 255, 240,
101 160, 68, 109, 118, 202, 61, 227, 203, 210, 102, 142, 153, 173, 76,
102 111, 174, 186, 235, 254, 31, 252, 40, 104, 20, 109, 73, 102, 245, 50,
103 154, 153, 215, 235, 174, 186, 235, 174, 190, 19, 221, 127, 225, 35,
104 195, 124, 193, 179, 16, 239, 119, 251, 25, 126, 181, 143, 140, 216,
105 122, 35, 194, 225, 107, 76, 143, 235, 124, 22, 30, 202, 27, 52, 188,
106 80, 232, 136, 132, 137, 94, 110, 191, 59, 210, 95, 223, 177, 114, 10,
107 191, 252, 37, 187, 154, 7, 140, 177, 57, 255, 61, 186, 4, 194, 206,
108 129, 208, 186, 187, 46, 52, 63, 207, 183, 245, 54, 237, 191, 235, 221,
109 35, 76, 197, 84, 140, 63, 186, 52, 41, 129, 82, 166, 149, 255, 25,
110 149, 23, 231, 53, 175, 219, 243, 232, 67, 11, 191, 252, 37, 252, 130,
111 111, 2, 166, 217, 10, 0, 94, 211, 194, 101, 84, 68, 17, 31, 35, 242,
112 222, 132, 139, 208, 130, 103, 95, 84, 113, 195, 68, 84, 93, 169, 150,
113 64, 204, 207, 71, 253, 211, 174, 141, 133, 58, 135, 205, 35, 27, 187,
114 30, 176, 178, 60, 125, 14, 145, 16, 145, 43, 206, 175, 130, 255, 194,
115 66, 51, 199, 59, 5, 57, 117, 243, 84, 108, 168, 126, 150, 206, 255,
116 93, 135, 142, 157, 191, 20, 156, 122, 213, 80, 172, 179, 98, 143, 80,
117 240, 154, 158, 36, 146, 159, 145, 86, 194, 237, 251, 110, 225, 169,
118 127, 194, 66, 29, 151, 107, 53, 213, 93, 120, 115, 180, 1, 184, 180,
119 21, 41, 249, 151, 77, 200, 172, 235, 159, 179, 35, 35, 123, 180, 189,
120 31, 190, 255, 79, 130, 82, 20, 8, 128, 212, 22, 177, 22, 61, 232, 247,
121 30, 120, 3, 79, 232, 150, 179, 54, 225, 239, 11, 174, 186, 235, 255,
122 183, 177, 182, 20, 52, 2, 228, 166, 105, 102, 193, 76, 2, 71, 210, 89,
123 246, 226, 238, 235, 245, 215, 93, 117, 215, 93, 119, 223, 125, 255,
124 210, 31, 240, 248, 94, 2, 25, 231, 73, 255, 255, 47, 210, 129, 224,
125 115, 207, 22, 18, 209, 12, 2, 92, 233, 134, 237, 191, 192, 43, 214,
126 64, 109, 19, 255, 8, 48, 37, 118, 186, 235, 255, 255, 224, 132, 188,
127 0, 126, 81, 156, 120, 8, 99, 90, 123, 107, 101, 41, 126, 19, 52, 38,
128 229, 238, 98, 61, 176, 47, 32, 11, 119, 32, 54, 137, 225, 215, 93,
129 117, 215, 93, 117, 215, 93, 117, 215, 95, 234, 112, 255, 135, 197,
130 224, 7, 75, 35, 133, 156, 62, 179, 243, 170, 233, 134, 170, 56, 177,
131 31, 4, 254, 52, 151, 134, 30, 112, 37, 243, 126, 6, 143, 41, 153, 143,
132 255, 250, 172, 84, 120, 32, 142, 236, 197, 21, 248, 182, 229, 187,
133 255, 254, 239, 194, 176, 33, 18, 156, 200, 41, 70, 241, 254, 52, 125,
134 104, 216, 72, 212, 245, 255, 238, 69, 191, 248, 75, 128, 27, 108, 204,
135 4, 130, 175, 242, 117, 231, 180, 128, 23, 218, 89, 154, 72, 63, 147,
136 174, 186, 235, 174, 186, 235, 175, 255, 244, 30, 20, 62, 0, 9, 26,
137 140, 152, 187, 140, 173, 72, 149, 57, 9, 16, 162, 250, 87, 66, 43, 56,
138 215, 99, 158, 154, 53, 171, 127, 255, 219, 76, 111, 60, 203, 19, 244,
139 247, 127, 143, 144, 0, 152, 42, 176, 51, 6, 179, 229, 217, 225, 160,
140 149, 17, 207, 16, 87, 78, 248, 9, 225, 95, 163, 21, 113, 70, 213, 129,
141 40, 107, 116, 216, 109, 178, 200, 144, 31, 117, 163, 49, 39, 243, 81,
142 141, 245, 71, 73, 230, 249, 246, 126, 239, 209, 240, 255, 168, 97,
143 180, 45, 192, 178, 117, 74, 198, 219, 174, 10, 140, 240, 22, 146, 16,
144 77, 184, 39, 91, 18, 251, 142, 15, 32, 71, 84, 247, 230, 161, 195,
145 240, 0, 168, 132, 78, 73, 49, 199, 205, 5, 192, 67, 254, 193, 46, 21,
146 175, 76, 229, 19, 0, 26, 100, 168, 43, 230, 37, 9, 66, 51, 3, 90, 66,
147 243, 186, 94, 187, 232, 26, 151, 217, 89, 85, 99, 255, 86, 166, 46,
148 38, 206, 80, 185, 255, 88, 94, 45, 103, 228, 8, 76, 122, 227, 98, 250,
149 34, 184, 114, 238, 200, 171, 26, 49, 98, 139, 255, 103, 87, 173, 64,
150 119, 90, 66, 176, 207, 147, 189, 132, 144, 105, 120, 183, 18, 140,
151 253, 105, 131, 221, 240, 202, 191, 246, 169, 111, 254, 223, 160, 138,
152 73, 34, 149, 138, 238, 62, 184, 175, 27, 224, 184, 253, 44, 134, 172,
153 190, 120, 26, 228, 92, 187, 202, 254, 192, 220, 79, 205, 151, 190,
154 216, 230, 3, 7, 219, 166, 104, 91, 206, 38, 255, 233, 85, 85, 143,
155 136, 231, 102, 196, 227, 158, 181, 26, 17, 82, 208, 205, 91, 9, 69,
156 255, 185, 238, 98, 122, 133, 85, 19, 132, 125, 95, 251, 34, 196, 231,
157 154, 186, 208, 233, 249, 168, 247, 255, 127, 106, 63, 32, 51, 67, 163,
158 1, 190, 176, 66, 92, 198, 212, 84, 186, 39, 254, 119, 31, 56, 251,
159 223, 4, 166, 108, 149, 89, 78, 236, 0, 180, 201, 156, 173, 94, 153,
160 111, 254, 252, 17, 108, 29, 69, 70, 221, 79, 156, 2, 201, 254, 41,
161 118, 45, 169, 255, 216, 93, 195, 83, 174, 18, 107, 125, 167, 192, 226,
162 217, 88, 184, 46, 127, 238, 193, 177, 38, 168, 69, 139, 159, 223, 114,
163 99, 37, 109, 32, 53, 38, 184, 207, 253, 205, 158, 205, 231, 141, 74,
164 171, 76, 139, 140, 193, 242, 246, 180, 56, 178, 144, 18, 162, 41, 16,
165 43, 255, 155, 120, 145, 25, 202, 221, 219, 239, 184, 14, 234, 58, 129,
166 128, 223, 214, 124, 110, 155, 150, 205, 118, 175, 251, 192, 14, 148,
167 58, 73, 44, 180, 15, 29, 201, 184, 122, 56, 103, 137, 231, 0, 45, 144,
168 127, 145, 96, 157, 75, 37, 3, 180, 104, 193, 173, 166, 114, 208, 214,
169 159, 223, 214, 123, 73, 163, 0, 5, 117, 61, 156, 14, 52, 198, 157,
170 135, 213, 215, 211, 130, 136, 185, 173, 120, 160, 245, 142, 245, 169,
171 208, 22, 106, 52, 233, 254, 183, 121, 49, 53, 105, 86, 96, 66, 175,
172 35, 148, 64, 126, 18, 240, 88, 215, 207, 255, 251, 73, 32, 112, 196,
173 160, 73, 215, 74, 223, 186, 240, 6, 64, 7, 80, 27, 252, 60, 91, 228,
174 206, 175, 251, 35, 194, 137, 161, 5, 148, 166, 55, 254, 195, 187, 101,
175 2, 100, 39, 246, 127, 205, 191, 128, 128, 243, 166, 153, 163, 24, 82,
176 210, 161, 152, 149, 209, 204, 101, 111, 187, 252, 105, 224, 236, 86,
177 165, 56, 18, 115, 255, 255, 19, 11, 171, 107, 34, 156, 76, 111, 152,
178 1, 108, 42, 188, 73, 174, 110, 189, 157, 143, 172, 198, 139, 246, 182,
179 99, 88, 234, 237, 171, 127, 161, 133, 33, 241, 63, 39, 31, 194, 101,
180 244, 58, 204, 82, 50, 28, 62, 166, 246, 128, 220, 58, 42, 111, 17, 86,
181 140, 183, 219, 133, 4, 72, 74, 141, 148, 103, 54, 62, 213, 36, 74, 68,
182 137, 87, 255, 208, 253, 117, 215, 93, 117, 215, 93, 117, 255, 255, 8,
183 66, 135, 225, 191, 64, 31, 51, 34, 6, 19, 247, 9, 99, 159, 227, 240,
184 8, 11, 56, 216, 140, 0, 171, 94, 141, 16, 247, 76, 216, 98, 241, 23,
185 172, 125, 190, 96, 61, 54, 112, 80, 180, 192, 176, 239, 166, 82, 195,
186 32, 168, 103, 107, 73, 19, 16, 119, 126, 122, 54, 227, 251, 62, 187,
187 145, 247, 164, 96, 213, 91, 12, 71, 194, 230, 205, 4, 77, 193, 43, 38,
188 167, 48, 98, 200, 67, 194, 185, 211, 85, 240, 127, 235, 140, 66, 34,
189 35, 190, 3, 243, 47, 131, 132, 172, 43, 63, 255, 85, 46, 12, 155, 217,
190 238, 172, 55, 73, 48, 115, 152, 251, 227, 16, 194, 71, 82, 93, 43, 20,
191 25, 8, 144, 50, 139, 168, 52, 255, 242, 75, 9, 170, 96, 249, 57, 6,
192 239, 15, 154, 49, 205, 152, 41, 18, 214, 74, 42, 204, 86, 193, 72,
193 239, 245, 120, 127, 195, 224, 24, 7, 10, 192, 157, 166, 143, 46, 49,
194 16, 103, 240, 10, 28, 252, 128, 38, 98, 217, 40, 152, 86, 240, 248,
195 65, 34, 153, 30, 175, 230, 88, 23, 251, 139, 26, 107, 20, 55, 246,
196 234, 167, 193, 135, 235, 50, 68, 92, 135, 184, 126, 0, 41, 205, 147,
197 8, 129, 210, 235, 224, 31, 154, 244, 105, 117, 255, 253, 224, 104,
198 210, 82, 92, 144, 252, 7, 24, 71, 87, 220, 90, 79, 141, 97, 177, 21,
199 191, 216, 120, 146, 204, 15, 63, 140, 157, 223, 73, 11, 152, 130, 71,
200 124, 161, 189, 225, 253, 132, 239, 73, 84, 11, 55, 230, 109, 209, 166,
201 131, 160, 248, 153, 53, 167, 193, 252, 84, 86, 133, 241, 126, 252,
202 103, 226, 229, 213, 170, 59, 131, 255, 246, 166, 96, 221, 56, 138, 82,
203 119, 81, 126, 210, 136, 228, 36, 142, 8, 148, 27, 191, 220, 34, 22,
204 228, 86, 109, 140, 200, 181, 129, 226, 39, 82, 198, 74, 115, 255, 43,
205 57, 17, 28, 243, 227, 119, 223, 73, 132, 73, 57, 22, 140, 177, 53,
206 246, 255, 143, 75, 122, 68, 86, 182, 39, 217, 212, 20, 152, 234, 175,
207 239, 251, 108, 128, 166, 114, 66, 141, 192, 137, 255, 193, 219, 140,
208 13, 81, 113, 178, 233, 155, 82, 69, 68, 113, 13, 204, 180, 31, 192,
209 12, 70, 64, 60, 68, 247, 212, 6, 130, 174, 179, 151, 13, 188, 29, 109,
210 18, 3, 119, 208, 43, 37, 115, 65, 5, 204, 144, 184, 33, 24, 69, 30,
211 254, 54, 205, 201, 63, 115, 80, 217, 127, 127, 244, 67, 49, 80, 247,
212 168, 139, 249, 83, 255, 123, 114, 1, 170, 237, 67, 99, 234, 219, 144,
213 215, 4, 18, 236, 169, 215, 251, 223, 213, 178, 113, 148, 52, 75, 191,
214 239, 242, 96, 125, 81, 77, 29, 40, 219, 89, 162, 35, 20, 198, 227,
215 120, 31, 248, 154, 52, 64, 85, 194, 230, 91, 22, 142, 6, 104, 173, 3,
216 77, 147, 26, 164, 111, 254, 42, 84, 1, 204, 72, 61, 140, 96, 5, 191,
217 5, 174, 85, 179, 228, 84, 8, 175, 2, 58, 99, 107, 14, 98, 44, 13, 255,
218 46, 67, 245, 94, 70, 125, 53, 90, 241, 209, 237, 160, 203, 225, 219,
219 3, 37, 181, 152, 21, 246, 12, 25, 243, 249, 20, 173, 224, 251, 164,
220 130, 119, 149, 151, 188, 64, 118, 134, 136, 243, 192, 253, 26, 236,
221 17, 244, 3, 6, 161, 56, 241, 241, 227, 58, 192, 119, 65, 2, 85, 69,
222 101, 194, 147, 105, 35, 212, 64, 201, 135, 43, 129, 87, 131, 254, 24,
223 153, 225, 6, 226, 250, 93, 242, 223, 246, 161, 232, 38, 235, 82, 149,
224 186, 208, 131, 255, 224, 119, 239, 223, 128, 8, 91, 254, 167, 223,
225 255, 193, 54, 146, 56, 131, 228, 158, 254, 240, 20, 219, 226, 181,
226 174, 62, 91, 97, 110, 120, 231, 111, 181, 135, 34, 0, 55, 131, 15,
227 194, 73, 33, 218, 198, 76, 123, 70, 176, 25, 60, 252, 123, 173, 180,
228 121, 252, 31, 255, 220, 98, 1, 198, 120, 0, 43, 164, 153, 155, 68, 70,
229 100, 1, 68, 194, 33, 145, 96, 191, 16, 42, 212, 112, 86, 184, 139,
230 195, 63, 221, 241, 194, 72, 146, 175, 1, 192, 89, 134, 143, 188, 80,
231 73, 161, 214, 37, 255, 238, 53, 252, 5, 209, 205, 66, 96, 119, 255, 3,
232 135, 207, 225, 15, 193, 0, 155, 16, 161, 27, 102, 216, 136, 122, 189,
233 255, 93, 117, 215, 255, 255, 194, 65, 87, 125, 223, 120, 99, 44, 240,
234 251, 44, 240, 198, 89, 225, 246, 88, 127, 99, 45, 199, 31, 255, 239,
235 15, 178, 207, 12, 101, 158, 31, 101, 158, 24, 203, 15, 195, 236, 183,
236 199, 255, 199, 225, 140, 183, 143, 255, 247, 135, 217, 103, 134, 50,
237 195, 251, 236, 183, 31, 255, 247, 134, 50, 207, 15, 178, 207, 12, 101,
238 158, 31, 101, 158, 24, 203, 64, 0, 0, 0, 179, 65, 154, 56, 59, 131,
239 107, 152, 241, 64, 0, 64, 43, 20, 0, 4, 2, 190, 82, 5, 192, 0, 247,
240 128, 198, 49, 192, 39, 2, 192, 0, 244, 164, 248, 64, 96, 240, 64, 253,
241 159, 205, 107, 125, 155, 241, 99, 57, 170, 177, 157, 93, 248, 182, 8,
242 109, 152, 126, 10, 240, 110, 177, 6, 248, 127, 240, 66, 43, 128, 99,
243 196, 97, 211, 109, 246, 255, 15, 66, 111, 243, 73, 209, 139, 47, 134,
244 99, 29, 98, 48, 1, 125, 106, 153, 161, 178, 253, 244, 246, 249, 131,
245 47, 164, 243, 35, 56, 252, 184, 75, 220, 168, 36, 246, 188, 21, 127,
246 32, 59, 136, 136, 162, 27, 251, 125, 184, 80, 240, 104, 149, 63, 146,
247 34, 151, 230, 114, 9, 227, 27, 21, 177, 0, 74, 89, 242, 49, 208, 115,
248 240, 219, 227, 245, 103, 207, 211, 115, 8, 63, 2, 158, 55, 17, 226,
249 60, 71, 136, 241, 29, 97, 10, 194, 21, 132, 43, 8, 86, 16, 196, 120,
250 143, 17, 226, 60, 0, 0, 0, 168, 65, 154, 84, 12, 224, 221, 231, 129,
251 36, 38, 44, 176, 156, 92, 6, 185, 112, 11, 92, 114, 7, 113, 149, 193,
252 72, 145, 228, 141, 60, 127, 205, 254, 21, 63, 130, 15, 192, 7, 170,
253 117, 110, 189, 221, 229, 54, 108, 180, 121, 249, 13, 255, 246, 99,
254 133, 13, 192, 72, 185, 113, 236, 236, 105, 199, 251, 34, 10, 8, 193,
255 67, 254, 41, 138, 92, 65, 225, 119, 155, 218, 91, 49, 124, 72, 107,
256 130, 57, 27, 177, 97, 254, 203, 237, 159, 136, 39, 218, 16, 75, 110,
257 35, 42, 240, 11, 80, 206, 48, 189, 1, 147, 138, 63, 9, 220, 40, 66,
258 39, 69, 239, 255, 37, 151, 128, 21, 215, 218, 239, 174, 131, 83, 97,
259 234, 147, 152, 139, 131, 185, 72, 39, 128, 140, 212, 213, 233, 155,
260 255, 252, 61, 12, 164, 199, 246, 126, 48, 158, 247, 251, 17, 144, 94,
261 14, 242, 82, 182, 121, 212, 65, 248, 25, 224, 0, 0, 0, 178, 65, 154,
262 96, 87, 7, 15, 124, 167, 192, 18, 53, 31, 218, 6, 61, 141, 142, 205,
263 92, 19, 19, 230, 174, 168, 39, 229, 227, 2, 0, 10, 183, 113, 149, 63,
264 192, 33, 216, 167, 15, 46, 9, 194, 65, 237, 121, 45, 194, 101, 248,
265 20, 66, 226, 40, 92, 212, 161, 241, 238, 98, 34, 255, 252, 60, 83, 1,
266 63, 20, 186, 196, 19, 128, 31, 102, 153, 100, 123, 224, 20, 114, 141,
267 131, 206, 60, 51, 158, 194, 203, 247, 183, 231, 102, 23, 132, 143, 61,
268 32, 3, 45, 244, 60, 16, 178, 23, 173, 139, 117, 202, 43, 115, 77, 225,
269 30, 169, 193, 69, 83, 167, 122, 34, 225, 89, 115, 17, 17, 127, 252,
270 61, 113, 245, 236, 79, 23, 228, 40, 6, 169, 7, 167, 17, 57, 117, 35,
271 16, 11, 22, 133, 167, 87, 140, 121, 239, 247, 190, 205, 100, 221, 143,
272 232, 90, 43, 151, 59, 7, 215, 105, 70, 45, 255, 62, 105, 143, 190, 3,
273 53, 194, 24, 142, 34, 0, 0, 0, 179, 65, 154, 128, 71, 2, 57, 249, 75,
274 248, 177, 32, 81, 128, 135, 144, 161, 22, 7, 178, 4, 222, 253, 152,
275 69, 227, 177, 153, 255, 238, 253, 116, 5, 64, 33, 150, 0, 44, 80, 105,
276 154, 147, 173, 10, 20, 107, 95, 176, 88, 0, 45, 226, 145, 39, 130,
277 197, 244, 232, 73, 63, 111, 242, 226, 114, 1, 36, 194, 184, 8, 186,
278 247, 21, 130, 0, 32, 141, 65, 35, 67, 126, 2, 249, 243, 225, 57, 91,
279 87, 247, 132, 123, 173, 150, 190, 111, 183, 137, 39, 167, 152, 115,
280 248, 140, 4, 122, 245, 231, 190, 135, 220, 13, 90, 146, 206, 43, 92,
281 154, 19, 138, 155, 201, 89, 120, 3, 24, 115, 44, 221, 231, 129, 54,
282 141, 235, 85, 175, 136, 184, 70, 93, 226, 96, 129, 188, 33, 86, 192,
283 236, 175, 218, 229, 255, 204, 4, 108, 79, 17, 228, 8, 194, 47, 4, 57,
284 43, 99, 132, 137, 155, 13, 255, 26, 175, 110, 223, 191, 40, 142, 179,
285 1, 2, 6, 136, 0, 0, 0, 194, 65, 154, 160, 71, 6, 190, 44, 94, 96, 48,
286 227, 45, 145, 132, 143, 200, 39, 175, 41, 56, 2, 85, 90, 52, 141, 108,
287 37, 167, 137, 196, 159, 240, 168, 17, 247, 135, 244, 17, 9, 4, 251,
288 172, 84, 36, 195, 134, 252, 4, 198, 205, 227, 198, 31, 52, 64, 90,
289 255, 207, 196, 37, 124, 70, 0, 85, 146, 38, 50, 154, 206, 248, 37,
290 104, 141, 18, 45, 51, 251, 254, 239, 48, 220, 0, 33, 2, 237, 5, 20,
291 244, 140, 183, 91, 5, 92, 219, 29, 77, 26, 202, 43, 11, 118, 66, 98,
292 193, 45, 112, 187, 113, 59, 217, 57, 204, 38, 12, 191, 250, 208, 37,
293 196, 10, 224, 140, 49, 200, 67, 126, 11, 119, 45, 252, 62, 12, 4, 21,
294 94, 166, 225, 41, 245, 228, 13, 99, 252, 25, 6, 51, 241, 110, 246,
295 200, 126, 180, 86, 192, 210, 182, 41, 58, 202, 137, 128, 197, 160,
296 158, 202, 159, 239, 202, 154, 101, 163, 143, 119, 235, 65, 93, 245,
297 23, 174, 196, 84, 174, 39, 58, 72, 225, 245, 173, 138, 86, 250, 120,
298 27, 224, 0, 0, 0, 142, 65, 154, 192, 71, 2, 179, 114, 196, 98, 132,
299 121, 125, 240, 152, 59, 30, 12, 199, 225, 7, 6, 235, 232, 46, 155, 71,
300 19, 30, 2, 192, 210, 165, 133, 37, 172, 253, 26, 9, 190, 112, 167,
301 226, 60, 64, 232, 16, 174, 150, 108, 134, 173, 184, 93, 60, 158, 253,
302 173, 195, 145, 236, 39, 148, 176, 38, 110, 234, 96, 1, 153, 116, 166,
303 138, 242, 246, 182, 129, 241, 41, 94, 220, 78, 83, 30, 28, 103, 223,
304 55, 248, 255, 133, 68, 97, 150, 91, 216, 219, 47, 55, 253, 247, 30, 8,
305 53, 18, 250, 202, 8, 66, 192, 92, 17, 199, 124, 43, 114, 211, 2, 186,
306 97, 51, 85, 93, 236, 159, 198, 123, 35, 72, 180, 177, 177, 116, 126,
307 200, 56, 152, 190, 184, 251, 180, 13, 240, 0, 0, 0, 172, 65, 154, 224,
308 220, 10, 205, 33, 17, 115, 113, 223, 97, 66, 123, 88, 177, 225, 111,
309 143, 17, 0, 55, 155, 49, 17, 89, 92, 140, 34, 78, 190, 200, 12, 74,
310 147, 26, 139, 188, 129, 15, 254, 242, 50, 129, 239, 151, 37, 98, 248,
311 0, 94, 87, 77, 175, 86, 4, 116, 45, 66, 214, 162, 61, 99, 27, 127,
312 147, 179, 30, 1, 187, 116, 141, 230, 255, 21, 245, 24, 84, 64, 38,
313 125, 75, 248, 18, 249, 191, 7, 26, 233, 226, 111, 255, 215, 10, 151,
314 5, 155, 82, 0, 125, 189, 81, 183, 51, 124, 63, 248, 80, 108, 1, 0, 88,
315 95, 191, 99, 163, 209, 160, 43, 110, 72, 247, 117, 224, 13, 234, 183,
316 30, 225, 12, 101, 108, 49, 113, 47, 19, 244, 53, 91, 63, 55, 144, 108,
317 8, 201, 106, 103, 230, 21, 197, 173, 237, 108, 80, 140, 74, 109, 116,
318 189, 25, 148, 223, 242, 41, 93, 242, 27, 232, 217, 224, 104, 128, 0,
319 0, 0, 186, 65, 155, 0, 220, 10, 205, 175, 133, 43, 16, 34, 0, 192,
320 135, 54, 189, 189, 200, 125, 206, 235, 108, 6, 116, 18, 246, 85, 235,
321 38, 127, 189, 27, 75, 215, 183, 234, 97, 56, 5, 158, 35, 50, 80, 43,
322 183, 4, 246, 125, 151, 214, 254, 81, 24, 78, 163, 48, 232, 148, 215,
323 100, 136, 145, 24, 117, 201, 57, 76, 88, 36, 236, 211, 252, 223, 250,
324 174, 120, 32, 247, 14, 207, 44, 252, 107, 246, 136, 65, 98, 154, 160,
325 238, 150, 28, 53, 9, 120, 180, 183, 215, 137, 49, 164, 239, 81, 174,
326 107, 194, 61, 136, 134, 184, 36, 45, 62, 255, 2, 215, 154, 105, 101,
327 174, 27, 94, 121, 173, 20, 170, 97, 77, 29, 87, 255, 135, 207, 28, 44,
328 188, 199, 85, 207, 234, 188, 19, 155, 203, 146, 231, 55, 194, 203, 85,
329 99, 108, 96, 184, 2, 22, 18, 77, 214, 61, 49, 209, 100, 173, 232, 163,
330 216, 98, 25, 144, 1, 111, 18, 252, 197, 239, 129, 65, 249, 190, 234,
331 141, 243, 254, 6, 120, 0, 0, 0, 165, 65, 155, 32, 71, 2, 179, 245,
332 133, 11, 232, 173, 213, 8, 21, 9, 5, 57, 230, 2, 56, 148, 20, 189,
333 247, 242, 19, 241, 58, 207, 111, 193, 42, 162, 42, 252, 188, 149, 148,
334 184, 1, 115, 100, 52, 157, 237, 228, 4, 244, 208, 215, 234, 155, 123,
335 241, 56, 147, 97, 151, 191, 4, 32, 132, 167, 224, 71, 95, 159, 248,
336 250, 216, 192, 86, 56, 226, 153, 36, 244, 245, 126, 241, 155, 223,
337 253, 176, 101, 50, 156, 115, 63, 159, 10, 19, 31, 25, 60, 240, 230,
338 255, 58, 159, 193, 1, 122, 223, 2, 13, 152, 78, 0, 123, 221, 125, 87,
339 191, 159, 132, 150, 12, 0, 131, 136, 25, 6, 174, 87, 175, 4, 61, 98,
340 107, 3, 52, 165, 33, 248, 145, 176, 8, 235, 248, 251, 219, 7, 255,
341 228, 160, 196, 237, 151, 27, 94, 233, 195, 128, 22, 245, 179, 65, 168,
342 137, 184, 31, 224, 84, 128, 0, 0, 0, 239, 65, 155, 64, 71, 2, 179,
343 195, 60, 220, 0, 147, 92, 254, 223, 250, 216, 62, 99, 33, 14, 228,
344 126, 77, 255, 175, 224, 128, 94, 27, 218, 114, 225, 255, 127, 190, 19,
345 39, 181, 98, 70, 138, 120, 129, 130, 2, 16, 3, 199, 41, 63, 71, 214,
346 191, 3, 56, 206, 136, 250, 213, 83, 198, 58, 98, 184, 96, 29, 115,
347 161, 214, 92, 173, 70, 96, 99, 69, 192, 239, 175, 178, 206, 34, 43,
348 224, 32, 67, 250, 231, 243, 142, 172, 55, 182, 224, 48, 232, 52, 252,
349 227, 205, 128, 140, 205, 207, 200, 33, 89, 187, 48, 76, 28, 165, 237,
350 101, 55, 193, 71, 85, 133, 142, 116, 119, 13, 109, 175, 94, 118, 19,
351 156, 217, 80, 65, 86, 165, 63, 29, 228, 128, 22, 49, 10, 23, 179, 167,
352 53, 136, 20, 138, 201, 196, 45, 72, 31, 253, 225, 5, 106, 109, 183,
353 125, 246, 32, 191, 97, 202, 53, 135, 148, 199, 52, 249, 233, 48, 130,
354 120, 214, 63, 183, 159, 250, 48, 220, 51, 22, 39, 194, 24, 68, 223,
355 73, 255, 195, 226, 163, 166, 94, 109, 62, 105, 63, 139, 19, 201, 41,
356 189, 193, 50, 208, 165, 224, 3, 242, 155, 135, 70, 113, 109, 61, 242,
357 192, 67, 120, 35, 32, 215, 135, 159, 132, 188, 132, 2, 24, 161, 13,
358 160, 255, 225, 136, 16, 32, 0, 0, 0, 170, 65, 155, 96, 87, 2, 183,
359 102, 224, 89, 165, 0, 17, 238, 159, 109, 76, 41, 228, 55, 213, 34,
360 157, 128, 144, 176, 30, 127, 238, 76, 242, 192, 4, 44, 211, 223, 245,
361 173, 148, 192, 34, 20, 196, 204, 192, 34, 20, 196, 205, 189, 132, 242,
362 154, 4, 205, 221, 76, 92, 8, 107, 104, 15, 137, 74, 246, 226, 113,
363 230, 203, 24, 46, 229, 47, 80, 17, 49, 239, 70, 217, 128, 150, 102,
364 145, 246, 194, 31, 152, 75, 141, 125, 159, 126, 228, 147, 16, 242,
365 248, 68, 21, 226, 57, 97, 26, 210, 252, 252, 37, 249, 169, 76, 62,
366 148, 193, 57, 97, 50, 136, 206, 48, 99, 175, 124, 4, 143, 71, 225, 31,
367 36, 16, 251, 177, 96, 0, 83, 130, 104, 196, 70, 151, 193, 240, 47,
368 252, 64, 184, 9, 141, 180, 48, 1, 111, 37, 142, 101, 228, 71, 220,
369 215, 211, 192, 233, 66, 161, 228, 201, 119, 175, 15, 19, 192, 129, 0,
370 0, 0, 127, 65, 155, 128, 87, 2, 181, 112, 165, 100, 52, 0, 134, 39, 4,
371 108, 206, 82, 180, 11, 82, 210, 68, 0, 117, 69, 199, 175, 246, 80,
372 106, 169, 48, 12, 44, 99, 159, 243, 250, 42, 132, 133, 58, 177, 126,
373 6, 239, 41, 176, 2, 164, 166, 218, 221, 238, 128, 219, 76, 138, 115,
374 249, 158, 39, 10, 248, 67, 30, 222, 246, 41, 191, 222, 183, 216, 90,
375 132, 254, 69, 137, 7, 225, 16, 18, 121, 248, 76, 223, 10, 127, 195,
376 226, 120, 213, 56, 20, 37, 22, 243, 182, 20, 48, 127, 64, 27, 191, 22,
377 40, 234, 35, 104, 50, 11, 117, 184, 42, 34, 139, 71, 129, 143, 172,
378 139, 22, 51, 71, 224, 66, 128, 0, 0, 0, 157, 65, 155, 160, 87, 3, 87,
379 144, 208, 17, 25, 156, 21, 13, 152, 240, 46, 65, 222, 185, 111, 101,
380 9, 24, 120, 214, 205, 93, 143, 83, 63, 153, 77, 63, 21, 54, 26, 185,
381 64, 18, 47, 73, 157, 35, 31, 0, 65, 181, 83, 235, 121, 77, 193, 229,
382 106, 56, 17, 191, 210, 21, 210, 206, 194, 112, 249, 132, 224, 47, 141,
383 126, 113, 60, 115, 244, 200, 32, 20, 182, 254, 35, 18, 229, 202, 223,
384 172, 194, 81, 190, 23, 247, 223, 171, 210, 149, 125, 246, 42, 79, 104,
385 166, 43, 74, 175, 15, 249, 37, 49, 191, 225, 239, 18, 44, 80, 16, 194,
386 64, 40, 115, 240, 153, 189, 161, 242, 150, 9, 163, 244, 255, 26, 164,
387 252, 38, 104, 126, 177, 5, 194, 19, 60, 89, 147, 40, 233, 131, 190,
388 183, 78, 253, 224, 128, 249, 79, 4, 47, 92, 112, 33, 64, 0, 0, 0, 140,
389 65, 155, 192, 87, 6, 250, 195, 247, 155, 192, 36, 253, 125, 156, 248,
390 174, 226, 111, 32, 136, 22, 159, 86, 19, 46, 115, 234, 254, 64, 175,
391 59, 65, 199, 49, 141, 106, 115, 246, 92, 104, 57, 87, 166, 214, 75,
392 157, 238, 178, 147, 0, 46, 226, 68, 185, 89, 192, 111, 52, 103, 173,
393 86, 207, 19, 133, 12, 124, 1, 106, 159, 146, 89, 225, 6, 173, 108,
394 117, 137, 36, 6, 249, 13, 237, 45, 173, 240, 247, 132, 35, 36, 19,
395 243, 97, 11, 37, 21, 17, 97, 51, 91, 229, 254, 30, 41, 189, 243, 240,
396 145, 142, 170, 204, 216, 235, 226, 188, 212, 225, 212, 137, 153, 235,
397 172, 71, 172, 177, 252, 223, 226, 186, 248, 32, 18, 82, 135, 250, 112,
398 91, 114, 223, 129, 14, 0, 0, 0, 159, 65, 155, 224, 87, 2, 181, 102,
399 241, 179, 190, 240, 157, 100, 17, 0, 53, 90, 66, 59, 247, 166, 223,
400 191, 74, 214, 202, 4, 243, 68, 74, 176, 186, 185, 251, 70, 188, 197,
401 132, 204, 239, 96, 12, 34, 87, 141, 51, 8, 241, 229, 137, 230, 94,
402 247, 90, 202, 43, 130, 187, 110, 133, 74, 233, 183, 91, 46, 228, 156,
403 32, 99, 151, 193, 11, 67, 139, 31, 228, 48, 71, 173, 61, 53, 179, 127,
404 255, 146, 132, 159, 246, 255, 251, 16, 24, 142, 255, 235, 207, 188, 8,
405 0, 175, 52, 155, 229, 254, 18, 44, 252, 178, 249, 225, 51, 121, 74,
406 196, 95, 137, 240, 223, 155, 23, 252, 255, 193, 198, 18, 242, 4, 96,
407 4, 57, 106, 121, 146, 247, 230, 42, 175, 199, 85, 224, 156, 103, 10,
408 4, 205, 198, 245, 148, 55, 129, 47, 155, 241, 14, 166, 88, 255, 2, 36,
409 0, 0, 0, 124, 65, 154, 0, 87, 2, 181, 253, 44, 39, 228, 17, 0, 99, 95,
410 101, 95, 124, 67, 216, 204, 130, 141, 43, 87, 123, 46, 119, 95, 149,
411 49, 183, 176, 158, 82, 64, 153, 187, 169, 128, 13, 255, 162, 201, 251,
412 247, 189, 173, 160, 62, 37, 43, 219, 136, 190, 18, 23, 226, 120, 4,
413 121, 24, 189, 191, 225, 10, 216, 162, 85, 203, 163, 180, 113, 226, 77,
414 62, 251, 204, 191, 132, 64, 176, 8, 129, 164, 60, 94, 27, 247, 193,
415 128, 41, 207, 194, 47, 193, 36, 35, 136, 97, 193, 169, 119, 227, 127,
416 244, 2, 32, 4, 110, 35, 132, 176, 176, 64, 129, 60, 33, 106, 95, 133,
417 194, 48, 34, 64, 0, 0, 0, 170, 65, 154, 32, 87, 2, 181, 102, 240, 9,
418 203, 70, 151, 249, 167, 132, 201, 245, 247, 228, 17, 9, 249, 24, 9,
419 145, 5, 223, 207, 64, 183, 242, 130, 143, 200, 45, 58, 79, 124, 64,
420 36, 253, 148, 39, 251, 170, 191, 209, 227, 18, 187, 203, 192, 1, 187,
421 45, 249, 241, 178, 189, 47, 76, 77, 188, 95, 245, 249, 215, 175, 67,
422 133, 147, 4, 150, 165, 153, 54, 144, 11, 212, 55, 219, 251, 92, 188,
423 109, 236, 66, 123, 135, 246, 141, 53, 94, 255, 204, 126, 1, 30, 190,
424 218, 240, 43, 2, 64, 88, 13, 5, 147, 182, 105, 177, 236, 191, 47, 195,
425 37, 4, 158, 248, 212, 175, 96, 104, 194, 57, 36, 13, 194, 102, 201,
426 175, 83, 255, 127, 127, 172, 16, 135, 144, 128, 128, 73, 102, 191,
427 182, 104, 176, 82, 200, 67, 88, 194, 37, 90, 2, 247, 127, 224, 66,
428 125, 1, 58, 249, 252, 252, 35, 254, 92, 8, 176, 0, 0, 0, 190, 65, 154,
429 64, 103, 2, 181, 126, 35, 9, 214, 67, 64, 38, 226, 151, 163, 226, 153,
430 253, 214, 181, 179, 133, 156, 135, 203, 25, 15, 188, 243, 89, 107,
431 116, 253, 179, 75, 32, 89, 190, 0, 64, 50, 242, 11, 72, 190, 220, 37,
432 8, 102, 103, 169, 68, 232, 255, 111, 41, 184, 112, 201, 24, 19, 42,
433 62, 37, 214, 238, 87, 152, 95, 2, 107, 212, 201, 191, 241, 125, 198,
434 21, 25, 166, 122, 130, 3, 58, 50, 8, 207, 4, 99, 170, 38, 248, 123,
435 223, 194, 184, 11, 79, 84, 114, 11, 120, 224, 254, 63, 201, 20, 199,
436 39, 35, 230, 112, 195, 224, 251, 249, 159, 235, 192, 103, 186, 228,
437 221, 190, 196, 89, 110, 141, 168, 240, 222, 161, 163, 246, 76, 110,
438 253, 95, 123, 1, 205, 224, 8, 94, 41, 72, 80, 104, 4, 41, 170, 237,
439 249, 60, 122, 96, 100, 87, 198, 176, 63, 0, 71, 47, 200, 82, 230, 109,
440 195, 222, 38, 190, 239, 135, 248, 120, 66, 60, 177, 159, 95, 208, 4,
441 3, 215, 9, 159, 129, 98, 0, 0, 0, 129, 65, 154, 96, 103, 2, 189, 147,
442 9, 249, 4, 64, 7, 58, 225, 200, 74, 114, 18, 173, 80, 104, 244, 223,
443 213, 214, 206, 42, 216, 191, 207, 249, 151, 169, 149, 66, 119, 186,
444 202, 76, 0, 209, 69, 10, 120, 252, 220, 4, 245, 163, 62, 212, 187,
445 244, 222, 22, 12, 32, 28, 41, 13, 211, 48, 148, 197, 29, 87, 123, 230,
446 135, 155, 5, 255, 0, 225, 226, 117, 155, 252, 3, 0, 225, 89, 236, 125,
447 150, 215, 251, 243, 127, 128, 64, 60, 42, 83, 224, 203, 71, 66, 203,
448 124, 33, 91, 20, 48, 139, 232, 126, 5, 187, 191, 203, 248, 128, 247,
449 144, 104, 18, 158, 105, 103, 255, 129, 227, 66, 56, 76, 252, 11, 16,
450 0, 0, 0, 179, 65, 154, 128, 87, 2, 111, 150, 120, 110, 37, 226, 185,
451 184, 34, 184, 122, 108, 190, 108, 1, 213, 136, 177, 184, 0, 53, 73,
452 102, 81, 224, 0, 0, 64, 27, 49, 127, 58, 174, 167, 22, 103, 255, 12,
453 154, 8, 175, 65, 170, 246, 57, 213, 98, 4, 64, 24, 22, 245, 79, 215,
454 60, 230, 48, 98, 109, 58, 34, 45, 130, 196, 158, 52, 1, 141, 84, 33,
455 152, 148, 70, 229, 184, 63, 178, 144, 255, 249, 245, 121, 184, 4, 196,
456 245, 118, 192, 86, 158, 137, 95, 30, 255, 118, 178, 155, 15, 119, 97,
457 253, 108, 217, 13, 108, 30, 32, 110, 65, 97, 236, 106, 211, 143, 126,
458 171, 246, 1, 128, 144, 94, 2, 34, 218, 111, 207, 204, 171, 173, 71,
459 254, 18, 10, 95, 153, 157, 159, 81, 213, 155, 85, 135, 235, 225, 63,
460 86, 248, 251, 200, 122, 183, 125, 211, 175, 114, 117, 123, 255, 189,
461 136, 27, 20, 17, 223, 253, 71, 252, 249, 252, 71, 136, 224, 107, 128,
462 0, 0, 0, 150, 65, 154, 160, 103, 2, 183, 155, 192, 2, 30, 233, 246,
463 202, 101, 232, 81, 96, 6, 23, 171, 227, 35, 60, 168, 192, 97, 173,
464 242, 16, 45, 158, 50, 28, 25, 69, 55, 252, 120, 20, 132, 8, 21, 142,
465 205, 13, 44, 241, 86, 124, 69, 1, 255, 195, 79, 4, 64, 146, 131, 55,
466 19, 127, 169, 215, 80, 133, 72, 63, 43, 248, 89, 211, 27, 228, 54,
467 241, 241, 101, 130, 206, 228, 63, 2, 91, 10, 81, 169, 196, 61, 158, 7,
468 173, 221, 243, 198, 221, 183, 176, 157, 148, 210, 216, 17, 231, 44,
469 238, 103, 142, 146, 55, 59, 207, 216, 6, 195, 155, 235, 255, 195, 229,
470 218, 230, 58, 172, 15, 235, 225, 226, 119, 8, 61, 26, 71, 76, 46, 38,
471 208, 241, 239, 35, 91, 243, 191, 114, 81, 252, 71, 136, 224, 107, 128,
472 0, 0, 0, 146, 65, 154, 192, 103, 2, 57, 252, 191, 38, 8, 65, 176, 49,
473 2, 48, 71, 128, 50, 95, 3, 134, 120, 190, 0, 91, 154, 22, 208, 170,
474 62, 168, 55, 210, 243, 213, 120, 173, 101, 255, 203, 224, 10, 170,
475 198, 65, 55, 94, 245, 36, 144, 195, 16, 66, 10, 165, 152, 197, 255,
476 254, 30, 132, 235, 254, 61, 255, 153, 78, 121, 252, 206, 112, 248,
477 140, 124, 100, 252, 18, 70, 83, 144, 208, 9, 201, 68, 206, 84, 41, 74,
478 131, 239, 61, 246, 246, 85, 140, 238, 176, 173, 10, 116, 47, 91, 59,
479 221, 229, 38, 2, 81, 207, 150, 254, 204, 37, 119, 134, 126, 234, 176,
480 36, 0, 152, 239, 204, 103, 56, 31, 207, 195, 217, 225, 132, 43, 125,
481 131, 113, 21, 95, 105, 244, 127, 63, 136, 239, 168, 26, 32, 0, 0, 0,
482 165, 65, 154, 224, 87, 6, 190, 83, 224, 1, 218, 159, 240, 88, 229, 55,
483 216, 34, 250, 115, 161, 158, 176, 131, 240, 70, 8, 2, 70, 128, 22,
484 152, 174, 215, 248, 182, 0, 77, 199, 110, 96, 224, 128, 230, 176, 137,
485 193, 41, 126, 176, 110, 4, 40, 32, 30, 48, 191, 26, 152, 174, 191,
486 141, 174, 131, 222, 28, 29, 32, 161, 127, 132, 252, 129, 120, 23, 78,
487 136, 254, 95, 243, 5, 62, 154, 124, 16, 7, 57, 56, 207, 33, 96, 75,
488 77, 245, 92, 66, 197, 106, 62, 205, 236, 165, 69, 11, 74, 150, 124,
489 183, 154, 214, 188, 220, 5, 187, 93, 128, 70, 9, 201, 147, 55, 217,
490 111, 41, 178, 140, 60, 158, 219, 165, 228, 240, 134, 139, 225, 188,
491 119, 199, 191, 82, 77, 130, 242, 147, 251, 250, 255, 184, 63, 211, 41,
492 199, 91, 7, 80, 239, 155, 27, 191, 103, 123, 1, 163, 240, 54, 192, 0,
493 0, 0, 145, 65, 155, 0, 87, 6, 135, 247, 228, 139, 46, 224, 3, 233, 94,
494 198, 82, 128, 75, 0, 17, 102, 68, 109, 63, 35, 64, 31, 4, 50, 0, 0, 3,
495 0, 128, 116, 240, 0, 16, 14, 252, 161, 15, 132, 37, 30, 97, 62, 2,
496 193, 135, 64, 2, 58, 253, 189, 155, 109, 134, 30, 184, 10, 8, 47, 18,
497 8, 153, 249, 190, 126, 49, 222, 87, 231, 204, 127, 52, 41, 244, 244,
498 195, 218, 120, 203, 201, 128, 1, 251, 68, 190, 119, 228, 51, 49, 204,
499 76, 136, 172, 67, 105, 158, 63, 161, 211, 215, 205, 12, 109, 182, 175,
500 148, 152, 3, 218, 62, 72, 2, 207, 88, 15, 200, 156, 60, 73, 54, 59,
501 76, 33, 74, 224, 206, 188, 122, 19, 127, 118, 250, 63, 5, 91, 152, 92,
502 119, 220, 8, 112, 0, 0, 0, 4, 104, 203, 140, 178
503 ];
504
505 var trafLength = 8 + tfdt.length + tfdt.length + trun.length;
506 var m4s = [
507 8 + mfhd.length + trafLength, // size
508 109, 111, 111, 102 // 'moof'
509 ]
510 .concat(mfhd)
511 .concat([
512 trafLength, // size
513 116, 114, 97, 102 // 'traf'
514 ].concat(tfhd).concat(tfdt).concat(trun))
515 .concat(mdat);
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
14 <link rel="stylesheet" href="css/main.css"> 14 <link rel="stylesheet" href="css/main.css">
15 15
16 <script src="js/vendor/modernizr-2.6.2.min.js"></script> 16 <script src="js/vendor/modernizr-2.6.2.min.js"></script>
17 <script src="min-m4s.js"></script>
17 </head> 18 </head>
18 <body> 19 <body>
19 <!--[if lt IE 7]> 20 <!--[if lt IE 7]>
...@@ -60,37 +61,36 @@ ...@@ -60,37 +61,36 @@
60 61
61 62
62 function closed() { 63 function closed() {
63 window.alert("MediaSource Closed."); 64 console.log("MediaSource Closed.");
64 }
65
66 function append(buffer, bytes) {
67 if ("append" in buffer) {
68 buffer.append(bytes);
69 } else if ("appendBuffer" in buffer) {
70 buffer.appendBuffer(bytes);
71 }
72 } 65 }
73 66
67 var done = false;
74 function loadFragment() { 68 function loadFragment() {
69 if (done) {
70 return;
71 }
75 console.log("LOAD FRAGMENT"); 72 console.log("LOAD FRAGMENT");
73 /*
76 var req = new XMLHttpRequest(); 74 var req = new XMLHttpRequest();
77 req.responseType = "arraybuffer"; 75 req.responseType = "arraybuffer";
78 req.open("GET", "./0.m4s", true); 76 req.open("GET", "../fixtures/dash/1-avc1.42c00d.m4s", true);
77 */
79 78
80 79
81 req.onload = function () { 80 //req.onload = function () {
82 console.log("FRAGMENT DONE LOADING"); 81 console.log("FRAGMENT DONE LOADING");
83 82
84 append(sourceBuffer, new Uint8Array(req.response)); 83 sourceBuffer.appendBuffer(new Uint8Array(m4s));
85 video.play(); 84 done = true;
86 }; 85 //};
87 86
87 /*
88 req.onerror = function () { 88 req.onerror = function () {
89 window.alert("Could not load fragment."); 89 window.alert("Could not load fragment.");
90 }; 90 };
91 91
92 req.send(); 92 req.send();
93 93 */
94 } 94 }
95 95
96 function loadInit() { 96 function loadInit() {
...@@ -98,12 +98,12 @@ ...@@ -98,12 +98,12 @@
98 console.log("LOAD INIT"); 98 console.log("LOAD INIT");
99 var req = new XMLHttpRequest(); 99 var req = new XMLHttpRequest();
100 req.responseType = "arraybuffer"; 100 req.responseType = "arraybuffer";
101 req.open("GET", "./Header.m4s", true); 101 req.open("GET", "../fixtures/dash/init.mp4", true);
102 102
103 req.onload = function () { 103 req.onload = function () {
104 console.log("INIT DONE LOADING"); 104 console.log("INIT DONE LOADING");
105 append(sourceBuffer, new Uint8Array(req.response)); 105 sourceBuffer.appendBuffer(new Uint8Array(req.response));
106 loadFragment(); 106 sourceBuffer.addEventListener('update', loadFragment);
107 }; 107 };
108 108
109 req.onerror = function () { 109 req.onerror = function () {
...@@ -117,8 +117,11 @@ ...@@ -117,8 +117,11 @@
117 function opened() { 117 function opened() {
118 118
119 console.log("OPENED"); 119 console.log("OPENED");
120 sourceBuffer = ms.addSourceBuffer('video/mp4;codecs="avc1.4D400D"'); 120 sourceBuffer = ms.addSourceBuffer('video/mp4;codecs="avc1.42c00d"');
121 121
122 sourceBuffer.addEventListener('updateend', console.log.bind(console));
123 sourceBuffer.addEventListener('updatestart', console.log.bind(console));
124 sourceBuffer.addEventListener('update', console.log.bind(console));
122 loadInit(); 125 loadInit();
123 } 126 }
124 127
...@@ -136,6 +139,9 @@ ...@@ -136,6 +139,9 @@
136 139
137 ms.addEventListener('sourceopen', opened, false); 140 ms.addEventListener('sourceopen', opened, false);
138 ms.addEventListener('sourceclose', closed, false); 141 ms.addEventListener('sourceclose', closed, false);
142
143 ms.addEventListener('update', console.log.bind(console));
144 ms.addEventListener('updateend', console.log.bind(console));
139 } 145 }
140 load(); 146 load();
141 </script> 147 </script>
......