* Fixed an arithmetic overflow bug in 'RDWaveFile' that could
cause the play length of MPEG-encoded to be incorrectly calculated.
Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
* Overhauled the code for reading MPEG frame headers in 'RDWaveFile'.
* Fixed a bug in the rdxport 'Import' service that could result in
incorrect end marker placement when processing variable bit rate
(VBR) MPEG files.
Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression in 'RDWaveFile' that caused generation
of spurrious 'returned non-zero exit code' warnings.
Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
* Added the value of the detected CartChunk CutID to the error
message generated when rejecting said CutID as invalid when using
the '--use-cartchunk-cutid' switch in rdimport(1).
* Added code to print the value of the detected CartChunk CutID
when using both the '--use-cartchunk-cutid' and '--verbose' flags
in rdimport(1).
Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
* Modified 'RDWaveFile' to work around known fencepost errors in
WAV files generated by "Sonic Studio soundBlade" by
"PME Mastering, Inc."
Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression in rdimport(1) that caused null characters to
be written to cart metadata fields when importing files containing
an 'AIR1' RIFF chunk.
* Added an 'RDStringToHex()' function to 'lib/rd.conf.cpp'.
* Fixed bugs in 'RDWaveFile' that caused strings of null characters
to be written into unfilled CartChunk string fields.
* Renamed the 'RDWaveData::introStartPos()' method to
'RDWaveData::talkStartPos()'.
* Renamed the 'RDWaveData::setIntroStartPos()' method to
'RDWaveData::setTalkStartPos()'.
* Renamed the 'RDWaveData::introEndPos()' method to
'RDWaveData::talkEndPos()'.
* Renamed the 'RDWaveData::setIntroEndPos()' method to
'RDWaveData::setTalkEndPos()'.
* Added a '--metadata-cart=' switch to the 'audio_convert_test'
test harness.
* Added an 'audio_metadata_test' test harness.
* Modified ID3 tag reading/writing to use TagLib.
* Implemented storage of RDXML data structures within a 'rdxl'
user defined information frame in ID3 tags 'lib/rdwavefile.cpp' and
'lib/rdaudio_convert.cpp'.
* Added an 'RDAudioConvert::Stage3Pcm24()' method in
'lib/rdaudioconvert.cpp' and 'lib/rdaudioconvert.h'.
* Added a 'Format::Pcm24' value to the 'RDSettings::Format'
enumeration in 'lib/rdsettings.h'.
* Modified the 'RDAudioConvert' class to support generating PCM24
output in 'lib/rdaudioconvert.cpp' and 'lib/rdaudioconvert.h'.
* Modified the 'RDPlayStream' class to support playing PCM24
data in 'rdhpi/rdplaystream.cpp'.
* Modified the 'RDRecordStream' class to support capturing PCM24
data in 'rdhpi/rdrecordstream.cpp'.
* Added an 'audio_peaks_test' harness in 'tests/audio_peaks_test.cpp'
and 'tests/audio_peaks_test.h'.
* Added 'PCM24' to the list of available formats in
'rdadmin/edit_rdlibrary.cpp' and 'rdadmin/edit_rdlibrary.h'.
* Added 'PCM24' to the list of available formats in
'rdadmin/edit_decks.cpp'.
* Added PCM24 support for file importation in
'web/rdxport/import.cpp'.
* Added an 'RDCae::Pcm24' value to the 'RDCae::AudioCoding
enumeration in 'lib/rdcae.h'.