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 4 der Datei movie_rec.c.

#define BR_LOW_OFS   0x2c

Definiert in Zeile 2 der Datei movie_rec.c.

#define BR_MID_OFS   0x30

Definiert in Zeile 3 der Datei movie_rec.c.

#define FW_SHORT_TIME_LIMIT   30

Definiert in Zeile 9 der Datei movie_rec.c.

#define LONG_TIME_LIMIT   (3*60*60)

Definiert in Zeile 11 der Datei movie_rec.c.

#define MAX_VIDEO_BITRATE   41000

Definiert in Zeile 7 der Datei movie_rec.c.

#define SHORT_TIME_LIMIT   300

Definiert in Zeile 10 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 17 der Datei movie_rec.c.

17  {
18 asm volatile (
19 // task_MovieRecord 0xfc142ad5
20 " push.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr}\n"
21 " ldr r4, =0x0000b208\n"
22 " movs r7, #0\n"
23 " ldr.w sb, =0x00058ec0\n"
24 " mov.w sl, #1\n"
25 " ldr.w r8, =0x0000b108\n"
26 " sub.w r5, r4, #0x80\n"
27 " sub.w r6, r4, #0x180\n"
28 " movw fp, #0x2710\n"
29 "loc_fc142af4:\n"
30 " movs r2, #0\n"
31 " add r1, sp, #4\n"
32 " ldr r0, [r6, #0x18]\n"
33 " blx sub_fc3022b0\n" // j_ReceiveMessageQueue
34 " ldr r0, [sp, #4]\n"
35 " ldr r0, [r0]\n"
36 " cmp r0, #0xb\n"
37 " bhs loc_fc142b24\n"
38 " tbb [pc, r0]\n" // (jumptable r0 11 elements)
39 "branchtable_fc142b0a:\n"
40 " .byte((loc_fc142b16 - branchtable_fc142b0a) / 2)\n" // (case 0)
41 " .byte((loc_fc142b3c - branchtable_fc142b0a) / 2)\n" // (case 1)
42 " .byte((loc_fc142c8c - branchtable_fc142b0a) / 2)\n" // (case 2)
43 " .byte((loc_fc142ba2 - branchtable_fc142b0a) / 2)\n" // (case 3)
44 " .byte((loc_fc142ba8 - branchtable_fc142b0a) / 2)\n" // (case 4)
45 " .byte((loc_fc142c02 - branchtable_fc142b0a) / 2)\n" // (case 5)
46 " .byte((loc_fc142c46 - branchtable_fc142b0a) / 2)\n" // (case 6)
47 " .byte((loc_fc142cac - branchtable_fc142b0a) / 2)\n" // (case 7)
48 " .byte((loc_fc142ca4 - branchtable_fc142b0a) / 2)\n" // (case 8)
49 " .byte((loc_fc142c24 - branchtable_fc142b0a) / 2)\n" // (case 9)
50 " .byte((loc_fc142c86 - branchtable_fc142b0a) / 2)\n" // (case 10)
51 ".align 1\n"
52 "loc_fc142b16:\n"
53 " ldr r0, [r5, #0x60]\n"
54 " bl sub_fc37a246\n"
55 " ldr r0, [r5, #0x5c]\n"
56 " cbz r0, loc_fc142b26\n"
57 "loc_fc142b20:\n"
58 " bl sub_fc13fb4c\n"
59 "loc_fc142b24:\n"
60 " b loc_fc142cac\n"
61 "loc_fc142b26:\n"
62 " ldr.w r0, [r8, #0x3c]\n"
63 " cbnz r0, loc_fc142b30\n"
64 " bl sub_fc13fac8\n"
65 "loc_fc142b30:\n"
66 " bl sub_fc14284c_my\n" // <----------------
67 "loc_fc142b34:\n"
68 " cmp r0, #0\n"
69 " str r0, [r5, #0x5c]\n"
70 " bne loc_fc142b20\n"
71 " b loc_fc142cac\n"
72 "loc_fc142b3c:\n"
73 " bl sub_fc142554\n"
74 " str r0, [r5, #0x5c]\n"
75 " ldr.w r0, [r8, #0x3c]\n"
76 " cbnz r0, loc_fc142b94\n"
77 " ldr r1, [r6, #0x68]\n"
78 " add.w r0, sb, r1, lsl #2\n"
79 " ldr r0, [r0, #-0x4]\n"
80 " bl sub_fc260dfc\n"
81 " ldr r0, [r5, #0x5c]\n"
82 " lsls r0, r0, #0x1f\n"
83 " bne loc_fc142b62\n"
84 " bl sub_fc14232c\n"
85 " str r0, [r5, #0x5c]\n"
86 "loc_fc142b62:\n"
87 " movw r0, #0x314e\n"
88 " bl sub_fc13fbe4\n"
89 " b loc_fc142b96\n"
90 //*** constants skiped FC142B6C - FC142B93 ***
91 "loc_fc142b94:\n"
92 " b loc_fc142b9a\n"
93 "loc_fc142b96:\n"
94 " bl sub_fc13fb08\n"
95 "loc_fc142b9a:\n"
96 " ldr r0, [r5, #0x5c]\n"
97 " cmp r0, #0\n"
98 " bne loc_fc142b20\n"
99 " b loc_fc142bfc\n"
100 "loc_fc142ba2:\n"
101 " bl sub_fc142278\n"
102 " b loc_fc142b34\n"
103 "loc_fc142ba8:\n"
104 " ldr r0, [r6, #0x4c]\n"
105 " cmp r0, #6\n"
106 " beq loc_fc142bfc\n"
107 " ldr.w r0, [r8, #0x14]\n"
108 " cbnz r0, loc_fc142bc0\n"
109 " movs r1, #4\n"
110 " movs r0, #0\n"
111 " bl sub_fc13b8e0\n"
112 " str.w sl, [r8, #0x14]\n"
113 "loc_fc142bc0:\n"
114 " bl sub_fc13fac8\n"
115 " bl sub_fc14211c\n"
116 " str r0, [r5, #0x5c]\n"
117 " cbz r0, loc_fc142bd2\n"
118 "loc_fc142bcc:\n"
119 " bl sub_fc13fb4c\n"
120 " b loc_fc142bfc\n"
121 "loc_fc142bd2:\n"
122 " ldr.w r0, [r8, #0x54]\n"
123 " mov r1, r8\n"
124 " cbnz r0, loc_fc142bee\n"
125 " ldr r0, [r1, #0x64]\n"
126 " cbz r0, loc_fc142bee\n"
127 " bl sub_fc141abe\n"
128 " str r0, [r5, #0x5c]\n"
129 " bl sub_fc14376a\n"
130 " ldr r0, [r5, #0x5c]\n"
131 " cmp r0, #0\n"
132 " bne loc_fc142bcc\n"
133 "loc_fc142bee:\n"
134 " ldr r1, [r6, #0x68]\n"
135 " add.w r0, sb, r1, lsl #2\n"
136 " ldr r0, [r0, #-0x4]\n"
137 " bl sub_fc260dfc\n"
138 "loc_fc142bfc:\n"
139 " ldr r0, [r4, #0x1c]\n"
140 " ldr r1, [r5, #0x78]\n"
141 " b loc_fc142ca0\n"
142 "loc_fc142c02:\n"
143 " ldr r0, [r6, #0x4c]\n"
144 " cmp r0, #6\n"
145 " beq loc_fc142c1e\n"
146 " bl sub_fc141abe\n"
147 " str r0, [r5, #0x5c]\n"
148 " bl sub_fc14376a\n"
149 " ldr r0, [r5, #0x5c]\n"
150 " cbz r0, loc_fc142c1c\n"
151 " bl sub_fc13fb4c\n"
152 " b loc_fc142c1e\n"
153 "loc_fc142c1c:\n"
154 " str r7, [r6, #0x4c]\n"
155 "loc_fc142c1e:\n"
156 " ldr r1, [r4, #4]\n"
157 " ldr r0, [r4, #0x24]\n"
158 " b loc_fc142ca0\n"
159 "loc_fc142c24:\n"
160 " bl sub_fc142e00\n"
161 " lsls r0, r0, #0x1f\n"
162 " beq loc_fc142c30\n"
163 " mov r0, sl\n"
164 " b loc_fc142c32\n"
165 "loc_fc142c30:\n"
166 " mov r0, r7\n"
167 "loc_fc142c32:\n"
168 " str r0, [r5, #0x5c]\n"
169 " cbz r0, loc_fc142c3e\n"
170 " mov.w r0, #0xa0000\n"
171 " bl sub_fc1ee71a\n" // HardwareDefect_FW
172 "loc_fc142c3e:\n"
173 " ldr r0, [r6, #0x30]\n"
174 " blx sub_fc302310\n" // -> GiveSemaphore
175 " b loc_fc142cac\n"
176 "loc_fc142c46:\n"
177 " ldr r0, [r6, #0x4c]\n"
178 " cmp r0, #6\n"
179 " bne loc_fc142c56\n"
180 " ldr r1, [r4, #0xc]\n"
181 " cbz r1, loc_fc142ca2\n"
182 " ldr r0, [r4, #0x2c]\n"
183 " blx r1\n"
184 " b loc_fc142c80\n"
185 "loc_fc142c56:\n"
186 " bl sub_fc141f0e\n"
187 " str r0, [r5, #0x5c]\n"
188 " cbnz r0, loc_fc142c74\n"
189 " ldr.w r0, [r8, #0x64]\n"
190 " cbz r0, loc_fc142c6e\n"
191 " bl sub_fc141abe\n"
192 " str r0, [r5, #0x5c]\n"
193 " bl sub_fc14376a\n"
194 "loc_fc142c6e:\n"
195 " str r7, [r6, #0x4c]\n"
196 " ldr r0, [r5, #0x5c]\n"
197 " cbz r0, loc_fc142c80\n"
198 "loc_fc142c74:\n"
199 " ldr r1, [r4, #0xc]\n"
200 " cbz r1, loc_fc142c7c\n"
201 " ldr r0, [r4, #0x2c]\n"
202 " blx r1\n"
203 "loc_fc142c7c:\n"
204 " bl sub_fc13fb4c\n"
205 "loc_fc142c80:\n"
206 " ldr r1, [r4, #8]\n"
207 " ldr r0, [r4, #0x28]\n"
208 " b loc_fc142ca0\n"
209 "loc_fc142c86:\n"
210 " bl sub_fc1417e8\n"
211 " b loc_fc142b34\n"
212 "loc_fc142c8c:\n"
213 " movw r3, #0x1959\n"
214 " ldr r2, =0xfc13fedc\n" // **"MovieRecorder.c"
215 " ldr r0, [r6, #0x74]\n"
216 " mov r1, fp\n"
217 " blx sub_fc302298\n" // j_TakeSemaphoreStrictly
218 " str r7, [r5, #0x5c]\n"
219 " ldr r1, [r4]\n"
220 " ldr r0, [r4, #0x34]\n"
221 "loc_fc142ca0:\n"
222 " blx r1\n"
223 "loc_fc142ca2:\n"
224 " b loc_fc142cac\n"
225 "loc_fc142ca4:\n"
226 " bl sub_fc1438fc\n"
227 " str r0, [r5, #0x5c]\n"
228 " b loc_fc142c3e\n"
229 "loc_fc142cac:\n"
230 " ldr r1, [sp, #4]\n"
231 " movw r3, #0x13be\n"
232 " mov r2, fp\n"
233 " str r7, [r1]\n"
234 " str r3, [sp]\n"
235 " ldr r3, =0xfc13fedc\n" // **"MovieRecorder.c"
236 " ldr r0, [r6, #0x20]\n"
237 " blx sub_fc302110\n" // j_PostMessageQueueStrictly
238 " b loc_fc142af4\n"
239 );
240 }
void getchunkinfo ( int *  r0)

Definiert in Zeile 1441 der Datei movie_rec.c.

1441  { // for each model, firmware struct needs to be verified
1442  int m;
1443  unsigned int lsum = 0;
1444  m = *r0; // num of chunks
1445  int *cl = (int*)(*(r0+1));
1446  while (m>0) {
1447  // chunk properties, 3 words: addr, size, unknown
1448  lsum += *(cl+1);
1449  cl+=3;
1450  m--;
1451  }
1452  bitrate_calc(lsum);
1453 }