CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
movie_rec.c-Dateireferenz
+ Include-Abhängigkeitsdiagramm für movie_rec.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define BR_LOW_OFS   0x2c
 
#define BR_MID_OFS   0x30
 
#define BR_HI_OFS   0x28
 
#define MAX_VIDEO_BITRATE   41000
 
#define FW_SHORT_TIME_LIMIT   30
 
#define SHORT_TIME_LIMIT   300
 
#define LONG_TIME_LIMIT   (3*60*60)
 

Funktionen

void __attribute__ ((naked, noinline))
 *-------------------------------------------------------------------— Mehr ...
 
void getchunkinfo (int *r0)
 

Makro-Dokumentation

#define BR_HI_OFS   0x28

Definiert in Zeile 5 der Datei movie_rec.c.

#define BR_LOW_OFS   0x2c

Definiert in Zeile 3 der Datei movie_rec.c.

#define BR_MID_OFS   0x30

Definiert in Zeile 4 der Datei movie_rec.c.

#define FW_SHORT_TIME_LIMIT   30

Definiert in Zeile 10 der Datei movie_rec.c.

#define LONG_TIME_LIMIT   (3*60*60)

Definiert in Zeile 12 der Datei movie_rec.c.

#define MAX_VIDEO_BITRATE   41000

Definiert in Zeile 8 der Datei movie_rec.c.

#define SHORT_TIME_LIMIT   300

Definiert in Zeile 11 der Datei movie_rec.c.

Dokumentation der Funktionen

void __attribute__ ( (naked, noinline)  )

*-------------------------------------------------------------------—

!!

IS_ERROR( hSoundHandle )

IS_ERROR( RetCode )

IS_ERROR( RetCode )

IS_ERROR( RetCode )

IS_ERROR( RetCode )

"MOV R3, #0\n" "STR R3, [R9]\n"

TODO! below is from sd400

"MOV R3, #0\n" "STR R3, [R9]\n"

TODO! below is from sd400

__MovieRecorder_c__100

__MovieRecorder_c__100

Definiert in Zeile 16 der Datei movie_rec.c.

16  {
17  asm volatile (
18 // capdis -f=chdk -s=task_MovieRecord -c=191 -stubs PRIMARY.BIN 0xfc000000
19 // task_MovieRecord 0xfc100c55
20 " push.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr}\n"
21 " ldr.w sb, =0x0000af90\n"
22 " mov.w fp, #1\n"
23 " ldr.w sl, =0x0005cd30\n"
24 " mov.w r8, #0\n"
25 " add.w r5, sb, #0x100\n"
26 " sub.w r7, r5, #0x80\n"
27 " sub.w r6, r5, #0x180\n"
28 "loc_fc100c74:\n"
29 " movs r2, #0\n"
30 " add r1, sp, #4\n"
31 " ldr r0, [r6, #0x1c]\n"
32 " blx sub_fc314ce0\n" // j_ReceiveMessageQueue
33 " ldr r0, [sp, #4]\n"
34 " ldr r0, [r0]\n"
35 " cmp r0, #0xb\n"
36 " bhs loc_fc100ca4\n"
37 " tbb [pc, r0]\n" // (jumptable r0 11 elements)
38 "branchtable_fc100c8a:\n"
39 " .byte((loc_fc100c96 - branchtable_fc100c8a) / 2)\n" // (case 0)
40 " .byte((loc_fc100cbc - branchtable_fc100c8a) / 2)\n" // (case 1)
41 " .byte((loc_fc100e10 - branchtable_fc100c8a) / 2)\n" // (case 2)
42 " .byte((loc_fc100d22 - branchtable_fc100c8a) / 2)\n" // (case 3)
43 " .byte((loc_fc100d28 - branchtable_fc100c8a) / 2)\n" // (case 4)
44 " .byte((loc_fc100d80 - branchtable_fc100c8a) / 2)\n" // (case 5)
45 " .byte((loc_fc100dc6 - branchtable_fc100c8a) / 2)\n" // (case 6)
46 " .byte((loc_fc100e48 - branchtable_fc100c8a) / 2)\n" // (case 7)
47 " .byte((loc_fc100e40 - branchtable_fc100c8a) / 2)\n" // (case 8)
48 " .byte((loc_fc100da4 - branchtable_fc100c8a) / 2)\n" // (case 9)
49 " .byte((loc_fc100e0a - branchtable_fc100c8a) / 2)\n" // (case 10)
50 ".align 1\n"
51 "loc_fc100c96:\n"
52 " ldr r0, [r7, #0x78]\n"
53 " bl sub_fc389646\n"
54 " ldr r0, [r7, #0x74]\n"
55 " cbz r0, loc_fc100ca6\n"
56 "loc_fc100ca0:\n"
57 " bl sub_fc0fda98\n"
58 "loc_fc100ca4:\n"
59 " b loc_fc100e48\n"
60 "loc_fc100ca6:\n"
61 " ldr.w r0, [sb, #0x44]\n"
62 " cbnz r0, loc_fc100cb0\n"
63 " bl sub_fc0fda14\n"
64 "loc_fc100cb0:\n"
65 " bl sub_fc10099a_my\n" // ->
66 "loc_fc100cb4:\n"
67 " cmp r0, #0\n"
68 " str r0, [r7, #0x74]\n"
69 " bne loc_fc100ca0\n"
70 " b loc_fc100e48\n"
71 "loc_fc100cbc:\n"
72 " bl sub_fc1006a4\n"
73 " str r0, [r7, #0x74]\n"
74 " mov r4, sb\n"
75 " ldr.w r0, [sb, #0x44]\n"
76 " cbnz r0, loc_fc100d1a\n"
77 " ldrb r1, [r6]\n"
78 " add.w r0, sl, r1, lsl #2\n"
79 " ldr r0, [r0, #-0x4]\n"
80 " bl sub_fc255634\n" // return
81 " ldr r0, [r7, #0x74]\n"
82 " lsls r0, r0, #0x1f\n"
83 " bne loc_fc100ce4\n"
84 " bl sub_fc100470\n"
85 " str r0, [r7, #0x74]\n"
86 "loc_fc100ce4:\n"
87 " ldr r1, [r4, #0x48]\n"
88 " ldr r0, [r4, #0x50]\n"
89 " orrs r0, r1\n"
90 " bne loc_fc100d00\n"
91 " movs r4, #0\n"
92 " b loc_fc100cfa\n"
93 "loc_fc100cf0:\n"
94 " ldr.w r0, [sl, r4, lsl #2]\n"
95 " bl sub_fc10eafc\n"
96 " adds r4, r4, #1\n"
97 "loc_fc100cfa:\n"
98 " ldrb r0, [r6]\n"
99 " cmp r4, r0\n"
100 " blt loc_fc100cf0\n"
101 "loc_fc100d00:\n"
102 " ldr r1, =0x0000af90\n"
103 " movs r2, #1\n"
104 " movw r0, #0x274\n"
105 " subs r1, #0x80\n"
106 " bl _SetPropertyCase\n"
107 " movw r0, #0x314e\n"
108 " bl sub_fc0fdb2c\n"
109 " bl sub_fc0fda54\n"
110 "loc_fc100d1a:\n"
111 " ldr r0, [r7, #0x74]\n"
112 " cmp r0, #0\n"
113 " bne loc_fc100ca0\n"
114 " b loc_fc100d7a\n"
115 "loc_fc100d22:\n"
116 " bl sub_fc1003e6\n"
117 " b loc_fc100cb4\n"
118 "loc_fc100d28:\n"
119 " ldr r0, [r6, #0x50]\n"
120 " cmp r0, #6\n"
121 " beq loc_fc100d7a\n"
122 " ldr.w r0, [sb, #0x1c]\n"
123 " mov r4, sb\n"
124 " cbnz r0, loc_fc100d42\n"
125 " movs r1, #4\n"
126 " movs r0, #0\n"
127 " bl sub_fc131e30\n"
128 " str.w fp, [r4, #0x1c]\n"
129 "loc_fc100d42:\n"
130 " bl sub_fc0fda14\n"
131 " bl sub_fc10025c\n"
132 " str r0, [r7, #0x74]\n"
133 " cbz r0, loc_fc100d54\n"
134 "loc_fc100d4e:\n"
135 " bl sub_fc0fda98\n"
136 " b loc_fc100d7a\n"
137 "loc_fc100d54:\n"
138 " ldr r0, [r4, #0x5c]\n"
139 " cbnz r0, loc_fc100d6c\n"
140 " ldr r0, [r4, #0x6c]\n"
141 " cbz r0, loc_fc100d6c\n"
142 " bl sub_fc0ffbce\n"
143 " str r0, [r7, #0x74]\n"
144 " bl sub_fc10194c\n"
145 " ldr r0, [r7, #0x74]\n"
146 " cmp r0, #0\n"
147 " bne loc_fc100d4e\n"
148 "loc_fc100d6c:\n"
149 " ldrb r1, [r6]\n"
150 " add.w r0, sl, r1, lsl #2\n"
151 " ldr r0, [r0, #-0x4]\n"
152 " bl sub_fc255634\n" // return
153 "loc_fc100d7a:\n"
154 " ldr r1, [r5, #0xc]\n"
155 " ldr r0, [r5, #0x30]\n"
156 " b loc_fc100e3c\n"
157 "loc_fc100d80:\n"
158 " ldr r0, [r6, #0x50]\n"
159 " cmp r0, #6\n"
160 " beq loc_fc100d9e\n"
161 " bl sub_fc0ffbce\n"
162 " str r0, [r7, #0x74]\n"
163 " bl sub_fc10194c\n"
164 " ldr r0, [r7, #0x74]\n"
165 " cbz r0, loc_fc100d9a\n"
166 " bl sub_fc0fda98\n"
167 " b loc_fc100d9e\n"
168 "loc_fc100d9a:\n"
169 " str.w r8, [r6, #0x50]\n"
170 "loc_fc100d9e:\n"
171 " ldr r1, [r5, #0x18]\n"
172 " ldr r0, [r5, #0x38]\n"
173 " b loc_fc100e3c\n"
174 "loc_fc100da4:\n"
175 " bl sub_fc100fba\n"
176 " lsls r0, r0, #0x1f\n"
177 " beq loc_fc100db0\n"
178 " mov r0, fp\n"
179 " b loc_fc100db2\n"
180 "loc_fc100db0:\n"
181 " mov r0, r8\n"
182 "loc_fc100db2:\n"
183 " str r0, [r7, #0x74]\n"
184 " cbz r0, loc_fc100dbe\n"
185 " mov.w r0, #0xa0000\n"
186 " bl sub_fc37259e\n" // HardwareDefect_FW
187 "loc_fc100dbe:\n"
188 " ldr r0, [r6, #0x34]\n"
189 " blx sub_fc314d28\n" // -> GiveSemaphore
190 " b loc_fc100e48\n"
191 "loc_fc100dc6:\n"
192 " ldr r0, [r6, #0x50]\n"
193 " cmp r0, #6\n"
194 " bne loc_fc100dd8\n"
195 " ldr r1, [r5, #0x20]\n"
196 " cmp r1, #0\n"
197 " beq loc_fc100e48\n"
198 " ldr r0, [r5, #0x40]\n"
199 " blx r1\n"
200 " b loc_fc100e04\n"
201 "loc_fc100dd8:\n"
202 " bl sub_fc100040\n"
203 " str r0, [r7, #0x74]\n"
204 " cbnz r0, loc_fc100df8\n"
205 " ldr.w r0, [sb, #0x6c]\n"
206 " cbz r0, loc_fc100df0\n"
207 " bl sub_fc0ffbce\n"
208 " str r0, [r7, #0x74]\n"
209 " bl sub_fc10194c\n"
210 "loc_fc100df0:\n"
211 " str.w r8, [r6, #0x50]\n"
212 " ldr r0, [r7, #0x74]\n"
213 " cbz r0, loc_fc100e04\n"
214 "loc_fc100df8:\n"
215 " ldr r1, [r5, #0x20]\n"
216 " cbz r1, loc_fc100e00\n"
217 " ldr r0, [r5, #0x40]\n"
218 " blx r1\n"
219 "loc_fc100e00:\n"
220 " bl sub_fc0fda98\n"
221 "loc_fc100e04:\n"
222 " ldr r1, [r5, #0x1c]\n"
223 " ldr r0, [r5, #0x3c]\n"
224 " b loc_fc100e3c\n"
225 "loc_fc100e0a:\n"
226 " bl sub_fc0ff8fe\n"
227 " b loc_fc100cb4\n"
228 "loc_fc100e10:\n"
229 " movw r4, #0x2710\n"
230 " ldr r2, =0xfc0fde28\n" // **"MovieRecorder.c"
231 " ldr r0, [r6, #0x78]\n"
232 " movw r3, #0x1b84\n"
233 " mov r1, r4\n"
234 " blx sub_fc314c60\n" // j_TakeSemaphoreStrictly
235 " movs r0, #3\n"
236 " str r0, [r6, #0x6c]\n"
237 " ldr r2, =0xfc0fde28\n" // **"MovieRecorder.c"
238 " movw r3, #0x1b88\n"
239 " ldr r0, [r6, #0x74]\n"
240 " mov r1, r4\n"
241 " blx sub_fc314c60\n" // j_TakeSemaphoreStrictly
242 " str.w r8, [r7, #0x74]\n"
243 " ldr r1, [r5, #0x14]\n"
244 " ldr r0, [r5, #0x48]\n"
245 "loc_fc100e3c:\n"
246 " blx r1\n"
247 " b loc_fc100e48\n"
248 "loc_fc100e40:\n"
249 " bl sub_fc101b4c\n"
250 " str r0, [r7, #0x74]\n"
251 " b loc_fc100dbe\n"
252 "loc_fc100e48:\n"
253 " ldr r1, [sp, #4]\n"
254 " movw r3, #0x161b\n"
255 " movw r2, #0x2710\n"
256 " str.w r8, [r1]\n"
257 " str r3, [sp]\n"
258 " ldr r3, =0xfc0fde28\n" // **"MovieRecorder.c"
259 " ldr r0, [r6, #0x24]\n"
260 " blx sub_fc314b00\n" // j_PostMessageQueueStrictly
261 " b loc_fc100c74\n"
262 ".ltorg\n"
263  );
264 }
void getchunkinfo ( int *  r0)

Definiert in Zeile 1232 der Datei movie_rec.c.

1232  { // for each model, firmware struct needs to be verified
1233  int m;
1234  unsigned int lsum = 0;
1235  m = *r0; // num of chunks
1236  int *cl = (int*)(*(r0+1));
1237  while (m>0) {
1238  // chunk properties, 3 words: addr, size, unknown
1239  lsum += *(cl+1);
1240  cl+=3;
1241  m--;
1242  }
1243  bitrate_calc(lsum);
1244 }