Shutter speed is set from a table, in scsDummyReadoutDone, first call right after NormalCapture; on 60D, the table is at 0xFF5B4DA8; it was first mentioned
here.
These numbers are plugged into a routine which prints something about VSizeSetting, and does some math, which transforms the time value in units for FPS timer B.
On 60D, that table looks like this:
raw_shutter printed_time time_ms fps_timer_B_units
16 32" => 32292 ms 2131 + 132*5004
17 32" => 30480 ms 5000 + 124*5004
18 32" => 27951 ms 3176 + 114*5004
19 25" => 25632 ms 655 + 105*5004
20 20" => 23505 ms 2069 + 96*5004
21 20" => 21555 ms 2110 + 88*5004
22 20" => 19767 ms 471 + 81*5004
23 20" => 18127 ms 1864 + 74*5004
24 16" => 16623 ms 1045 + 68*5004
25 16" => 15244 ms 2786 + 62*5004
26 16" => 13980 ms 1885 + 57*5004
27 12.5" => 12820 ms 3114 + 52*5004
28 10" => 11757 ms 1331 + 48*5004
29 10" => 10782 ms 1352 + 44*5004
30 10" => 9888 ms 3032 + 40*5004
31 10" => 9068 ms 1229 + 37*5004
32 8" => 8316 ms 819 + 34*5004
33 8" => 7626 ms 1680 + 31*5004
34 8" => 6994 ms 3729 + 28*5004
35 6" => 6414 ms 1844 + 26*5004
36 6" => 5883 ms 963 + 24*5004
37 5" => 5395 ms 963 + 22*5004
38 5" => 4948 ms 1803 + 20*5004
39 5" => 4538 ms 3401 + 18*5004
40 4" => 4162 ms 696 + 17*5004
41 4" => 3817 ms 3627 + 15*5004
42 4" => 3501 ms 2151 + 14*5004
43 3.2" => 3211 ms 1209 + 13*5004
44 3" => 2946 ms 778 + 12*5004
45 2.5" => 2702 ms 778 + 11*5004
46 2.5" => 2478 ms 1188 + 10*5004
47 2.5" => 2273 ms 1987 + 9*5004
48 2" => 2085 ms 3135 + 8*5004
49 2" => 1913 ms 4610 + 7*5004
50 2" => 1755 ms 1372 + 7*5004
51 1.6" => 1610 ms 3401 + 6*5004
52 1.5" => 1477 ms 676 + 6*5004
53 1.3" => 1355 ms 3176 + 5*5004
54 1.3" => 1243 ms 881 + 5*5004
55 1.3" => 1141 ms 3790 + 4*5004
56 1" => 1047 ms 1864 + 4*5004
57 1" => 961 ms 5102 + 3*5004
58 1" => 882 ms 3483 + 3*5004
59 0.8" => 809 ms 1987 + 3*5004
60 0.7" => 743 ms 635 + 3*5004
61 0.6" => 682 ms 4385 + 2*5004
62 0.6" => 626 ms 3237 + 2*5004
63 0.6" => 575 ms 2192 + 2*5004
64 0.5" => 528 ms 1229 + 2*5004
65 0.5" => 485 ms 5348 + 1*5004
66 0.5" => 445 ms 4528 + 1*5004
67 0.4" => 409 ms 3790 + 1*5004
68 0.3" => 376 ms 3114 + 1*5004
69 0.3" => 345 ms 2479 + 1*5004
70 1/3 => 317 ms 1905 + 1*5004
71 1/3 => 292 ms 1393 + 1*5004
72 1/4 => 268 ms 901 + 1*5004
73 1/4 => 247 ms 471 + 1*5004
74 1/4 => 227 ms 4651
75 1/5 => 209 ms 4282
76 1/6 => 192 ms 3934
77 1/6 => 177 ms 3627
78 1/6 => 163 ms 3340
79 1/6 => 150 ms 3073
80 1/8 => 138 ms 2827
81 1/8 => 128 ms 2622
82 1/8 => 118 ms 2418
83 1/10 => 109 ms 2233
84 1/10 => 100 ms 2049
85 1/13 => 93 ms 1905
86 1/13 => 86 ms 1762
87 1/13 => 79 ms 1618
88 1/15 => 73 ms 1495
89 1/15 => 68 ms 1393
90 1/15 => 63 ms 1290
91 1/20 => 59 ms 1209
92 1/20 => 54 ms 1106
93 1/25 => 51 ms 1045
94 1/27 => 47 ms 963
95 1/28 => 44 ms 901
96 1/30 => 41 ms 840
97 1/35 => 38 ms 778
98 1/38 => 36 ms 737
99 1/40 => 33 ms 676
100 1/45 => 31 ms 635
101 1/50 => 30 ms 614
102 1/55 => 28 ms 573
103 1/58 => 26 ms 532
104 1/60 => 25 ms 512
105 1/70 => 23 ms 471
106 1/80 => 22 ms 450
107 1/80 => 21 ms 430
108 1/90 => 20 ms 409
109 1/100 => 19 ms 389
110 1/110 => 18 ms 368
111 1/120 => 17 ms 348
112 1/125 => 17 ms 348
113 1/140 => 16 ms 327
114 1/150 => 15 ms 307
115 1/160 => 15 ms 307
116 1/180 => 14 ms 286
117 1/200 => 14 ms 286
118 1/215 => 13 ms 266
119 1/235 => 13 ms 266
120 1/250 => 13 ms 266
121 1/280 => 12 ms 245
122 1/300 => 12 ms 245
123 1/320 => 12 ms 245
124 1/350 => 11 ms 225
125 1/400 => 11 ms 225
126 1/430 => 11 ms 225
127 1/470 => 11 ms 225
128 1/500 => 10 ms 204
129 1/560 => 10 ms 204
130 1/600 => 10 ms 204
131 1/640 => 10 ms 204
132 1/750 => 10 ms 204
133 1/800 => 10 ms 204
134 1/850 => 10 ms 204
135 1/900 => 10 ms 204
136 1/1000 => 10 ms 204
137 1/1100 => 10 ms 204
138 1/1200 => 10 ms 204
139 1/1250 => 10 ms 204
140 1/1500 => 10 ms 204
141 1/1600 => 10 ms 204
142 1/1700 => 10 ms 204
143 1/1900 => 10 ms 204
144 1/2000 => 10 ms 204
145 1/2300 => 10 ms 204
146 1/2400 => 10 ms 204
147 1/2500 => 10 ms 204
148 1/3000 => 10 ms 204
149 1/3200 => 10 ms 204
150 1/3500 => 10 ms 204
151 1/3800 => 10 ms 204
152 1/4000 => 10 ms 204
153 1/4500 => 10 ms 204
154 1/4800 => 10 ms 204
155 1/5000 => 10 ms 204
156 1/6000 => 10 ms 204
157 1/6400 => 10 ms 204
158 1/7200 => 10 ms 204
159 1/7800 => 10 ms 204
160 1/8000 => 10 ms 204
These numbers are the exposure times for the very first image row (which is actually in the optical black border). The gradient effect was
already discussed (if you have trouble understanding it,
read this first), and the last number from this table should match the timer B setting before the final readout. On 5D2, the last number from the same table is 14ms = 224 timer B units, which is 0xdf + 1 and matches the previous results.
When comparing the exposure times from the table above, with the run times of the capture function (as posted by gcrook), keep in mind there are other delays in the process, not exactly known (the capture code is quite complex), and most cameras (except 500D and 1100D) use a dummy capture step (which adds a constant delay before the actual capture).
So, these exposure times are approximate and slightly larger than the actual exposure; the exact exposure time is done (or expected to be done) by mechanical shutter.
Reminder: these are some test results I'm looking for, to complete the timing analysis. The test script is not present in the pre-compiled builds, so it's for those of you who compiled ML yourselves.
take the two test images with this script, then get the ADTG screenshot by following these steps.