// 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 Create mpgs with exclusive. Rewrite naming code! open64 ? Split files at some given (in config file) point? ========================================================================== TASKS (client) ========================================================================== MessageBox: [x] - Make it. [x] - Make icons. [x] - Test it. SplashScreen: [ ] - Make it. [ ] - Make setProgress method, with text. [ ] - Control it from mainwindow constructor. 1) Create / Show it in the beginning. 2) Call setProgress at key points in the code. 3) Hide / Destroy it at the end. 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. [x] - Show recordtime in client window. [ ] - Clear / update taskbar. [ ] - Make new messagebox when asking to save movie. (Save, Delete, Cancel, Save in one week) [x] - Make "clear" button in mainwindow, to remove last patient, before the next enters. [ ] - Realscale all window components. [ ] - Realscale all icons (use highresolution icons and scale them down) 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) [x] - Crash bug, when network connection is broken, during transfer. 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. [x] - Skip every second frame to save cpu (configurable) 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. [ ] - Save jpeg files in special cpr hierake 'encrypted'! [ ] - Make save method configurable in options file. MovEncoder: [x] - Test Mpeg4. (no good) [x] - Remove ffmpeg code. [ ] - Enable sound. [x] - Find good quality settings (Best quality less than 22mb/s realtime encoded) [x] - Multithread encoding, for multi cpu support. [ ] - libFame frames have no timecodes!!! [ ] - Files turning too big (>2gb) must automatically close and conitnue in another file. 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. [x] - Permissions on server file writing. Files: u+wr g+r a+x - Directories: u+wrx g+rx a+rx. [ ] - Permissions on server file writing to be read from config. [ ] - Open med create unique ========================================================================== TASKS (common) ========================================================================== Man pages: [ ] - Write man page for 'miav' 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 (removed) [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 [x] - Make it a superclass. [x] - Create a textmode version subclass (for the server). [x] - 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 | `-----------'