diff --git a/ChangeLog b/ChangeLog index 3b00797b6..e413e095a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,949 +1,964 @@ +17.07.0 +======= +Changes: + * Keep transcode until a replacement is implemented (BUG: 381131) + +Bugfixes: + * It doesn't need to warn if filesGreaterThan2Gb for new Linux system (BUG: + 380067) + * Fixed Rip fails to start when using clone mode and target exsists (BUG: + 379849) + * Added MediaType for GrowisofsHandler (BUG: 380064) + * Fixed unnecessary spaces to file names of tracks extracted from audio cd + (BUG: 380322) + * Set desktop file name explicitely (BUG: 380909) + 17.04.0 ======= Changes: * Deprecated transcode - tried to PR but unmaintained by upstream (BUG: 360170) Bugfixes: * Fixed compilation on newer ffmpeg/libav - test 57.56.100 (REVIEW: 122569) * Fixed invalid QUrl when burning iso - imageFilesize QUrl and QString filePath wrong convertion issue (BUG: 365089) * Fixed multisession issue - but *NO* Blu-Ray test environment (BUG: 367639) * Fixed crashed when adding a directory to a project - forget to check newName.isEmpty (BUG: 349160) * Fixed can't burn BD50 ISO image - seems not to be a usable image (BUG: 344392) * Fixed from2Byte *NO* checking nullptr issue (BUG: 328529) 2.1 ==== Changes: * Revamped project size indicator widget - it now fits better into a widget style * Using KDE Plasma's global progress bar replacing K3b's own progress OSD (205843) * Usability: reduced number of message boxes interrupting user actions (196604) * Moved configuration of devices and programs permissions from SystemSettings to K3b's own settings window (220040) Bugfixes: * Added dynamic hiding of irrelevant actions in mixed project (142954) * Added sorting in data project view (191660) * Improved performance of adding/removing large number of files to a data project (226029) * Fixed crashes when editing mixed project (266942, 265775) * Usability: Inform the user if the inserted medium is not suitable (259761) 2.0.3 ===== Bugfixes: * Missing "Extract Digital Audio with K3b" in device notifier for Audio CD medium (265819) * Clearing up track info in audio project when CDDB query failed * Improper track number in CDDB track edit window title (276681) * Crash on detecting writing speeds (272427) * Incorrect capacity returned by HL-DT-ST BH10LS30. Patch by Stephane Berthelot, thanks! (268307) * Compilation fails with new FFMPEG (274817) 2.0.2 ===== Changes: * Added K3B_ENABLE_HAL_SUPPORT option to the build configuration. It allows to disable any direct calls to HAL (253388) * Using Oxygen sounds for events (242395) Bugfixes: * Crash on start when checking device capabilities (246822) * Search paths on "Programs" options are not saved (248648) * Crash on generation of DVD previews in DVD ripping list (249941, 253639) * Crash on closing dialog after succesful audio CD ripping (241630) * Crash on device detection (249371) * Crash when showing settings window (238819) * Fixed playlist sort order (249395) * Show K3b also in "System" category in KDE launch menus (250749) * Crash when multiple instances start at the same time (253794) * Crash after track splitting (261188) * Inline editing of tracks in CD ripping view no longer works (250600) 2.0.1 ===== Bugfixes: * Freeze on ripping Audio CD using external encoder to MP3 or FLAC (236466) * Drag and drop from Dolphin doesn't work (242745) * Symbolic links are not added to a project when a folder is added recursively (243555) * Install app icons to hicolor so that they are visible in non KDE WMs (https://bugzilla.novell.com/show_bug.cgi?id=619731) * Translation fixes * Overburn doesn't work (241534) * Data part of mixed CD is not written - searching for previous session doesn't work (246798) * Fixed the speed comparision and formatting when cdrecord changes the writing speed automatically (246262, 243482) * Track pointer seg fault (247588) 2.0 === Changes (since 1.0.5): * Port to KDE Platform 4 * Always allow manual writing speed selection. * Use proper toolbars instead of the toolboxes -> nicer layouting with different styles * Merged CD and DVD copy dialogs * Merged CD and DVD image burning dialogs * Merged CD-RW erasing and DVD formatting dialogs * Merged Data CD and Data DVD projects into one plain data project with Blu-ray support * Merged eMovix CD and eMovix DVD projects * Removed CD copy option "prefere CD-Text". K3b will now ask individually (there is no need to do this if no mounting is involved.) * Allow importing of arbitrary sessions into a data project, thus continuing other than the last session. * "Clear" project" now only clears the added data but leaves the settings as they were (bug 147838) * Support files bigger than 4GB via mkisofs 2.01.01a32 and above * Do only reload the medium for verification if necessary (depends on the writer) * Support for Blu-ray writing * Support for DVD and Blu-ray writing via cdrecord * New audio ripping pattern %e which is replaced by the file extension * Better support for RTL languages 2.0-rc4 (1.93) ============== Changes: * Moved K3b Handbook to http://userbase.kde.org/K3b * Improved checking/unchecking items using Space key. Previously to do that the current item had to be in first column. Bugfixes: * Cannot choose between cdrecord when both cdrecord and wodim are installed (239861) * Crash when files have been removed right before burning the project (240398) * Crash when moving a file into a directory with Shift key pressed (239075) * Invalid parameter to cdrecord for non-integer burning speed (240310) * Crash when burning CD Audio project with tracks from another CD (240450) * Crash when turning off the drive (235743) * Crash when importing previous session (235734) * Various crashes during manipulation of eMovix project view * Hang before verification (156684) * Crash when "Waiting for medium" dialog is closed (232148) 2.0-rc3 (1.92) ============== Bugfixes: * In some cases medium doesn't get accepted for multisession burning (230742) * Data files in VCD ripping view are not listed * Show "Modify Permissions" button in System Problem Dialog only when it makes sense (230706) * Crash after "Cancel" was clicked while adding audio files to AudioCD project (231348) * Error window at the start when a place on the left pane is not accessible (230194) * Incorrect minimum size of welcome widget (231939) * Hangs while ripping AudioCD with data tracks (231174) * Crash when auto-removing non-existing files from a project before the burning (236005) * Empty Blu-ray medium not detected properly (236069) * eMovix project cannot be burned (236823) * M3U playlist not read properly (237654) * K3b overwrites iso ignoring user choice on dvd copy with option "only create image" checked (185251) * Compilation fails with FFmpeg version SVN-r23001 (236036) * Crash when waiting for reload the medium 2.0-rc2 (1.91) ============== Bugfixes: * Added missing translation files for libk3b, libk3bdevice and K3bSetup 2.0-rc1 (1.90) ============== Changes: * K3bSetup ported to KAuth framework Bugfixes: * Crash on start of Audio Ripping Dialog (226595) * Incorrect ordering of files added to Audio Project (224649) * Too wide Image Burn Dialog when file path was long (225735) * Crash when creating image files for AudioCD project (219500) * Crash when manipulating VCD project items (227855) * Mixed-up metadata in files created with external encoder (227927) * Cannot edit time values in "Split Audio Track" and "Edit Audio Track" dialogs (229042) * Empty Blu-ray medium not detected properly (227339, 229039) * Crash during splitting/editing audio tracks * Entry fields doesn't work in burn window when "Only Create Image" option is checked (220970) * Layout issues in settings window (227733) 2.0-beta1 (1.70) ================ Changes: * Added Blu-ray support * Added "Options" button to file browser toolbar with view options menu (e.g. "Show Hidden Files") (196992) * Image and project files can be opened directly from K3b file browser * Using Oxygen icons (many thanks for Oxygen Team!) Bugfixes: * Fixed visual glitch when panes are in "locked" state. Patch by Craig Drummond * Fixed hang up when "Create Image" option is checked (217301) * "Hide main window while writing" option is working again * "Show OSD progress" option is working again * Improved message when ISO with incorrect size is detected (216812) * Improved consistency: K3b now uses system-wide Positive/Neutral/Negative colors where possible instead of hard-coded green/yellow/red * Fixed incorrect default value "4gb." in "Custom Size" dialog (215539) * Fixed usability issues with project size menu: "Custom..." and "From Medium..." menu entries are non-checkable now (215539) * Show correct message at the end of CD-RW erasing (207972) * Fixed issue with too small configuration dialog for external encoder (218613) * Track number is now stored in ripped MP3 files when using lame (218614) * "Defaults" button in encoder configuration dialogs are working now * Fixed usability problems of audio project list * Fixed linking error on Windows * Fixed crash during verification process (219962) * Fixed crash in external encoder plug-in * Brought back SOX encoder configuration dialog * Fixed checking free space in temporary folder * Fixed videodvd:/ KIO slave * Fixed hang-up for mixed projects after reloading medium for verification * Converting audio tracks from audio project is working again * Fixed burning bootable discs * Custom widgets are now properly rendered for Right-to-Left languages * Progress bar in image writing dialog is shown again * Fixed crash while analysing invalid medium (223362) * Acquire lock also on storage interface. This prevents HAL from polling medium during burning which might disrupt burning process. * Fixed bug in external programs detection (221638) * Improved usability: don't show popups when clicking on DVD, VCD or audio discs. Added appriopriate actions on toolbars instead. * Fixed crash while analysing invalid medium (195436) 2.0-alpha4 (1.69) ================= Changes: * Added close buttons on project tabs (159751) * Added support for new libmpcdec API (214149) Bugfixes: * Crash at the beginning of burning (204333) * Crash during DVD ripping (207958) * Crash right after burn (195436) * Crash during Audio CD ripping (198015) * Crash at the beginning of ripping Audio CD with data tracks (186555) * Crash at the beginning of burning cue/bin image (190775) * Fixed various typos in UI (208401, 209512) * Fixed potential aliasing issues (210890) * Show only one entry on the task list even when dialog window is opened (211680) * Show correct size when project contains invalid links (212609) * Show correct elapsed time when burning over midnight (211604) * Added timeout when checking version number and features of executable (212582) * Fixed visually endless busy status when opening an empty folder (113649) * Burning double-layer DVDs should be possible again (214115) 1.0.5 ===== * Fix CD Copy device selection (Bug 151924) * Fixed HAL mounting (thanks to Ken Milmore) * Always wait for the drive to become ready before starting verification. 1.0.4 ===== * Never use growisofs parameter -dvd-compat with DVD-RW media in restricted overwrite mode * Unmount medium before DVD formatting * Silently (without introducing new strings for translation) allow the burning of files bigger than 4 GB with appropriate versions of genisoimage or mkisofs. * Do only reload the medium before verification if necessary, i.e. if the newly written track cannot be read otherwise (many old drives depend on this). Hopefully this will at least work around the aweful "DMA disabled" bug for many users. 1.0.3 ===== * Reverted to old behaviour of reloading medium before verification. Not enough testing had been done before introducing this and some systems fail to read the medium before reload (Bugs 147297, 147328, 147420, 147698). * Do not crash when the currently playing audio project item is removed (Bug 147548). * Added desktop actions to handle empty media with K3b. * Fixed read retry when reading data tracks (Bug 147778) * K3b's dialogs now honor the global button layout setting (Bug 147799) * Do not crash on mp3 files without tags if compiled with taglib support (Bug 142651) * Do not allow one to copy a rewritable media to itself. * Fixed crash on startup with devices that return bogus GET PERFORMANCE data (Bug 147676) 1.0.2 ===== * Properly determine the capacity of complete CD-R(W) media. * Mark a data project as modified if files are renamed. * Allow adding of all actions to the welcome window (Bug 145866) * Added "NoDisplay=true" property to k3b-cue.desktop and k3b-iso.desktop * Fixed supported write speed detection on some devices * No reload before verification and between writing sessions (CD copy + Mixed Mode CD) anymore 1.0.1 ===== * Fixed crash when using the Device menu without a selected device. * Fixed DVD copy when reading from a DVD+RW. * Fixed --without-alsa configure check * Fixed a crash in Video DVD ripping when the title does not contain an audio stream * Only use the mkisofs parameters -biblio, -copyright, and -abstract if they have been set. Using them with invalid values (empty) seems to result in broken iso images sometimes. 1.0 === * K3b now includes a VideoDVD kio slave. It can be used in Konqueror through the protocol videodvd:/ to copy the files from a VideoDVD with on-the-fly decryption if libdvdcss is installed. (Be aware that in some countries it is not permitted to use libdvdcss.) * New Device menu containing all the actions possible for a device (like eject, unmount, ...). This includes the possibility of assigning shortcuts to these kind of actions. * K3b now warns if user parameters for external programs have been specified. This has been introduced because there were some bug report that were caused by faulty user parameters. * Cleaned up all the job classes: No job creates a widget anymore. This allows for non-GUI usage of libk3b. For example in a kioslave. * New option in the data project to not cache the inodes. That means it is possible to have multiple actual copies of the same file on one CD/DVD. * K3b now tries to disable stuff that might influence the burning process. This includes the KDED module mediamanager, SuSEPlugger, and automounting (currently supported: subfs, supermount). * New Audio Track source editor dialog to cut audio track sources at the beginning and the end. * Splitted "read retries" and "ignore read errors" for data and audio sectors in cd copy and set new defaults for audio sectors which make more sense: 5 retires and skip unreadable sectors. * New Mediamanager which makes K3b always know which device contains which medium. This makes medium handling more smooth and the user now selects a medium instead of a device. Other advantages: - No waiting time anymore when asking for information on media (including for example Audio CD ripping). - Nice default image filenames. - CD Copy: Enable/disable options based on the source medium - Automatically select newly inserted media as burning medium * DCOP call directBurn() now returns a boolean value stating if the process could be started. * New DCOP calls cddaRip(), videocdrip(), and videodvdrip() with media:/ url support. * K3b can now handle media:/ urls from the command line to specify devices * Better Lame settings dialog. Easier to use for the novice user and better defaults. * Nicer Ogg Vorbis encoder settings dialog. * K3b now shows the DVD Medium ID in the disk information view. * K3b now displays a rough estimate on the remaining time for the current job. * New automatic media size mode for the projects. This means K3b uses the size from an inserted medium for the project maximum size. * Make a suggestion for the filename when saving a project based on the Volume ID (data projects) or the CD-Text title (Audio CD) * The Audio encoder plugins are now able to provide (very simplistic) user feedback in case of an error. * New settings "Swap byte order" and "Write Wave header" in the audio encoding plugin using external apps. This makes way for the usage of such programs as mppenc to encode Musepack files. In fact, mppenc is set up as a default along with flac if installed. * New DCOP interface: K3bJobInterface which provides DCOP signals for the currently running job. It may, for example, be used to provide information to a Karamba module. * New KFile plugin for K3b projects. For now it only shows the type of the project (Data DVD or Audio CD or ...) but may be extended to show arbitrary information. * K3b now chooses default image names based on the project name or the volumeid/cdtext title in case of CD/DVD copy. * The K3b Project DCOP Interface now uses the QString type for url parameters instead of KURL. * Save/load audio cd track sources in audio projects * Display a beautified volume id. For example: THE_TRANSPORTER -> The Transporter * Check if the image directory exists before starting to create a project image * Possibility to hide the OSD temporarily for one process. * Completely rewritten Video DVD ripping and transcoding support: - Simple on-the-fly transcoding of Video DVD titles - Interface similar to Audio CD ripping - Preview images in the ripping window - Automatic clipping - Simple resizing with automatic aspect ratio handling * File System presets for all data projects including all the advanced options. * Completely rewritten data project verification - K3b now compares the written image instead of the single files - Verification of Video DVD projects * Little GUI changes: - Changed the dialog layout in the action dialogs. - Simplified the layout of the burn dialogs for data projects (more advanced settings hidden) - Improved theme support (transparent themes) * Device buffer status display for DVD burning with growisofs >= 7.0 * Support for Audio CD ripping with libcdio instead of libcdparanoia * Support for Cdrkit, the Debian fork of cdrtools 0.12.17 ======= * Fixed saving/loading of the file view configuration. * Improved ffmpeg autoconf check. * More FreeBSD Compile fixes (thanks to Heiner Eichmann). * Fixed symbolic link handling in data projects (a bug introduced in 0.12.16) * Use UTF-8 encoding to store and load local CDDB entries. * Never use growisofs parameter -dvd-compat with DVD+RW media. * Fixed flac audio encoding for the audio project conversion feature. 0.12.16 ======= * FreeBSD Compile fixes (thanks to Heiner Eichmann). * Always force 44.1khz in the Lame MP3 encoder plugin. * Fixed VideoDVD creation on rewritable media. * NetBSD support (thanks to Mark Davies). * Fixed Copy of Enhanced Audio CDs with CD-Text * Changed default boot cataloge name from "boot.cataloge" to "boot.catalog" * Fixed a crash when reusing the same DVD Iso Image writing dialog. * Ignore case when comparing MD5 sums entered by the user. * Make sure that filenames in a data project's folder are unique. * Allow index statements bigger than 99 minutes in cue files. * Properly set the length of SCSI commands (this fixes some device detection problems). 0.12.15 ======= * Write more metadata tags in the default setup of the external encoder plugin. * Fixed on-the-fly Video DVD creation * Fixed data project verification in case filenames had to be shortened due to Joliet limitations. * Use -dvd-compat parameter to close DVDs in on-the-fly mode. * Fixed libdvdcss handling (again), no crashes anymore. * Fixed the "invalid url" bug. * Use SG IO for scsi commands with newer linux kernels. This should fix problems with scsi device detection. * Warn about shortened filenames due to Joliet restrictions before starting the burning process. 0.12.14 ======= * Make sure new projects are not already marked as modified. * Fixed (hopefully) the last bug related to Data project verification. 0.12.13 ======= * Honor umask when creating directories for Audio CD ripping. * Only update the buffer state for DVD burning if it really changes. * Fixed a crash in verification if the CD/DVD does not contain RR extensions. * Lowered default DVD writing buffer size to 32 MB to avoid "memorylock limit" problems as described on http://fy.chalmers.se/~appro/linux/DVD+RW/tools/ * Fixed loading of libdvdcss. 0.12.12 ======= * Fixed another bug in the iso options code which sometimes resulted in a failed verification. * Properly close the reading device when copying VideoDVDs. This bug resulted in a blocked device. * Fixed handling of filenames in libdvdcss backend (this fixes VideoDVD copy). 0.12.11 ======= * Fixed selection in the audio CD ripping window. * Fixed info block handling in WAVE audio file decoder: no more clicks at the end. * Introduced a hack which fixes the "Wav detected as Mpeg file" bug. * Fixed Auto multisession mode for DVD+RW and DVD-RW in restricted overwrite mode in case a previous session was imported. * Fixed a crash with HAL >= 0.5 when exiting K3b. * Allow copying of double layer DVDs with a size below 4.3 GB to single layer media. * Support for the ring buffer in growisofs 6.0. * Use .iso extension for images instead of .img * Properly remove the image file in case verification failed. * Ignore mounting state of a medium when showing its contents. * Fixed a bug in the iso options code which sometimes resulted in a failed verification. * Properly handle cue files withan image file name like image.bin.cue + image.bin * Write a proper Xing header when encoding VBR mp3 files. 0.12.10 ======= * Fixed Auto multisession mode in DVD projects * Fixed crash in dcop call directBurn in case no valid burner device was set. * Fixed verification of datacd projects when using the MaxIso9660 option without the OmitVersionNumber option 0.12.9 ====== * New project dcop calls: directBurn() - directly starts the burn process without user interaction setBurnDevice(QString) - set the burn device to be used * Disable the cd-text fields if cd-text writing is disabled. * New Alsa audio output plugin. * If a DVD project does not fill up the DVD completely do not close the DVD in automatic multisession mode. * Fixed problems with filenames ending in backslashes. * Fixed verification problems with localized characters. * Added error handling for incorrectly encoded filenames. * Automatically use a newly installed version of an external application at the next K3b start. * Complete new set of K3b action icons for project types and tools. Many thanks to Marcel Dierkes. * Show text on the burn button to make it catch the eye. * Support for media:// urls in the Image writing dialogs. * Fixed problems with files bigger than 2 GB on some systems. 0.12.8 ====== * Load index0 value in audio project. * Ignore case in cue files. * The "eject media" setting was not used properly in some situations (thanks to simon@munton.demon.co.uk for the patch) * Fixed a bug in the mp3 decoder which caused it to miss some perfectly valid mp3 files. 0.12.7 ====== * Fixed crash when refreshing the device list. * Fixed cancellation of adding files to a data project. * Fixed on-the-fly data project burning. * Backported a warning about following links to folders (K3b cannot do that after the link has been added to the project). 0.12.6 ====== * Copy XA Form1 tracks always in TAO writing mode. * Support for media:/ urls. * No extra whitespace when renaming audio files in a data project anymore. * Fixed verification of multisession CDs (thanks to simon@munton.demon.co.uk) * Preserve directory access time in data projects when using the "backup" option. * Disable the "audio normalization" option in case the normalize program is not installed. 0.12.5 ====== * Fixed the progressbar in the file view * It is possible to add the "New Data DVD Project" button to the welcome window again. * Fixed problems with unreadable items when using a non-standard color scheme * Properly set the permissions on cdrecord versions >= 2.01.01a02 * Fixed the "Disabled start button in Copy dialog" bug. * Little window layout fix in K3bSetup2. * Always use sector size 2048 when only creating an image in CD Copy. This means extracted iso images from CDs with non-Mode1 tracks are useable again. * Preserve directory permissions and user/group id in data projects when using the "backup" option. 0.12.4 ====== * Fixed --cdimage and --dvdimage parameters. * Fixed the file browser menu. Now it contains the bookmarks and "add to project" actions again. * Fixed Index 0 (Pregap) handling in audio cue files. * Improved handling of broken cue files: K3b now searches the directory for image files that could fit the cue file in case the FILE entry is bogus. * Always try to create a new session in case the old one has been imported regardless of the inserted medium's free space. * Fixed DVD-RW Restricted Overwrite media handling * Use RAW writing mode for audio CDs in case the writer does not support DAO but RAW. * Fixed compile problems with latest ffmpeg builds. 0.12.3 ====== * Ignore dock config from K3b versions older than 0.12 * Do not delete DVD project iso image if "remove image" is unchecked. * Properly load multisession default settings. * Update device selection boxes when devices are added or removed via HAL. * Properly cancel DVD project writing. * Fixed DVD+RW session import 0.12.2 ====== * After for example copying a CD when the dialog comes up again keep the last settings. * Default to incremental sequential writing mode when copying a DVD to a DVD-R. * Fixed a crash when the DVD copy dialog is reused. * Fixed inline editing in the audio CD view (without bigger changes this only works with a rather strange selection mode.) * Show the configured splash screen image instead of the default. * Fixed eMovix 0.9 default settings handling. * Import session: disable RockRidge if the previous session does not contain RR extensions. This fixes the problem with strange filenames if the new session is mounted via RR. * Fixed the --cdimage parameter. * Changed max copies from 99 to 999. * Improved session import dialog. * Properly default to DVD size in Video DVD project. * Fixed automatic multisession handling for DVD+RW media. * Fixed handbook installation. * Fixed HAL backend: devices are properly removed now. * Ignore K3b Themes that do not follow the new filename scheme. 0.12.1 Fixed compilation problems with older musepack library version. Fixed compile problem with older gcc versions. Enable verification checkbox for ISO9660 images in the CD writing dialog. Do not report success even if audio project conversion failed. 0.12 Added "Mpeg Still" support to Video-CD Project FreeBSD support (thanks to Adriaan De Groot) Support for all global CD-Text fields with cdrecord. Some GUI changes: cleaned up the action dialogs, moved the burnfree option to the global settings dialog since turning it off should be a very seldomly used task. Added support for multiple copies to the projects. Added missed VCD 3.0 track interpretation option for SVCD's New Lame encoding plugin providing a proper configuration dialog. Added Bookmarks to the file browser. Fixed window layering problem with windowmanagers != kwm Added KPart plugin which converts a list of audio files into one of the supported encoder formats. Allow disabling of CD-Text reading in cd-copy to overcome problems with CD-Text on some drives. Check CD-Text crc when copying Fixed incorrect PBC order, PBC now should work on all "standalone" DVD Players Fixed waittime bug for PBC infinite timeout. Import Audio Cue files into an audio project. It is now possible to open an iso image or an audio cue file just like a project file. Create cue files for an audio CD ripped into one single file Show writer buffer state in addition to fifo buffer when writing CDs. Show device buffer state for DVD writing (does not work always yet) Fixed read and save setting in Video CD project. Big parts of the audio project have been rewritten to have a way better design: - K3b now does not create additional silence between the tracks by default the pregap is treated as part of the previous track like in all other writing applications. - Instead it's possible to add additional silence manually to a track. - Allow multible sources for one track. - Split tracks, merge tracks. - Improved track dialog. K3b now always writes a logfile in $(KDEHOME)/share/apps/k3b/lastlog.log New device configuration format which solves all issues with removable devices like USB. Copy CSS encrypted DVDs if libdvdcss is installed. Libsndfile decoder plugin. This includes support for AIFF audio files. ffmpeg decoder plugin. This includes support for wma audio files. Musepack audio decoder plugin. Use DAO writing mode for data CDs when overwrite is enabled. Added option to load the last used settings in addition to the default user settings in every action dialog. Show system device name in case the string representing two devices are equal. Fixed the docking issues. No floating dock windows anymore. :) I have no idea why I wasn't able to do this before... it was so easy after all. Plugin based Audio Output system for Audio project "preview". Dropped id3lib in favor of TagLib (great work Scott :) When the speed for an on-the-fly audio project is set to "Auto" K3b now determines the max writing speed. Do not close dialogs after the action is done (for example cd copy) Directly copy Audio tracks from an Audio CD to an Audio project. Session management Made K3b a unique application only allowing one instance. Improved dcop interface for data projects which allows to add and remove items to and from specific folders in the project. Conditional audio ripping pattern. Now what does that mean? It means that you can do stuff like: "if the track has a genre encoded use it, otherwise use 'misc'" and stuff like that. New project plugin interface. Example: the audio project cddb plugin is now a project plugin MusicBrainz support (Query audio file tags over the internet) K3b now has a "smart" automatic multisession handling in Data projects. Replaced the system tray by an OSD inspired by the one in amaroK Better symlink handling with proper size information if "follow symlinks" is activated. HAL support (turn on your USB writer while K3b is running and see it getting detected automatically) eMovix 0.9.0 support 0.11.10 Support Mp3 files starting with multiple ID3 tags. Improved ~ handling in the QuickDirSelector. Save/Load composer fields in audio projects Save/Load default DVD Copy reading device 0.11.9 Fixed data project size calculation (for good this time). 0.11.8 K3b now searches for the Debian cdrecord wrapper script and properly selects the cdrecord version to use (cdrecord.mmap or cdrecord.shm) based on the kernel version. This should fix all problems with K3bSetup on Debian. Fixed writing speed parsing with patched cdrecord Add leading zero to tracknumber meta data field when encoding audio tracks. Fixed data project size calculation if files from different devices have the same inode number. It is now possible to enter hexadecimal values in the boot image load segment fields. Fixed external program encoder plugin (this includes lame and flac encoding) 0.11.7 Check size of returned CD-TEXT data to be a multiple of the pack length. This should fix problems with CD copy. Audio Project: Do not overwrite CD-Text values loaded from the project file with the ones detected. Added --copydvd command line parameter Do only read MCN and ISRCs when copying an audio cd since scanning them takes a very long time. Fixed cdrdao 1.1.8 version handling (no ATAPI warning) Fixed crash when using the Audiometadatarenamer on Movix Projects Automatically enable UDF extensions in case the project contains files bigger then 2 gb. 0.11.6 Fixed length calculation for long FLAC files. Allow Audio CDs that violate the Red Book standard (Tracks shorter than 4 seconds) Some improvements in disk-info retrieval 0.11.5 Do not ask for overwriting directories in cloning dialog Again fixed some disk detection problems which were introduced with the previous fixes :-( Fixed a crash which occured if the last boot image was displayed in the fileview while removing it. Support for ID3 Tags in FLAC files. Support for cdrdao 1.1.8. 0.11.4 Fixed adding of hidden files (wrong naming of config entries) Use a default imagefile name for cloning if none was specified. Use the Joliet names if no Rockridge is available in session import 0.11.3 fixed features detection with some devices. fixed multisession writing on some systems (K3b used to open the device instead of leaving it to mkisofs to prevent permission problems. Sadly this does not work with all systems since it seems that K3b does not close the device early enough so cdrecord cannot open it.) 0.11.2 K3bProcess now has a clean API and a non-stupid implementation which fixes the kde 3.2 issue way better than the hotfix from 0.11.1. Fixed a crash at K3b start which happened with ROM drives that return zero length modepage 0x05 data. fixed onthefly DVD copy issues K3b now uses the internal reader for DVD copy instead of readcd added read retries and "ignore read error" options to the dvd copy dialog fixed handling of empty raw toc data fixed the bug that made K3b try to use cdrdao for DVD iso image writing. add files to a project by dropping them on the corresponding tab removed the "query cddb" option from the copy dialog since this is configured globally anyway. fixed loading of VideoDVD projects Fixed VideoDVD project with a HACK. mkisofs is not able to create a VideoDVD using graft-points which is the default in K3b. So now K3b links all VIDEO_TS files in a temp directory. 0.11.1 fixed an issue introduced with KDE 3.2rc1 which caused on-the-fly data writing to fail all the time. (If you need to know: For some reason KProcess makes the Stdin fd O_NONBLOCK. This way mkisofs is not able to write properly to cdrecord's stdin anymore.) 0.11 fixed libcdparanoia-loading on Debian (and maybe some other systems) fixed crash at end of image creation in DVD project fixed filesize display for very large files and projects (integer overflow) fixed CD-TEXT reading. On some systems some senseless characters where appended. fixed Id3lib detection in configure.in.in added primitive supermount support kernel 2.5 compile fixes (thanks to ismail (cartman) d�mez ) K3b now defaults to the generic-mmc cdrdao driver if the used burner is not listed in cdrdao's driver table. As all modern drives use the generic-mmc driver anyway this is valid and prevents from a lot of newbie problems. Added a thememanager and the new crystal look by Everaldo K3b does not mount the disk for session import or data verification anymore. This way supermount users will have no problems. merged cue/bin and isoimage burning in one dialog which provides image-type-detection supported so far: iso, cue, cdrdao toc, cdrecord clone images better systemconfigcheck messages when cdrecord is not running with root privs proper automatic writing mode and writing app selection for non-DAO-capable writers overwriting of files in a new session default CD size is now 80 min generic resampling for all audio plugins support for mono files support for 8Bit wave files FLAC decoding plugin (thanks to John Steele Scott) check if a DVD-R(W) writer supports incremental streaming before trying multisession check if a DVD-R(W) writer supports testwriting before trying a simulation fixed DVD-Copy. We needed to determine the size of the data to copy for ourselves instead of relying on the kernel Automatic CD-writing speed selection (chooses always the max for now) Technical info about audiofiles in the audio project are displayed in the track properties dialog One may now add complete dirs to an audio project Detection of Justlink support Finally the device handling is completely independant. No calls to cdrecord anymore. That's why we now have a libk3bdevice. Improved writing speed estimation for audio tracks. Added a button which determines the supported writing speeds with the mounted media. this way it is possible to also select dvd writing speeds other than 1x fixed directory sorting in iso filesystems fixed boot image file sorting Joliet long support (103 chars joliet filenames) improved meta tag handling for audio encoding, support for album title and stuff fixed crash when only creating images without an installed cd writer writing speed is loaded correctly again Completely rewritten CD copy: - Copy Audio, multisession and Mixed mode CDs. - Copy CD-TEXT - Create CD-TEXT from Cddb entries - Audio reading with cdparanoia for high quality ripping - no cdrdao anymore Support for new growisofs option to specify the size of a written image in DAO mode Added check for free space in temp dir to dvd copy Added a script to simplify the start of K3bSetup2. 0.10 DVD writing support with the DVD+RW-tools by Andy Polyakov DVD formatting DVD Copy (pure data dvd copy without any video transcoding) CD Cloning with cdrtools >= 2.01a17 device capabilities detection without cdrecord. This solves the long startup problem with ATAPI devices. moved audio ripping pattern configuration from options dialog to audio ripping dialog option to automatically erase CD-RWs and DVD-RWs without asking before writing dragging files from a data project to the audio player (basically it's just a KURLDrag so it may be dragged everywhere) K3b is now divided in three libs and the main application: libk3bcore, libk3btools, and libk3bproject this makes creating KParts-plugins easy. Two examples can be found in the tests/kpartplugins dir one of them is a former K3b option which allowed to use audio meta data to rename files while adding them to a data project. Now this is done by a plugin and a much higher degree of user interaction. Iso9660 file sorting (mkisofs -sort) libid3 support for better mp3 tag access (we had that in some very old version but back then K3b depended on it. Now it defaults to using KFileMetaInfo if it's not available) Pluggable audio decoding Pluggable audio encoding and completely rewritten audio ripping much faster now due to a much better threading Check for read permission when adding files to a project file filter in binimagewritingdialog and isoimagewritingdialog (thanx to David Maciejak) Verification of written data (compares md5 sums of all written files). K3bSetup is not longer compiled unless explicit activated (K3bSetup is outdated and K3bSetup2 is still not ready) K3b now also compiles without aRts. In this case the audioplayer will be useless (but still there) no need for special mkisofs permissons anymore. K3b now openes the device itself when importing an old session. added a little color animation when dropping files onto a directory in data projects it is always hard to tell if one dropped on the correct dir. If some one has a better animation I would be interested in replacing this simple one. Added CD-TEXT reading (used for Audio CD ripping) sox encoder plugin to encode to all audio formats supported by sox (will anyone ever use this??) encoder plugin that let's you specify a commandline to encode the data. Typical example would be calling lame to encode to mp3. much better TOC reading. K3b now displays multisession info. m3u Playlist creation for ripped audio files replaced the old K3bSetup with a quite simple KControl Module which is only able to change the needed permission for devices and external programs. Everything else is nowadays done by the distros. 0.9 support for eMovix 0.8.0rc2 better data project size calculation 0.9pre2 support for writing CD-Text with cdrecord support for writing audio and mixed-mode CDs on-the-fly with cdrecord >= 2.01a13 no gui blocking when reloading the media while writing a two-session mixed-mode cd nodma option in eMovix project fixed problems with audio decoding (the process sometimes stalled) 0.9pre1 added system notification added eMovix project added bootable cd support (multible images) K3b now allows automatic writing mode selection to be sure to always use the best writing mode (DAO, TAO) the environment PATH is searched for external bins more error handling dropped KDE/QT 3.0.x compatibility, now K3b requires at least 3.1 internals: devices rewrite, use generic packet ioctl's cdinfo rewrite, use generic packet ioctl's merged cdrdaoparser and cdrdaowriter added multisession cd copy fixed onlyCreateImage (this time for real!) added option to hide main window while writing fixed temp-dir problems with nfs-mounted home directories K3b now uses the default kde tempdir Resmgr support added user datamode selection (mode1, mode2(form1)) support for relative paths in playlists (thanx to Nick Bloke) new progressdialog faster cddb access (older versions just queried all entries, now only the selected one gets queried) K3b is now threaded. Gui beautifying. Video CD: add playback control (PBC) add customizing of Gaps and Margins add HQ-VIDEOCD support add relaxed APS support (this controls whether APS constraints are strict or relaxed) add category restriction support add an option to create always an empty `/SEGMENT' directory (some Players need this) fixed load and saveUserDefaults fixed autodetection VCD Typ (now the user can turn off this feature) added audio volume normalization added udf support to data project user commands for external programs are separated by space now since the comma just made problems for options like "--driver generic-mmc" which had to be specified as "--driver, generic-mmc" support for newer versions of cdrecord which have a slighly changed user interface support for cuefile writing with cdrecord > 2.01a14 0.8.1 fixed compiling problems with kernel < 2.4.3 fixed onlyCreateImage in data project fixed handling of cdrecord burnfree/burnproof driveroption in versions < 1.10 fixed error with localized docking config that caused empty windows when changing the language introduced workaround for serious cdrdao bug that caused tocfiles to be deleted disabled the delete shortcut in the fileview (way too many users deleted files by accident when they wanted to remove project items) 0.8 advanced options: manually selection of writing app (cdrecord or cdrdao) changed the option dialog layout -> smaller window fixed problems with first pregap in audio project: no need to set the first pregap to 0 on some writers anymore no 4 second pregap before first tracks anymore fixed problems with detecting some audio tracks that had flags like preemp set removed cdparanoia dependancy (dynamic linking) big internal changes split bin/cue writing from iso-image-writing better cdcopy (mainly more options) customizeable audio ripping mixed mode cd creation video cd creation video cd on cd-i support better error handling indivdual selection of final size for encoded movie clean vob dir before start and restore it (i.e playing wiht PowerDVD stores config files in the directory) AC3-passthrough mode for DIVX Encoding DND for AudioCD-Ripping to harddisc. 0.7.5 Added session import little reordering of menus fixed the "cdrecord error 255" bug fixed some i18n issues improved mp3 file detection added K3b project mimetype added konqueror servicemenu entries now KoStore is used for saving documents K3bSetup is started with the correct language now MD5 sum is only calculated on demand (but still asynchronous) fixed K3bSetup linking problems 0.7.4 fixed bug that caused stupid mountpoints to be assigned to the devices Mounting dvd with UDF filesystem (uppercase words) should now work (copy ifo-files). beautified cddb setup internal cddb change (rewrite) fixed problems when writing mp3 and ogg vorbis files together burnproof support for cdrecord <= 1.11a02 works again (and also for the new cdrecord ;) Fix audiolanguange parsing for transcode 0.6.2 (wrong entries in k3bDVDRip.xml) Bugfix Selecting ripping dir with file dialog and new directory now shows the available space properly. Bugfix Cancel one pass in encoding now works If select "Add to project" in the context menu of the file/dir tree a dialog (audio/data) asks for creating a new data or audio project. 0.7.3 fixed compile problems with gcc 3.x 0.7.2 added md5sum to iso-image dialog fixed compile problem when ogg-vorbis is not installed fixed iso-image volume descriptor problem that caused all descriptors to be enclosed in quotation marks added raw-copy option better external program handling 0.7.1 audio: fixed mp3 resampling problems better handling of newly added tracks data: proper symlink handling better support of the mkisofs options option for adding hidden files backup permissions device: support for symlinks in fstab misc: progress display in the K3b titlebar better progress display in systray 0.7 DivX/XviD encoding enhanced cddb support new artwork from Ayo fixed some device detection problems fixed problems with long filenames and Joliet some gui enhancements added libmad to the sources removed id3lib 0.6pre2 added ogg-vorbis support added iso ids to diskInfo fixed iso project input fields 0.6pre1 well... I don't know.. everything? 0.5.1 fixed bug that caused a compile error on some systems fixed problems with audio cd writing disabled projects while writing (needed for writing in the background) 0.5.0 -fixed mkisofs 1.14 problems -audio on-the-fly burning (even corrupted mp3-files) -saving/loading of projects -atip and toc info -cd-ripping (wav) with extended pattern support -cddb support -play audio cds -extended option-dialog -hide first track on audio-cds -detection of ide-devices as cd-rom -blanking of cdrws -writing of existing iso-images -optional setting of cdrdao driver for every scsi-device -burn in the background (it's even possible to write on two writers simultaneous or write a cd and create an image (if your system is fast enough ;-)) -K3b checks for an empty disk before writing! -and like every time some other stuff i cannot remember ;-) 0.4.3 Fixed bug that caused K3b to crash while detecting devices highly improved adding of files and directories to a data project adding empty directories to data project via context menu disabled audio on-the-fly burning due to a problem that caused faulty cds 0.4.2 added new DirTree (code from Konqueror) added new device-management (the scsi-bus is checked directly) detection of Burn-Proof-capable drives some bugfixes 0.4.1 added whitespace-treatment dock-positions are saved 0.4.0 Added ISO-cd support file-tree creation via drag'n'drop renaming of files support of most of the mkisofs-features improved audiotrack dialog use of ID3Lib ... and other things i really cannot remember... ;-) diff --git a/libk3b/core/k3bdefaultexternalprograms.cpp b/libk3b/core/k3bdefaultexternalprograms.cpp index 95887a221..98e75456e 100644 --- a/libk3b/core/k3bdefaultexternalprograms.cpp +++ b/libk3b/core/k3bdefaultexternalprograms.cpp @@ -1,594 +1,595 @@ /* * * Copyright (C) 2003-2008 Sebastian Trueg * Copyright (C) 2010 Michal Malek * * This file is part of the K3b project. * Copyright (C) 1998-2008 Sebastian Trueg * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * See the file "COPYING" for the exact licensing terms. */ #include "k3bdefaultexternalprograms.h" #include "k3bexternalbinmanager.h" #include "k3bglobals.h" #include "k3bprocess.h" #include #include #include #include #include #include #include void K3b::addDefaultPrograms( K3b::ExternalBinManager* m ) { m->addProgram( new K3b::CdrecordProgram() ); m->addProgram( new K3b::MkisofsProgram() ); m->addProgram( new K3b::ReadcdProgram() ); m->addProgram( new K3b::CdrdaoProgram() ); m->addProgram( new K3b::GrowisofsProgram() ); m->addProgram( new K3b::DvdformatProgram() ); m->addProgram(new K3b::CdrskinProgram()); // m->addProgram( new K3b::DvdBooktypeProgram() ); } -// TODO: addFFmepgPrograms https://bugs.kde.org/show_bug.cgi?id=381131 +// TODO: addFFmpegPrograms +// https://bugs.kde.org/show_bug.cgi?id=381131 void K3b::addTranscodePrograms(K3b::ExternalBinManager* m) { static const char* const transcodeTools[] = {"transcode", 0, // K3b 1.0 only uses the transcode binary "tcprobe", "tccat", "tcscan", "tcextract", "tcdecode", 0}; for (int i = 0; transcodeTools[i]; ++i) m->addProgram(new K3b::TranscodeProgram(transcodeTools[i])); } void K3b::addVcdimagerPrograms( K3b::ExternalBinManager* m ) { // don't know if we need more vcdTools in the future (vcdxrip) static const char* const vcdTools[] = { "vcdxbuild", "vcdxminfo", "vcdxrip", 0 }; for( int i = 0; vcdTools[i]; ++i ) m->addProgram( new K3b::VcdbuilderProgram( vcdTools[i] ) ); } class K3b::AbstractCdrtoolsProgram::Private { public: Private( const QString& cdrkitAlternative ) : cdrkitAlt( cdrkitAlternative ) {} QString cdrkitAlt; }; K3b::AbstractCdrtoolsProgram::AbstractCdrtoolsProgram( const QString& program, const QString& cdrkitAlternative ) : SimpleExternalProgram( program ), d( new Private( cdrkitAlternative ) ) { } K3b::AbstractCdrtoolsProgram::~AbstractCdrtoolsProgram() { delete d; } bool K3b::AbstractCdrtoolsProgram::usingCdrkit( const ExternalBin& bin ) const { return QFileInfo( bin.path() ).baseName() == d->cdrkitAlt; } #ifndef Q_OS_WIN32 // // This is a hack for Debian based systems which use // a wrapper cdrecord script to call cdrecord.mmap or cdrecord.shm // depending on the kernel version. // For 2.0.x and 2.2.x kernels the shm version is used. In all // other cases it's the mmap version. // // But since it may be that someone manually installed cdrecord // replacing the wrapper we check if cdrecord is a script. // static QString& debianWeirdnessHack( QString& path ) { if( QFile::exists( path + ".mmap" ) ) { qDebug() << "checking for Debian cdrtools wrapper script."; if( QFileInfo( path ).size() < 1024 ) { qDebug() << "Debian Wrapper script size fits. Checking file."; QFile f( path ); f.open( QIODevice::ReadOnly ); QString s = QTextStream( &f ).readAll(); if( s.contains( "cdrecord.mmap" ) && s.contains( "cdrecord.shm" ) ) { qDebug() << "Found Debian Wrapper script."; QString ext; if( K3b::kernelVersion().versionString().left(3) > "2.2" ) ext = ".mmap"; else ext = ".shm"; qDebug() << "Using crtools" << ext; path += ext; } } } return path; } #endif QString K3b::AbstractCdrtoolsProgram::getProgramPath( const QString& dir ) const { QString cdrtoolsPath = ExternalProgram::buildProgramPath( dir, name() ); QString cdrkitPath = ExternalProgram::buildProgramPath( dir, d->cdrkitAlt ); QString path; if( QFile::exists( cdrtoolsPath ) && QFileInfo(K3b::resolveLink( cdrtoolsPath )).baseName() != d->cdrkitAlt ) { path = cdrtoolsPath; } else if( QFile::exists( cdrkitPath ) ) { path = cdrkitPath; } #ifndef Q_OS_WIN32 if ( !path.isEmpty() && name() == QLatin1String( "cdrecord" ) ) { debianWeirdnessHack( path ); } #endif return path; } QString K3b::AbstractCdrtoolsProgram::versionIdentifier( const ExternalBin& bin ) const { if( usingCdrkit( bin ) ) return d->cdrkitAlt; else return name(); } K3b::CdrecordProgram::CdrecordProgram() : K3b::AbstractCdrtoolsProgram( QLatin1String( "cdrecord" ), QLatin1String( "wodim" ) ) { } void K3b::CdrecordProgram::parseFeatures( const QString& output, ExternalBin& bin ) const { if( usingCdrkit( bin ) ) bin.addFeature( "wodim" ); if( bin.version().suffix().endsWith( "-dvd" ) ) { bin.addFeature( "dvd-patch" ); bin.setVersion( QString(bin.version().versionString()).remove("-dvd") ); } if( output.contains( "gracetime" ) ) bin.addFeature( "gracetime" ); if( output.contains( "-overburn" ) ) bin.addFeature( "overburn" ); if( output.contains( "-text" ) ) bin.addFeature( "cdtext" ); if( output.contains( "-clone" ) ) bin.addFeature( "clone" ); if( output.contains( "-tao" ) ) bin.addFeature( "tao" ); if( output.contains( "cuefile=" ) && ( usingCdrkit( bin ) || bin.version() > K3b::Version( 2, 1, -1, "a14") ) ) // cuefile handling was still buggy in a14 bin.addFeature( "cuefile" ); // new mode 2 options since cdrecord 2.01a12 // we use both checks here since the help was not updated in 2.01a12 yet (well, I // just double-checked and the help page is proper but there is no harm in having // two checks) // and the version check does not handle versions like 2.01-dvd properly if( output.contains( "-xamix" ) || bin.version() >= K3b::Version( 2, 1, -1, "a12" ) || usingCdrkit( bin ) ) bin.addFeature( "xamix" ); if( bin.version() < K3b::Version( 2, 0 ) && !usingCdrkit( bin ) ) bin.addFeature( "outdated" ); // FIXME: are these version correct? if( bin.version() >= K3b::Version("1.11a38") || usingCdrkit( bin ) ) bin.addFeature( "plain-atapi" ); if( bin.version() > K3b::Version("1.11a17") || usingCdrkit( bin ) ) bin.addFeature( "hacked-atapi" ); if( bin.version() >= K3b::Version( 2, 1, 1, "a02" ) || usingCdrkit( bin ) ) bin.addFeature( "short-track-raw" ); if( bin.version() >= K3b::Version( 2, 1, -1, "a13" ) || usingCdrkit( bin ) ) bin.addFeature( "audio-stdin" ); if( bin.version() >= K3b::Version( "1.11a02" ) || usingCdrkit( bin ) ) bin.addFeature( "burnfree" ); else bin.addFeature( "burnproof" ); if ( bin.version() >= K3b::Version( 2, 1, 1, "a29" ) && !usingCdrkit( bin ) ) bin.addFeature( "blu-ray" ); // FIXME: when did cdrecord introduce free dvd support? bin.addFeature( "dvd" ); } K3b::MkisofsProgram::MkisofsProgram() : K3b::AbstractCdrtoolsProgram( QLatin1String( "mkisofs" ), QLatin1String( "genisoimage" ) ) { } void K3b::MkisofsProgram::parseFeatures( const QString& output, ExternalBin& bin ) const { if( usingCdrkit( bin ) ) bin.addFeature( "genisoimage" ); if( output.contains( "-udf" ) ) bin.addFeature( "udf" ); if( output.contains( "-dvd-video" ) ) bin.addFeature( "dvd-video" ); if( output.contains( "-joliet-long" ) ) bin.addFeature( "joliet-long" ); if( output.contains( "-xa" ) ) bin.addFeature( "xa" ); if( output.contains( "-sectype" ) ) bin.addFeature( "sectype" ); if( bin.version() < K3b::Version( 1, 14) && !usingCdrkit( bin ) ) bin.addFeature( "outdated" ); if( bin.version() >= K3b::Version( 1, 15, -1, "a40" ) || usingCdrkit( bin ) ) bin.addFeature( "backslashed_filenames" ); if ( usingCdrkit( bin ) && bin.version() >= K3b::Version( 1, 1, 4 ) ) bin.addFeature( "no-4gb-limit" ); if ( !usingCdrkit( bin ) && bin.version() >= K3b::Version( 2, 1, 1, "a32" ) ) bin.addFeature( "no-4gb-limit" ); } K3b::ReadcdProgram::ReadcdProgram() : K3b::AbstractCdrtoolsProgram( QLatin1String( "readcd" ), QLatin1String( "readom" ) ) { } void K3b::ReadcdProgram::parseFeatures( const QString& output, ExternalBin& bin ) const { if( usingCdrkit( bin ) ) bin.addFeature( "readom" ); if( output.contains( "-clone" ) ) bin.addFeature( "clone" ); // FIXME: are these version correct? if( bin.version() >= K3b::Version("1.11a38") || usingCdrkit( bin ) ) bin.addFeature( "plain-atapi" ); if( bin.version() > K3b::Version("1.11a17") || usingCdrkit( bin ) ) bin.addFeature( "hacked-atapi" ); } K3b::Cdda2wavProgram::Cdda2wavProgram() : K3b::AbstractCdrtoolsProgram( QLatin1String( "cdda2wav" ), QLatin1String( "icedax" ) ) { } void K3b::Cdda2wavProgram::parseFeatures( const QString& output, ExternalBin& bin ) const { // features (we do this since the cdda2wav help says that the short // options will disappear soon) if( output.indexOf( "-info-only" ) ) bin.addFeature( "info-only" ); // otherwise use the -J option if( output.indexOf( "-no-infofile" ) ) bin.addFeature( "no-infofile" ); // otherwise use the -H option if( output.indexOf( "-gui" ) ) bin.addFeature( "gui" ); // otherwise use the -g option if( output.indexOf( "-bulk" ) ) bin.addFeature( "bulk" ); // otherwise use the -B option if( output.indexOf( "dev=" ) ) bin.addFeature( "dev" ); // otherwise use the -B option } K3b::CdrdaoProgram::CdrdaoProgram() : K3b::SimpleExternalProgram( "cdrdao" ) { } QString K3b::CdrdaoProgram::versionIdentifier( const ExternalBin& /*bin*/ ) const { return QLatin1String( "Cdrdao version" ); } bool K3b::CdrdaoProgram::scanFeatures( ExternalBin& bin ) const { // probe features KProcess fp; fp.setOutputChannelMode( KProcess::MergedChannels ); fp << bin.path() << "write" << "-h"; if( fp.execute() >= 0 ) { QByteArray out = fp.readAll(); if( out.contains( "--overburn" ) ) bin.addFeature( "overburn" ); if( out.contains( "--multi" ) ) bin.addFeature( "multisession" ); if( out.contains( "--buffer-under-run-protection" ) ) bin.addFeature( "disable-burnproof" ); // SuSE 9.0 ships with a patched cdrdao 1.1.7 which contains an updated libschily // Gentoo ships with a patched cdrdao 1.1.7 which contains scglib support if( bin.version() > K3b::Version( 1, 1, 7 ) || bin.version() == K3b::Version( 1, 1, 7, "-gentoo" ) || bin.version() == K3b::Version( 1, 1, 7, "-suse" ) ) { // bin.addFeature( "plain-atapi" ); bin.addFeature( "hacked-atapi" ); } if( bin.version() >= K3b::Version( 1, 1, 8 ) ) bin.addFeature( "plain-atapi" ); return SimpleExternalProgram::scanFeatures( bin ); } else { qDebug() << "could not start " << bin.path(); return false; } } K3b::TranscodeProgram::TranscodeProgram( const QString& transcodeProgram ) : K3b::SimpleExternalProgram( transcodeProgram ) { } QString K3b::TranscodeProgram::versionIdentifier( const ExternalBin& /*bin*/ ) const { return QLatin1String( "transcode v" ); } bool K3b::TranscodeProgram::scanFeatures( ExternalBin& bin ) const { // // Check features // QString modInfoBin = buildProgramPath( QFileInfo( bin.path() ).absolutePath(), QLatin1String( "tcmodinfo" ) ); Process modp; modp.setOutputChannelMode( KProcess::MergedChannels ); modp << modInfoBin << "-p"; if( !modp.execute() ) { QString modPath = QString::fromLocal8Bit( modp.readAll() ).simplified(); QDir modDir( modPath ); if( !modDir.entryList( QStringList() << "*export_xvid*", QDir::Files ).isEmpty() ) bin.addFeature( "xvid" ); if( !modDir.entryList( QStringList() << "*export_lame*", QDir::Files ).isEmpty() ) bin.addFeature( "lame" ); if( !modDir.entryList( QStringList() << "*export_ffmpeg*", QDir::Files ).isEmpty() ) bin.addFeature( "ffmpeg" ); if( !modDir.entryList( QStringList() << "*export_ac3*", QDir::Files ).isEmpty() ) bin.addFeature( "ac3" ); return true; } else { qDebug() << "Failed to start" << modp.program(); return false; } } K3b::VcdbuilderProgram::VcdbuilderProgram( const QString& p ) : K3b::SimpleExternalProgram( p ) { } QString K3b::VcdbuilderProgram::versionIdentifier( const ExternalBin& /*bin*/ ) const { return QLatin1String( "GNU VCDImager" ); } K3b::NormalizeProgram::NormalizeProgram() : K3b::SimpleExternalProgram( "normalize" ) { } K3b::GrowisofsProgram::GrowisofsProgram() : K3b::SimpleExternalProgram( "growisofs" ) { } bool K3b::GrowisofsProgram::scanFeatures( ExternalBin& bin ) const { // fixed Copyright: bin.setCopyright( "Andy Polyakov " ); if ( bin.version() >= K3b::Version( 5, 20 ) ) bin.addFeature( "dual-layer" ); if ( bin.version() > K3b::Version( 5, 17 ) ) bin.addFeature( "tracksize" ); if ( bin.version() >= K3b::Version( 5, 15 ) ) bin.addFeature( "daosize" ); if ( bin.version() >= K3b::Version( 6, 0 ) ) bin.addFeature( "buffer" ); if ( bin.version() >= K3b::Version( 7, 0 ) ) bin.addFeature( "blu-ray" ); return SimpleExternalProgram::scanFeatures( bin ); } K3b::DvdformatProgram::DvdformatProgram() : K3b::SimpleExternalProgram( "dvd+rw-format" ) { } K3b::Version K3b::DvdformatProgram::parseVersion( const QString& output, const ExternalBin& /*bin*/ ) const { QString version; // extract fields QStringList outputList = output.split( ' ' ); for (int i = 0; i < outputList.size(); ++i) { if ( outputList.at( i ) == "version" ) { // extract version number version = outputList.at( i + 1 ); // remove dot and spaces found at the end of the version version = version.left( version.size() - 3 ); return version; } } return Version(); } QString K3b::DvdformatProgram::parseCopyright( const QString& output, const ExternalBin& /*bin*/ ) const { QString copyright = "Andy Polyakov "; // extract fields QStringList outputList = output.split( ' ' ); for (int i = 0; i < outputList.size(); ++i) { if ( outputList.at( i ) == "by" ) { // add missing author name copyright.append( outputList.at( i + 1 ) ); // remove dot found at the end of the version copyright = copyright.left( copyright.size() - 1 ); } } return copyright; } K3b::DvdBooktypeProgram::DvdBooktypeProgram() : K3b::SimpleExternalProgram( "dvd+rw-booktype" ) { } K3b::Version K3b::DvdBooktypeProgram::parseVersion( const QString& output, const ExternalBin& /*bin*/ ) const { int pos = output.indexOf( "dvd+rw-booktype" ); if( pos < 0 ) return Version(); // dvd+rw-booktype does not have version information // create dummy version based on latest release (05-Mar-2008) return K3b::Version( 7, 1 ); } QString K3b::DvdBooktypeProgram::parseCopyright( const QString& /*output*/, const ExternalBin& /*bin*/ ) const { // fixed Copyright: return QLatin1String( "Andy Polyakov " ); } K3b::CdrskinProgram::CdrskinProgram() : K3b::SimpleExternalProgram(QLatin1String("cdrskin")) { } bool K3b::CdrskinProgram::scanFeatures(ExternalBin& bin) const { KProcess fp; fp.setOutputChannelMode(KProcess::MergedChannels); fp << bin.path() << "-help"; if (fp.execute() >= 0) { QByteArray output = fp.readAll(); if (output.contains("gracetime")) bin.addFeature("gracetime"); if (output.contains("-overburn")) bin.addFeature("overburn"); if (output.contains("-text")) bin.addFeature("cdtext"); if (output.contains("-clone")) bin.addFeature("clone"); if (output.contains("-tao")) bin.addFeature("tao"); } #ifdef K3B_DEBUG qDebug() << "DEBUG:" << __PRETTY_FUNCTION__ << bin.version(); // 1.4.6 for example #endif // TODO: cdrskin -help | grep XXX // Hello Thomas, please help me: the other version number dependent features // need to be checked what they mean and whether cdrskin supports them. if (bin.version().suffix().endsWith("-dvd")) { bin.addFeature("dvd-patch"); bin.setVersion(QString(bin.version().versionString()).remove("-dvd")); } // TODO: find . -name "*.cpp" | xargs grep plain-atapi // In src/k3bsystemproblemdialog.cpp there is Check for we have atapi support // in some way in the kernel bin.addFeature("plain-atapi"); // The same story bin.addFeature("hacked-atapi"); bin.addFeature("burnfree"); if (bin.version() >= K3b::Version(0, 6, 2)) { #ifdef K3B_DEBUG qDebug() << "DEBUG:" << __PRETTY_FUNCTION__ << "Blu-ray support was complete in cdrskin-0.6.2, 20 Feb 2009"; #endif bin.addFeature("blu-ray"); } bin.addFeature("dvd"); #ifdef K3B_DEBUG qDebug() << "DEBUG:" << __PRETTY_FUNCTION__ << bin.features(); #endif return SimpleExternalProgram::scanFeatures(bin); }