Kino Copyright (c) 2000, 2001, 2002 Arne Schirmacher <kino@schirmacher.de>, Dan Dennedy <dan@dennedy.org>, Charlie Yates <charles.yates@pandora.be> Changes in version 0.6.4: Changes by Dan Dennedy: - bugfix opening Quicktime DV without audio track - bugfix segfault on buffer underrun in dv1394 capture - bugfix resource leak on current scene highlight by making threads detached - bugfix error handling on disk run full in capture - pause playback in edit and trim when use scrub bar - AVI writing compatibility improvements - bugfix scene list not updating with playlist changes - bugfix MoreInfo and current scene highlight in the Trim page reflecting correct frame and file in some cases. - bugfix segfault on leaving Export/1394 or Export/DV File with background job. - remove Frame::ExtractBGR0() resulting in bugfix for recent libavcodec incompatibility. - expose more jogshuttle actions: undo, redo, split - add resampling on WAV input to FX/Audio/Transition/[Dub|Mix] - bugfix clipping on FX/Audio/Transition/Cross Fade Changes by Charlie Yates: - added two pass DV encoding Changes in version 0.6.3: Changes by Dan Dennedy: - added Quicktime support (--with-quicktime) - added export result status - added dv1394 support and refactored ieee1394io.cc - bugfix unlocked mutex in AVC::Timecode - added Help/Command Reference - implemented PlayList::GetFileNameOfFrame() and added display of filename during IEEE 1394 Export - bugfix AVI attempt to write negative size JUNK padding, as reported on type2 - bugfix to report user error if AVI is not fourcc dvsd - bugfix to report user error if file load failed due to permissions - make Jog/Shuttle use HID driver by default - added current clip filename to status bar in Edit, Trim, Timeline, and FX - bugfix xmlSaveFormat undefined compilation error - bugfix Export/MPEG/Scene Split - tweak AV/C handling to make more tolerant to transport status errors and to increase polling interval to be nicer. - added support for libavcodec for DV decoding YUV NTSC and PAL, and RGB for PAL only (--with-avcodec) - open raw DV files readonly - removed ExportMJPEG, ExportAudio, and PageMagick dependency on libdv and use AudioInfo instead. - Added AVC:Noop() and resolve bus reset issues due to changes - Added Frame::EncodeAudio() - Modify Page Export1394 re-encode audio to provide consistent audio bit depth - Added Preferences::dvExportPrerollSec with UI and used in Export1394 to allow user to configure preroll to allow receiving to sync. - Added Preferences::avcPollIntervalMs with UI and used in PageCapture to let users reduce AV/C activity level on their devices for more stability. - Added AVIFile::verifyStream, AVIFile::isOpenDML, and KinoCommon::showFrameMoreInfo - Added a expandable panel to show detailed frame and file information. - bugfix trim control not resizing - new trim control design - Added audio resample options to Export/1394 and Export/DV File - Added audio resampling to FX to fix mixed audio format projects - Changed AudioSwitch to a cross fade with spline controls - Changed some tool tips in Export for clarity - Added key handling in Timeline and FX. - Added scene highlighting and scrolling to scene strip. - Extened GtkEnhancedScale (trim contol) to render scene breaks. - Replaced use of Bar class plus hscale with new GtkEnhancedScale. Changes by Mads Bondo Dydensborg: - added Export/MPEG cleanup option to disable removing temp files if mplex fails. - added support for changing mappings for the jogshuttle in the preferences. Changes by Charlie Yates: - Audio sample calculations (requires new libdv CVS) - Special case treatment of audio only FX - Capture no longer delivers incomplete frames to preview - V4L has support for different channels - Diagnostics changed from cout to cerr where overlaps with smilutils legacy library exist - Added a 'no change' image transition to allow audio only transitions Changes in version 0.6: Changes by Charlie Yates: - Fixed memory consumption issues for .avi files - Enhanced fx preview (large with low quality option) - Modified playlist handling - dirty flag et al included - Added FX Housekeeping (removes old files on exit) - Fixed Trim editing and undo usage - Added preview deinterlace (yikes! ugly for XV but ok for GDK rendering) - Modified FX Frame selection (default is current Editor scene) - Improved Timeline functionality (fixes memory leak and cleans presentation) - Memory usage related to Frame objects tidy up - View 50%/100% rewrite - Relative file save preference - Directory usage review - Temporary fix to resolve PAL FX rendering issues - Reworked Capture - Playback optimisation in Edit and Trim -- added disk reader thread. - Integrated scene list with FX preview. Changes by Dan Dennedy: - cleanup: deploy new build system based upon autoconf-2.5 - cleanup: compilation fixes for gcc/g++ 3.1 and 3.2. - cleanup: standardize order of includes: config.h, C++ STL, system C, local - PageCapture: bugfix to enable capture buttons even with AV/C control disabled. - IEEE139Reader::ResetHandler: recover iso reception, fine-tuning. - KinoCommon: bugfix to not assert/segfault on missing pixmaps. - KinoCommon: warn user about missing pixmaps. - frame.cc: exclude all non-libdv data and code if have libdv. - ExportStills: bugfix to make frame number in filename 1-based. - AVIFile: bugfix dv2, get total frames from index counts on read, move idx1 to within first 1GB, do not add frames if no large index (OpenDML) and >1GB, add dmlh to dv2 if large index, add AVIX (extended RIFF) support for dv2, optimize padding for block alignment. - AVIFile: test compatibility with avifile and mplayer, test reading all frames from large AVIs created by Windows/VegasVideo. - FileHandler, PageCapture, ExportAVI: catch failure to create file and warn user. - ExportMJPEG: allow mplex field to be blank and if so, do not delete temp files, change name of temp mpeg file with .mpv extension. - Added many focus event handlers to prevent keystrokes from falling through to our custom key handler. - Added appending to history of gnome file entrys. - Disabled distracting frame borders in GUI. - Added View/FX menu item. - Help updates. - KinoMJPEGVideoPipe::OpenVideoPipe: bugfix framerate for NTSC that caused a/v sync error. - PageTrim: added a loop button and looping behavior. - PageTrim, PageEdit: added shuttle framerate feedback. - Frame: bugfix audio artifacts due to not always decoding headers, removed header_seen private var, and cleaned up rest of code to ensure ExtractHeader is called whenever an instance's data changes. Changes in version 0.51: Changes by Arne Schirmacher: - large AVI file support Changes by Charlie Yates: - added Join scenes function - added undo/redo - added file collecting during capture and playlist editing upon return to editor - bugfix: oss_close - minor fixes to v4l - MJPEG export page - Audio resampling for non 48khz compatible sound cards and mixed sample rate projects - Improved audio export page (now allows selection of sample rate) - Improved audio-less playback (closer to realtime - will probably need some refining) - Enhanced Stills export (allows selection of Every frame a la DV export) - Enhanced Audio export (wav via sox, mp2enc, lame or oggenc) - Enhanced Audio export (output cut on scenes) - More MPEG export (multiple deinterlace methods and scene splits) - Added some error detection in MPEG (sigpipe) - Added Magick page - Introduced Magick plugins - Fixed size images - Added advanced Magick Frame Overwrite functionality and sundry bug fixes and minor cosmetic changes Changes by Dan Dennedy: - applied Daniel Kobras' patch to PageEditor::showFrame to use Frame reference parameter instead of Frame object - added NTSC drop-frame handling to timecode display - added GUI menu/toolbar elements for Charlies additions - added MODULE_LICENSE to USB JogShuttle drivers - changed still file names to include only 8 digits in filename - added drag-n-drop support for files on Kino window - added Trim Page !! - bugfix: make all UI frame references consistently 1-based, required changes in Timeline, Export Stills, Export Audio, and Trim - added Preferences item for video1394 device - cleanup: remove video1394.[ch] - cleanup: remove capture_dialog - cleanup: remove progress_dialog - cleanup: remove unused functions, particularly callbacks - cleanup: remove hardcoded references to frame sizes - remove locks around libdv access and fix multi-threaded access to libdv, requires new version 0.9.5+ of libdv - revise Frame class for new version of libdv - add drag-n-drop support in storyboard to rearrange scenes - added Arne's new large file, OpenDML AVI support (currently beta2) - Add labels to buttons in Capture and Export pages, tooltips to Capture buttons - PageCapture: consolidate AV/C timecode and status transactions - PageCapture: new methods disableAVC() and enableAVC() stop/start AV/C status and timecode and disable/enable UI controls - added Preferences item to disable AV/C - clear timecode display when no AVC or no file loaded - IEEE1394Reader: only check validity of AV/C node id upon starting PageCapture or on bus reset, enhanced bus reset handler - move FileTracker:Add() calls from AVIFile to FileHandler subclasses - added Preferences items: dvCaptureBuffers, dvExportBuffers, dvDecoderAddNTSCSetup, dvDecoderClampLuma, dvDecoderClampChroma - implemented max file size handling in Preferences, PreferencesDialog, FileHandler, PageCapture, and PageExport. - Fix RIFFFile:GetFileSize to return off_t. - Added support for raw .dv file. - Changed Frame::ExtractAudio() to use libdv - added overloaded Frame::ExtractAudio() to get data in array of channels. - changed all audio access to use Frame::ExtractAudio. - added audioScrub preferences item and implemented in PageEditor and PageTrim. - added isOpenDML preferences item and UI to enable AVI LARGE_INDEX for large file support. - use libdv for Frame::GetRecordingDate and Frame::GetTimeCode. - applied patch from Mads Bondo Dydensborg to save movie in mjpegtools ELI format. - applied patch from Mads Bondo Dydensborg to make PlayList::AutoSplit also split on negative time differences. - added KinoCommon::setWindowTitle to place the document name in the window title. - added Preferences::defaultDirectory, KinoCommon::currentDirectory defaults to it, entry in Preferences dialog. - AutoSplit in Export AVI now splits on scene breaks. - use libdv in Frame::IsNewRecording(). - added methods AVIHandler::GetOpenDML and AVIHandler::SetOpenDML - cleanup deprecated use of KinoCommon->getConfig - Added Frame::SetRecordingDate and Frame::SetTimeCode based on new libdv functions. - Modified ExportAVI::doExport and PageMagick::StartRender to set recording date and timecode on frames. - PageTrim: bugfix multiple videos per seq. - KinoCommon: added packIt() method for Charlie's fixed size images preferences, and added calls to PageEditor::, PageCapture::, and PageTrim::start methods. - PageCapture: stop loading splash, which obscures video; add some more mutex locks; view50/100 and saveFrame use global frameBuffer instead of reader; fix toggle state of Record/Stop buttons. - AudioSwitch: fix A/B. - KinoCommon: added changeDirectory() to set process current directory upon loading or saving a SMIL. - ExportAVI: remove every entry (redundant now), add checkbox to update recording date and timecode. - Preferences: close memory leak on gnome_config strings. - Preferences, preferences_dialog, PageCapture, IEEE1394Reader:identify and persist AV/C device by GUID instead of node ID; enable ieee1394 interface and channel selections in preferences. - PageTrim: GUI start/end scene controls now go to in/out points instead of moving between scenes. Use storyboard or keyboard to move between scenes. Changes by Mads Bondo Dydensborg: - added --disable-debug option to configure.in - made KinoCommon::checkFile slightly more robust - removed some potential buffer overflows in the filename handling code - made bulkLoad save absolute paths for files - cleaned up export page, added common buttons and range controls Changes in version 0.50: near total rewrite. Changes in version 0.46: Changes by Arne Schirmacher: - avi.cc would not read in Windows generated type 2 avi files. The new code fixes this. Changes by Dan Dennedy: - reverted Preferences object instantiated to the old method: one object in Commands.cc and extern references everywhere else - bugfix: memory leak in navigator thread due to multiple new Preferences - bugfix: no default capture filename (defaults to untitled now) - bugfix: invalid reference*** WARNING **; Widget not found: capture_dialog_eject_button - bugfix: "soundcard doesn't support 1 channels" - bugfix: opening an AVI before opening capture breaks audio in capture - jogshuttle.cc: added a collection of navigation and edit commands to JogShuttle::button - shuttelpro.c: enabled all of the buttons for the top two rows. Buttons below shuttle ring still not implemented. - bugfix: ShuttlePro shuttle and jog not working - preferences.cc: changed some of the defaults for new config: autoSplit=true, frames=9999, dropFrame=ture, preview_capture=false, syt_offset=19000, displayQuality=2.0 - documented Preferences class - documented JogShuttle class - kino.dox: added jogshuttle.cc and jogshuttle.h - bugfix: corrupt DV/distorted frames during capture with audio enabled even if preview disabled during capture. Solution: delete capture FrameDisplayer if preview turned off. Apparantly, having the audio initialized in the libdv decoder causes some audio processing somewhere and can introduce overhead thereby causing dropped iso packets. - make new type 2 code able to read old type 2 and dvgrab 1.01- dv2 files - moved contents of README to NEWS and made a new README - removed unimplemented commands from man page - bugfix: configure.in and src/Makefile.am now include Xv linker lib only when it exists Changes in version 0.45, July 25-Aug 13, 2001: Changes by Dan Dennedy: - Second lowest dv decoder quality level is now monochrome with AC pass - bugfix: dv decoder quality preferences honored now in capture dialog - bugfix: Kino fails when opening preferences with ieee1394 not loaded - disable IEEE 1394 options when opening preferences with ieee1394 not loaded - bugfix: removed exit() points in preferences_dialog.cc - removed Preferences items that are not usable - bugfix: removed exit() point in ieee1394io.cc - bugfix: preferences do not always save - bugfix: GKD error upon exit when using X or Xv display methods - updated video1394.c with distribution, compatible with kernel 2.4.7. - added drop frame option to reduce choppiness of audio, still some choppiness on my AMD 333, which can not even decode audio alone fast enough - implemented File/New, subsequently opening a file crashes - bugfix: seconds hardcoded to 25 frames, should read from file - added clip timecode to info window (should this be playlist timecode?) - added Coutour ShuttlePro driver - added config/preferences item to enable dropFrame, defaults to false - bugfix: if audio disabled, still decoding audio incurring performance hit - added audio device preferences item: audioDevice - changed space-bar keyboard command to toggle play/pause - bugfix: clicking first, back, forward, or last while playing does not stop playback - added preferences items: enableJogShuttle, jogShuttleDevice - switched functionality between :w and :W - bugfix: toggling audio in preferences crashes Kino on next video update - removed record and eject buttons from capture dialog since they do nothing - remove Quicktime, raw, and test capture file formats since they are unsupported - added ResetBar command - implemented File/New, still need to clear window and display Kino logo !? (we need logo with splash screen) Changes by Daniel Kobras: - added man page - Debian package (pending) Changes by Tomoaki Hayasaka: - added JugShuttle class - added sonyjog.c USB device driver Changes by Arne Schirmacher: - fixes to compile with gcc 3.0 Changes in version 0.44, June 18, 2001: Changes by Arne Schirmacher: - XV now works again with latest libdv Changes by Stefan Lucke: - improvement to the IsPAL function Changes in version 0.43, June 10, 2001: Changes by Dan Dennedy: - expose cip_d for NTSC users in the prefs dialog as the timing threshold - include video1394.h in distribution - endian fix in riff.cc ?? (needs testing) - better AV/C handling of changing nodes - new Preferences option to disable preview during capture Changes by Arne Schirmacher: - fixes to IEEE1394Reader::AviHandler to be compatible with new versions of ohci1394 - bug fix for PAL DV export - prettier code Changes in version 0.42, June 1, 2001: Changes by Yamazaki Makoto: - fixed 50/60 flag in CIP headers in DV Export Changes by Dan Dennedy: - more accurate, concise FillBuffer algorithm (DV Export timing) - added a no_audio flag to the FrameDisplayer::Put() and commmands.cc:Play() so audio does not play at bogus times like during a repaint of part of the video window. - Update bar menu command displays bars immediately - re-enabled the progress bar update during dv export Changes in version 0.41, May 30, 2001: Changes by Dan Dennedy: - removed csr_rom, raw1394_util, simpleavc, and dvcont - added support for librom1394 and libavc1394 (http://sourceforge.net/projects/libavc1394/) - compatibile with new (v0.9x) and old (v0.7x-0.8x) versions of libraw1394 - exposed timing values for DV export through preferences dialog (requires custom, supplied video1394.c) - play audio through OSS, can be disabled in preferences - disable key repeat in Kino, restore system key repeat option outside Kino - repeat keyboard-driven navigation commands until key release (next/previous frame/second) - Stop button in main window works now - remembers current directory between subsequent file dialogs - saves preferences between sessions Changes in version 0.4b, Apr. 30, 2001: minor adaption to latest libdv release again Changes in version 0.4a, Apr. 07, 2001: minor adaption to latest libdv release Changes in version 0.4, Feb. 06, 2001: Merged in Dan's patches: Changes to the display routines: the user can now select the display mode in the options dialog. Changes in version 0.37, Feb. 04, 2001: Added the overview bar. The old statusbar information (current frame, filename etc.) is now displayed in its own window. When exporting movies, the progress dialog now opens before the export starts. Changes in version 0.36, Jan. 28, 2001: The controlling camcorder functions are now more stable. Added more error handling. Changes in version 0.35, Jan. 23, 2001: Several patches supplied by Kino users included: The code for controlling the camcorder has been improved. Export to a NTSC camcorder is now much more reliable. A single image frame can now be saved in several different formats, including jpg, gif, tif, ps and more. When selecting menu commands the corresponding keyboard sequence is displayed. More error checking code has been added. No need to use the patched libdv anymore, as the libdv programmers have added the proposed changes. Changes in version 0.34, Jan. 18, 2001: A function for saving a single frame as an image file has been added. (Can somebody please add JPEG code?) The Xv code now works for NTSC images too. Changes in version 0.33, Jan. 11, 2001: There is now support for exporting movies to a camcorder This is all very new and preliminary. Please refer to the README_DVOUT for more details. Non-Xv output has been optimized by about 20%. You need the included modified version of libdv though. Changes in version 0.32, Jan. 05, 2001: Support for the Xv extensions has been added. See the README_XV for details. Kino now uses a recent libdv, which is finally in real library form. The camcorder controls in the capture dialog work, if you have the dvcont program installed. Kino can now grab very long NTSC Type 2 AVI files without crashing. Changes in version 0.31, Dec. 31, 2000: A bug has been fixed that prevented loading AVI files with more than 4028 frames. A progress dialog for lengthy operations, such as saving, has been added. Plese check out the BUGS and TODO documents. Changes in version 0.3, Dec. 28, 2000: The dvgrab code has been integrated. There is now a Capture dialog where you can preview your camcorder recordings and save selected parts of it to an AVI file. Changes in version 0.21, Nov. 24, 2000: You can now open several AVI files at once by the command: kino *.avi The navigating inside the project is now much faster. A libdv bugfix has been included. Changes in version 0.2, Nov. 08, 2000: Added more commands including cut/copy/paste. Many keyboard commands are now duplicated in the menus. Changes in version 0.1, Nov. 01, 2000: This version has a basic set of menu and keyboard commands and one can actually do some useful work with it. Changes in version 0.01, Oct. 08, 2000: first version, only marginally better than xdvplay.