Add ImageEncodeTask to encode a disk image to a different profile
and directory.
* morituri/common/encode.py:
Add lossy encoding profiles for mp3 and vorbis.
Rename muxer to tagger since that's what we use it for.
Do progress probe after level to make sure we get samples for
offsets.
* morituri/rip/image.py:
Add rip image encode command.
* morituri/image/toc.py:
* morituri/test/test_image_cue.py:
* morituri/test/test_image_toc.py:
Read input file as utf-8. Fix logging of paths.
* morituri/image/image.py:
Document and add asserts for unicodeness of paths.
Encode path in launch lines as utf-8
* morituri/image/image.py:
* morituri/test/Makefile.am:
* morituri/test/test_image_image.py:
* morituri/test/test_common_accurip.py (added):
Move accuraterip stuff to the accurip module.
Move/create new test file.
Add logging.
Add methods to clear a table of files, and to absolutize indexes
as long as the source is the same file, and to set a File on a
given index, adjusting all following indexes that match the
duration, and check if the IndexTable has all information for a TOC.
* morituri/image/toc.py:
Add logging.
Use a counter for the source.
Fix up index offset calculation.
* morituri/program/cdrdao.py:
Use a real IndexTable as the result, instead of a TocFile.
* morituri/image/cue.py:
Use a real IndexTable to store tracks.
* morituri/test/test_image_toc.py:
The toc file now has a table which has the tracks.
Fix the tests to adjust for wrong index calculations.
* morituri/test/test_image_cue.py:
* morituri/test/test_image_image.py:
* morituri/image/image.py:
The cue file now has a table which has the tracks.
* morituri/test/test_image_table.py:
Add assertions to make sure when the table can serve as a TOC.
* examples/readdisc.py:
Adjust for changes. Fix up to include AccurateRip results.
First time we can do a complete normal rip including verifying
against AccurateRip results!
* morituri/image/image.py:
* morituri/image/table.py:
* morituri/program/cdparanoia.py:
* morituri/test/test_image_cue.py:
Move to using a shared IndexTable for everything.
Sadly mixed with a MultiTask rename.
* morituri/image/toc.py:
* morituri/common/checksum.py (added):
* morituri/common/crc.py (deleted):
Rename crc to checksum, because AccurateRip checksums are not CRC's.
* morituri/test/test_image_image.py:
AccurateRip binary files actually contain multiple responses, so
parse all of them.
* examples/ARcue.py:
Handle case of not having a response, and having multiple responses.
Add an object to parse the response of AccurateRip.
* morituri/test/test_image_image.py:
* morituri/test/dBAR-011-0010e284-009228a3-9809ff0b.bin (added):
Add a test for it, based on my Kings Of Leon CD.
Add the 150 frames for the leadin only to the CDDB calculation.
Add methods to calculate AccurateRip id's and URL.
* morituri/test/test_image_image.py:
Add tests for it.
* examples/ARcue.py:
Show AccurateRip URL.
* morituri/image/image.py:
* morituri/test/test_image_image.py:
Add a task to verify a disk image, which also calculates
track lengths for tracks the cue file doesn't know the length of.
* morituri/common/crc.py:
* morituri/common/task.py:
* morituri/image/image.py:
Add a 'schedule' call to the TaskRunner class, so that we can
abstract things like gobject.timeout_add and reactor.callLater
Pass the runner to the task in Task.start() so a task can call
schedule.
* morituri/common/task.py:
* morituri/image/image.py (added):
Add an object for handling an Image based on a .cue file.
Create a Task for CRC'ing the whole Image.
Make the example use this new task instead.