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   35040
 
#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)
 
void replace_apendstrm ()
 

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   35040

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

ASM1989 -> In sx200:FF857190 //"Mounter.c"

ASM1989 -> In sx200:FF81B284 // DebugAssert

Definiert in Zeile 16 der Datei movie_rec.c.

16  {
17  asm volatile (
18 // capdis -f=chdk -s=task_MovieRecord -c=85 -stubs PRIMARY.BIN 0xfc000000
19 // task_MovieRecord 0xfc1a5d09
20 " push.w {r2, r3, r4, r5, r6, r7, r8, lr}\n"
21 " ldr r5, =0x00010b08\n"
22 " movs r6, #0\n"
23 " movw r7, #0xaea\n"
24 " movw r8, #0x2710\n"
25 " sub.w r4, r5, #0x80\n"
26 "loc_fc1a5d1c:\n"
27 " movs r2, #0\n"
28 " add r1, sp, #4\n"
29 " ldr r0, [r4, #0xc]\n"
30 " blx sub_fc251bfc\n" // j_ReceiveMessageQueue
31 " ldr r0, [sp, #4]\n"
32 " ldr r0, [r0]\n"
33 " cmp r0, #6\n"
34 " bhs loc_fc1a5dd0\n"
35 " tbb [pc, r0]\n" // (jumptable r0 6 elements)
36 "branchtable_fc1a5d32:\n"
37 " .byte((loc_fc1a5d38 - branchtable_fc1a5d32) / 2)\n" // (case 0)
38 " .byte((loc_fc1a5d56 - branchtable_fc1a5d32) / 2)\n" // (case 1)
39 " .byte((loc_fc1a5d78 - branchtable_fc1a5d32) / 2)\n" // (case 2)
40 " .byte((loc_fc1a5d7e - branchtable_fc1a5d32) / 2)\n" // (case 3)
41 " .byte((loc_fc1a5d9e - branchtable_fc1a5d32) / 2)\n" // (case 4)
42 " .byte((loc_fc1a5db0 - branchtable_fc1a5d32) / 2)\n" // (case 5)
43 ".align 1\n"
44 "loc_fc1a5d38:\n"
45 " bl replace_apendstrm\n" // +
46 " ldr r0, [r5, #0x1c]\n"
47 " cbz r0, loc_fc1a5d42\n"
48 "loc_fc1a5d3c:\n"
49 " bl sub_fc1a4618\n"
50 " b loc_fc1a5dd0\n"
51 "loc_fc1a5d42:\n"
52 " ldr r0, [r4, #0x5c]\n"
53 " cbnz r0, loc_fc1a5d4a\n"
54 " bl sub_fc1a63b4\n"
55 "loc_fc1a5d4a:\n"
56 " bl sub_fc1a5b6e_my\n" // ->
57 "loc_fc1a5d4e:\n"
58 " cmp r0, #0\n"
59 " str r0, [r5, #0x1c]\n"
60 " bne loc_fc1a5d3c\n"
61 " b loc_fc1a5dd0\n"
62 "loc_fc1a5d56:\n"
63 " bl sub_fc1a5996\n"
64 " str r0, [r5, #0x1c]\n"
65 " ldr r1, [r4, #0x5c]\n"
66 " cbnz r1, loc_fc1a5d6e\n"
67 " lsls r0, r0, #0x1f\n"
68 " bne loc_fc1a5d6a\n"
69 " bl sub_fc1a57e8\n"
70 " str r0, [r5, #0x1c]\n"
71 "loc_fc1a5d6a:\n"
72 " bl sub_fc1a63d2\n"
73 "loc_fc1a5d6e:\n"
74 " ldr r0, [r5, #0x1c]\n"
75 " b loc_fc1a5d98\n"
76 "loc_fc1a5d72:\n"
77 " ldr r1, [r5, #0x30]\n"
78 " ldr r0, [r5, #0x44]\n"
79 " b loc_fc1a5dac\n"
80 "loc_fc1a5d78:\n"
81 " bl sub_fc1a65fe\n"
82 " b loc_fc1a5d4e\n"
83 "loc_fc1a5d7e:\n"
84 " bl sub_fc1a63b4\n"
85 " bl sub_fc1a562e\n"
86 " cmp r0, #0\n"
87 " str r0, [r5, #0x1c]\n"
88 " bne loc_fc1a5d3c\n"
89 " ldr r0, [r4, #0x6c]\n"
90 " cmp r0, #0\n"
91 " beq loc_fc1a5d72\n"
92 " bl sub_fc1a54cc\n"
93 " str r0, [r5, #0x1c]\n"
94 "loc_fc1a5d98:\n"
95 " cmp r0, #0\n"
96 " beq loc_fc1a5d72\n"
97 " b loc_fc1a5d3c\n"
98 "loc_fc1a5d9e:\n"
99 " bl sub_fc1a54cc\n"
100 " cmp r0, #0\n"
101 " str r0, [r5, #0x1c]\n"
102 " bne loc_fc1a5d3c\n"
103 " ldr r1, [r5, #0x38]\n"
104 " ldr r0, [r5, #0x4c]\n"
105 "loc_fc1a5dac:\n"
106 " blx r1\n"
107 " b loc_fc1a5dd0\n"
108 "loc_fc1a5db0:\n"
109 " bl sub_fc1a5eea\n"
110 " lsls r0, r0, #0x1f\n"
111 " beq loc_fc1a5dbc\n"
112 " movs r0, #1\n"
113 " b loc_fc1a5dc4\n"
114 "loc_fc1a5dbc:\n"
115 " str r6, [r4, #0x34]\n"
116 " mov r0, r6\n"
117 " str r6, [r4, #0x5c]\n"
118 " str r6, [r4, #0x58]\n"
119 "loc_fc1a5dc4:\n"
120 " str r0, [r5, #0x1c]\n"
121 " cbz r0, loc_fc1a5dd0\n"
122 " mov.w r0, #0xa0000\n"
123 " bl sub_fc07b032\n" // HardwareDefect_FW
124 "loc_fc1a5dd0:\n"
125 " ldr r1, [sp, #4]\n"
126 " mov r2, r8\n"
127 " ldr r3, =0xfc1a4a18\n" // **"MovieRecorder.c"
128 " str r6, [r1]\n"
129 " str r7, [sp]\n"
130 " ldr r0, [r4, #0x14]\n"
131 " blx sub_fc251afc\n" // j_PostMessageQueueStrictly
132 " b loc_fc1a5d1c\n"
133 ".ltorg\n"
134  );
135 }
void getchunkinfo ( int *  r0)

Definiert in Zeile 666 der Datei movie_rec.c.

666  { // for each model, firmware struct needs to be verified
667  int m;
668  unsigned int lsum = 0;
669  m = *r0; // num of chunks
670  int *cl = (int*)(*(r0+1));
671  while (m>0) {
672  // chunk properties, 3 words: addr, size, unknown
673  lsum += *(cl+1);
674  cl+=3;
675  m--;
676  }
677  bitrate_calc(lsum);
678 }
void replace_apendstrm ( )

Definiert in Zeile 681 der Datei movie_rec.c.

681  {
682  *(int*)0x10E20 = (int)sub_fc02167a_my | 1;
683 }