1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
// libFAME code
http://lists.debian.org/debian-user-spanish/2005/01/msg00380.html
// libYUV
http://veejay.dyne.org/trac.cgi/browser/trunk/veejay-current/
// YUV conversion code
http://cvlab.epfl.ch/~jpilet/videosource/frame_8cc-source.html
// libFAME yuv format specification
http://www.linuxmanpages.com/man3/fame_start_frame.3.php
// YUV420 format specification
http://encyclopedia.laborlawtalk.com/YUV_4:2:0
TODO:
- Show recordtime in client window.
- Clear / update taskbar.
- Permissions on sesrver file writing.
- Man pages!?
==========================================================================
TASKS (client)
==========================================================================
MessageBox:
[x] - Make it.
[x] - Make icons.
[x] - Test it.
SplashScreen:
[ ] - Make it.
Mainwindow:
[x] - Clean out mgui code.
[x] - Make generic gui layout code.
[x] - Make icons.
[x] - Make statusbar.
[x] - Make flashing record bar.
[ ] - Show network connection status in statusbar.
[ ] - Show camera connection status in statusbar.
[x] - Save movie messagebox (yes/no/dunno)
[x] - Create snapshot thumbnails from dv stream instead of the widget.
[x] - Make sure the same frame is shown in thumbnail as the one actually
shot on the server.
[ ] - Test it.
CPRQueryDialog:
[x] - Make it!
[x] - Clean out unnesessary code.
[x] - Make cancel posibility (return code 0 should do something useful)
[x] - Insert timer for network connection timeout.
[x] - Send connection status info to mainwindow.
[x] - Make icon (backspace)
[ ] - Test it.
Encoder:
[x] - Send savestate signal.
[x] - Make all data sent before deleting network object. (flush)
[x] - Remove ffmpeg code.
[x] - Make use of 2.6 kernel (through raw1394)
Decoder:
[ ] - Enable sound decoding for the network stream.
[x] - Remove ffmpeg code.
[x] - Make use of 2.6 kernel (through raw1394)
[x] - Set flags on frame objects.
Camera:
[x] - Add initialize method (constructor should do nothing).
[%] - Add getStatus methods. (implemented through error object)
Player:
[x] - Remove ffmpeg code.
[x] - Use libdv for dv decoding
==========================================================================
TASKS (server)
==========================================================================
ImgEncoder:
[x] - Make libjpeg calls work again.
MovEncoder:
[x] - Test Mpeg4. (no good)
[ ] - Remove ffmpeg code.
[ ] - Enable sound.
Main:
[ ] - Save movie signal handling.
[x] - Read server root folder from config.
[x] - Use correct filenames and paths.
[x] - Check for writabilty before trying to do any writing.
[x] - Create fallback, when unable to write the requested filename.
==========================================================================
TASKS (common)
==========================================================================
Makesystem:
[x] - "Port" to automake/autoconf
[x] - Make LibSDL detection in configure script
[x] - Make LibJpeg detection in configure script
[ ] - Make ffmpeg detection in configure script
[x] - Make server standalone compilable (through flag to configure)
[x] - Include pixmaps and tools in distdir.
[x] - Make pixmaps correctly intalled.
[x] - Make QT link correctly on fedora core 1
[x] - Make libJpeg link correctly on fedora core 1
[x] - Make configuration files installed in $(prefix)/etc/miav
MiavConfig:
[x] - Integrate file parser.
[x] - Use error object.
[ ] - Make code for input validity test.
[x] - Initialize one global configuration object.
ErrorObject:
[x] - Make it.
[x] - Maintain error string stack, instead of appending.
[x] - Make it thread safe.
[x] - Make pushError take any number parameters and parse them on to sprintf
[ ] - Make it a superclass.
[ ] - Create a textmode version subclass (for the server).
[ ] - Create a QT version subclass (callback to mainwindow with messagebox).
[ ] - Append to log, whenever error occur.
FFMpegWrapper:
[%] - Make it.(FFMPEG is on its way out of the project)
==========================================================================
SAVE THE MOVIE?
==========================================================================
When the stop button is clicked, a msg box pops up, "Save? [yes, no, dunno]"
network connection is no killed before this has been answered, and an empty
frame has been send to the server with the answer.
On the serverside, a variable describing wether the file is to be saved (SAVE),
deleted (DELETE), og scheduled for later descision (LATER).
It is initialized with LATER, in order to prevent errors due to a malfunction
leading to a disconnection.
If a flag is recieved, the state is overwritten.
If the state is SAVE, when the connection is terminated, the file is moved to
a folder containing permanent data store.
If the state is DELETE, the file is moved to a folder containing files scheduled
for deletion, when more space is needed (no files are removed at this point)
If the state is LATER, the file is moved to a folder containing files with this
purpose.
A cron job examines this folder regularly (test how often).
If a file has been here for more than a week, the administrator is contacted by
email.
==========================================================================
Semphores and mutexes in the client network architechture
==========================================================================
,-----------.
| DV stream |
`-----------'
|
V
,-----------.
| Decoder |
`-----------'
| \
V \
,-----------. \
| Player | \
`-----------' \
\ ,-----------.
->| Encoder |
`-----------'
|