CHDK_DE Vorschauversion  Trunk Rev. 5251
 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 0xfc1a5d1d
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_fc1a5d30:\n"
27 " movs r2, #0\n"
28 " add r1, sp, #4\n"
29 " ldr r0, [r4, #0xc]\n"
30 " blx sub_fc251c84\n" // j_ReceiveMessageQueue
31 " ldr r0, [sp, #4]\n"
32 " ldr r0, [r0]\n"
33 " cmp r0, #6\n"
34 " bhs loc_fc1a5de4\n"
35 " tbb [pc, r0]\n" // (jumptable r0 6 elements)
36 "branchtable_fc1a5d46:\n"
37 " .byte((loc_fc1a5d4c - branchtable_fc1a5d46) / 2)\n" // (case 0)
38 " .byte((loc_fc1a5d6a - branchtable_fc1a5d46) / 2)\n" // (case 1)
39 " .byte((loc_fc1a5d8c - branchtable_fc1a5d46) / 2)\n" // (case 2)
40 " .byte((loc_fc1a5d92 - branchtable_fc1a5d46) / 2)\n" // (case 3)
41 " .byte((loc_fc1a5db2 - branchtable_fc1a5d46) / 2)\n" // (case 4)
42 " .byte((loc_fc1a5dc4 - branchtable_fc1a5d46) / 2)\n" // (case 5)
43 ".align 1\n"
44 "loc_fc1a5d4c:\n"
45 " bl replace_apendstrm\n" // +
46 " ldr r0, [r5, #0x1c]\n"
47 " cbz r0, loc_fc1a5d56\n"
48 "loc_fc1a5d50:\n"
49 " bl sub_fc1a4618\n"
50 " b loc_fc1a5de4\n"
51 "loc_fc1a5d56:\n"
52 " ldr r0, [r4, #0x5c]\n"
53 " cbnz r0, loc_fc1a5d5e\n"
54 " bl sub_fc1a63c8\n"
55 "loc_fc1a5d5e:\n"
56 " bl sub_fc1a5b74_my\n" // ->
57 "loc_fc1a5d62:\n"
58 " cmp r0, #0\n"
59 " str r0, [r5, #0x1c]\n"
60 " bne loc_fc1a5d50\n"
61 " b loc_fc1a5de4\n"
62 "loc_fc1a5d6a:\n"
63 " bl sub_fc1a599a\n"
64 " str r0, [r5, #0x1c]\n"
65 " ldr r1, [r4, #0x5c]\n"
66 " cbnz r1, loc_fc1a5d82\n"
67 " lsls r0, r0, #0x1f\n"
68 " bne loc_fc1a5d7e\n"
69 " bl sub_fc1a582c\n"
70 " str r0, [r5, #0x1c]\n"
71 "loc_fc1a5d7e:\n"
72 " bl sub_fc1a63e6\n"
73 "loc_fc1a5d82:\n"
74 " ldr r0, [r5, #0x1c]\n"
75 " b loc_fc1a5dac\n"
76 "loc_fc1a5d86:\n"
77 " ldr r1, [r5, #0x30]\n"
78 " ldr r0, [r5, #0x44]\n"
79 " b loc_fc1a5dc0\n"
80 "loc_fc1a5d8c:\n"
81 " bl sub_fc1a6612\n"
82 " b loc_fc1a5d62\n"
83 "loc_fc1a5d92:\n"
84 " bl sub_fc1a63c8\n"
85 " bl sub_fc1a5632\n"
86 " cmp r0, #0\n"
87 " str r0, [r5, #0x1c]\n"
88 " bne loc_fc1a5d50\n"
89 " ldr r0, [r4, #0x6c]\n"
90 " cmp r0, #0\n"
91 " beq loc_fc1a5d86\n"
92 " bl sub_fc1a54d0\n"
93 " str r0, [r5, #0x1c]\n"
94 "loc_fc1a5dac:\n"
95 " cmp r0, #0\n"
96 " beq loc_fc1a5d86\n"
97 " b loc_fc1a5d50\n"
98 "loc_fc1a5db2:\n"
99 " bl sub_fc1a54d0\n"
100 " cmp r0, #0\n"
101 " str r0, [r5, #0x1c]\n"
102 " bne loc_fc1a5d50\n"
103 " ldr r1, [r5, #0x38]\n"
104 " ldr r0, [r5, #0x4c]\n"
105 "loc_fc1a5dc0:\n"
106 " blx r1\n"
107 " b loc_fc1a5de4\n"
108 "loc_fc1a5dc4:\n"
109 " bl sub_fc1a5efe\n"
110 " lsls r0, r0, #0x1f\n"
111 " beq loc_fc1a5dd0\n"
112 " movs r0, #1\n"
113 " b loc_fc1a5dd8\n"
114 "loc_fc1a5dd0:\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_fc1a5dd8:\n"
120 " str r0, [r5, #0x1c]\n"
121 " cbz r0, loc_fc1a5de4\n"
122 " mov.w r0, #0xa0000\n"
123 " bl sub_fc07b032\n" // HardwareDefect_FW
124 "loc_fc1a5de4:\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_fc251b84\n" // j_PostMessageQueueStrictly
132 " b loc_fc1a5d30\n"
133 ".ltorg\n"
134  );
135 }
void getchunkinfo ( int *  r0)

Definiert in Zeile 668 der Datei movie_rec.c.

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

Definiert in Zeile 683 der Datei movie_rec.c.

683  {
684  *(int*)0x10E20 = (int)sub_fc02167a_my | 1;
685 }