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 0xfc142bc5
20 " push.w {r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip, lr}\n"
21 " ldr r4, =0x0000b228\n"
22 " movs r7, #0\n"
23 " ldr.w sb, =0x00058ef0\n"
24 " mov.w sl, #1\n"
25 " ldr.w r8, =0x0000b128\n"
26 " sub.w r5, r4, #0x80\n"
27 " sub.w r6, r4, #0x180\n"
28 " movw fp, #0x2710\n"
29 "loc_fc142be4:\n"
30 " movs r2, #0\n"
31 " add r1, sp, #4\n"
32 " ldr r0, [r6, #0x18]\n"
33 " blx sub_fc3022d4\n" // j_ReceiveMessageQueue
34 " ldr r0, [sp, #4]\n"
35 " ldr r0, [r0]\n"
36 " cmp r0, #0xb\n"
37 " bhs loc_fc142c14\n"
38 " tbb [pc, r0]\n" // (jumptable r0 11 elements)
39 "branchtable_fc142bfa:\n"
40 " .byte((loc_fc142c06 - branchtable_fc142bfa) / 2)\n" // (case 0)
41 " .byte((loc_fc142c2c - branchtable_fc142bfa) / 2)\n" // (case 1)
42 " .byte((loc_fc142d7c - branchtable_fc142bfa) / 2)\n" // (case 2)
43 " .byte((loc_fc142c92 - branchtable_fc142bfa) / 2)\n" // (case 3)
44 " .byte((loc_fc142c98 - branchtable_fc142bfa) / 2)\n" // (case 4)
45 " .byte((loc_fc142cf2 - branchtable_fc142bfa) / 2)\n" // (case 5)
46 " .byte((loc_fc142d36 - branchtable_fc142bfa) / 2)\n" // (case 6)
47 " .byte((loc_fc142d9c - branchtable_fc142bfa) / 2)\n" // (case 7)
48 " .byte((loc_fc142d94 - branchtable_fc142bfa) / 2)\n" // (case 8)
49 " .byte((loc_fc142d14 - branchtable_fc142bfa) / 2)\n" // (case 9)
50 " .byte((loc_fc142d76 - branchtable_fc142bfa) / 2)\n" // (case 10)
51 ".align 1\n"
52 "loc_fc142c06:\n"
53 " ldr r0, [r5, #0x60]\n"
54 " bl sub_fc37a5b6\n"
55 " ldr r0, [r5, #0x5c]\n"
56 " cbz r0, loc_fc142c16\n"
57 "loc_fc142c10:\n"
58 " bl sub_fc13fc3c\n"
59 "loc_fc142c14:\n"
60 " b loc_fc142d9c\n"
61 "loc_fc142c16:\n"
62 " ldr.w r0, [r8, #0x3c]\n"
63 " cbnz r0, loc_fc142c20\n"
64 " bl sub_fc13fbb8\n"
65 "loc_fc142c20:\n"
66 " bl sub_fc14293c_my\n" // <----------------
67 "loc_fc142c24:\n"
68 " cmp r0, #0\n"
69 " str r0, [r5, #0x5c]\n"
70 " bne loc_fc142c10\n"
71 " b loc_fc142d9c\n"
72 "loc_fc142c2c:\n"
73 " bl sub_fc142644\n"
74 " str r0, [r5, #0x5c]\n"
75 " ldr.w r0, [r8, #0x3c]\n"
76 " cbnz r0, loc_fc142c84\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_fc260d00\n"
81 " ldr r0, [r5, #0x5c]\n"
82 " lsls r0, r0, #0x1f\n"
83 " bne loc_fc142c52\n"
84 " bl sub_fc14241c\n"
85 " str r0, [r5, #0x5c]\n"
86 "loc_fc142c52:\n"
87 " movw r0, #0x314e\n"
88 " bl sub_fc13fcd4\n"
89 " b loc_fc142c86\n"
90 //*** constants skiped FC142C5C - FC142C83 ***
91 "loc_fc142c84:\n"
92 " b loc_fc142c8a\n"
93 "loc_fc142c86:\n"
94 " bl sub_fc13fbf8\n"
95 "loc_fc142c8a:\n"
96 " ldr r0, [r5, #0x5c]\n"
97 " cmp r0, #0\n"
98 " bne loc_fc142c10\n"
99 " b loc_fc142cec\n"
100 "loc_fc142c92:\n"
101 " bl sub_fc142368\n"
102 " b loc_fc142c24\n"
103 "loc_fc142c98:\n"
104 " ldr r0, [r6, #0x4c]\n"
105 " cmp r0, #6\n"
106 " beq loc_fc142cec\n"
107 " ldr.w r0, [r8, #0x14]\n"
108 " cbnz r0, loc_fc142cb0\n"
109 " movs r1, #4\n"
110 " movs r0, #0\n"
111 " bl sub_fc13b9d0\n"
112 " str.w sl, [r8, #0x14]\n"
113 "loc_fc142cb0:\n"
114 " bl sub_fc13fbb8\n"
115 " bl sub_fc14220c\n"
116 " str r0, [r5, #0x5c]\n"
117 " cbz r0, loc_fc142cc2\n"
118 "loc_fc142cbc:\n"
119 " bl sub_fc13fc3c\n"
120 " b loc_fc142cec\n"
121 "loc_fc142cc2:\n"
122 " ldr.w r0, [r8, #0x54]\n"
123 " mov r1, r8\n"
124 " cbnz r0, loc_fc142cde\n"
125 " ldr r0, [r1, #0x64]\n"
126 " cbz r0, loc_fc142cde\n"
127 " bl sub_fc141bae\n"
128 " str r0, [r5, #0x5c]\n"
129 " bl sub_fc14385a\n"
130 " ldr r0, [r5, #0x5c]\n"
131 " cmp r0, #0\n"
132 " bne loc_fc142cbc\n"
133 "loc_fc142cde:\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_fc260d00\n"
138 "loc_fc142cec:\n"
139 " ldr r0, [r4, #0x1c]\n"
140 " ldr r1, [r5, #0x78]\n"
141 " b loc_fc142d90\n"
142 "loc_fc142cf2:\n"
143 " ldr r0, [r6, #0x4c]\n"
144 " cmp r0, #6\n"
145 " beq loc_fc142d0e\n"
146 " bl sub_fc141bae\n"
147 " str r0, [r5, #0x5c]\n"
148 " bl sub_fc14385a\n"
149 " ldr r0, [r5, #0x5c]\n"
150 " cbz r0, loc_fc142d0c\n"
151 " bl sub_fc13fc3c\n"
152 " b loc_fc142d0e\n"
153 "loc_fc142d0c:\n"
154 " str r7, [r6, #0x4c]\n"
155 "loc_fc142d0e:\n"
156 " ldr r1, [r4, #4]\n"
157 " ldr r0, [r4, #0x24]\n"
158 " b loc_fc142d90\n"
159 "loc_fc142d14:\n"
160 " bl sub_fc142ef0\n"
161 " lsls r0, r0, #0x1f\n"
162 " beq loc_fc142d20\n"
163 " mov r0, sl\n"
164 " b loc_fc142d22\n"
165 "loc_fc142d20:\n"
166 " mov r0, r7\n"
167 "loc_fc142d22:\n"
168 " str r0, [r5, #0x5c]\n"
169 " cbz r0, loc_fc142d2e\n"
170 " mov.w r0, #0xa0000\n"
171 " bl sub_fc36dfe6\n" // HardwareDefect_FW
172 "loc_fc142d2e:\n"
173 " ldr r0, [r6, #0x30]\n"
174 " blx sub_fc302334\n" // -> GiveSemaphore
175 " b loc_fc142d9c\n"
176 "loc_fc142d36:\n"
177 " ldr r0, [r6, #0x4c]\n"
178 " cmp r0, #6\n"
179 " bne loc_fc142d46\n"
180 " ldr r1, [r4, #0xc]\n"
181 " cbz r1, loc_fc142d92\n"
182 " ldr r0, [r4, #0x2c]\n"
183 " blx r1\n"
184 " b loc_fc142d70\n"
185 "loc_fc142d46:\n"
186 " bl sub_fc141ffe\n"
187 " str r0, [r5, #0x5c]\n"
188 " cbnz r0, loc_fc142d64\n"
189 " ldr.w r0, [r8, #0x64]\n"
190 " cbz r0, loc_fc142d5e\n"
191 " bl sub_fc141bae\n"
192 " str r0, [r5, #0x5c]\n"
193 " bl sub_fc14385a\n"
194 "loc_fc142d5e:\n"
195 " str r7, [r6, #0x4c]\n"
196 " ldr r0, [r5, #0x5c]\n"
197 " cbz r0, loc_fc142d70\n"
198 "loc_fc142d64:\n"
199 " ldr r1, [r4, #0xc]\n"
200 " cbz r1, loc_fc142d6c\n"
201 " ldr r0, [r4, #0x2c]\n"
202 " blx r1\n"
203 "loc_fc142d6c:\n"
204 " bl sub_fc13fc3c\n"
205 "loc_fc142d70:\n"
206 " ldr r1, [r4, #8]\n"
207 " ldr r0, [r4, #0x28]\n"
208 " b loc_fc142d90\n"
209 "loc_fc142d76:\n"
210 " bl sub_fc1418d8\n"
211 " b loc_fc142c24\n"
212 "loc_fc142d7c:\n"
213 " movw r3, #0x1959\n"
214 " ldr r2, =0xfc13ffcc\n" // **"MovieRecorder.c"
215 " ldr r0, [r6, #0x74]\n"
216 " mov r1, fp\n"
217 " blx sub_fc3022bc\n" // j_TakeSemaphoreStrictly
218 " str r7, [r5, #0x5c]\n"
219 " ldr r1, [r4]\n"
220 " ldr r0, [r4, #0x34]\n"
221 "loc_fc142d90:\n"
222 " blx r1\n"
223 "loc_fc142d92:\n"
224 " b loc_fc142d9c\n"
225 "loc_fc142d94:\n"
226 " bl sub_fc1439ec\n"
227 " str r0, [r5, #0x5c]\n"
228 " b loc_fc142d2e\n"
229 "loc_fc142d9c:\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, =0xfc13ffcc\n" // **"MovieRecorder.c"
236 " ldr r0, [r6, #0x20]\n"
237 " blx sub_fc302134\n" // j_PostMessageQueueStrictly
238 " b loc_fc142be4\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 }