diff --git a/ChangeLog b/ChangeLog index 0ae9223b..f88d2be3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18637,3 +18637,5 @@ Python 3.6. 2019-05-02 Fred Gleason * Updated the package version to 3.0.0rc01. +2019-05-03 Fred Gleason + * Fixed a regression that broke audio importation in rdimport(1). diff --git a/lib/rdwavefile.cpp b/lib/rdwavefile.cpp index da994b18..4687e8d3 100644 --- a/lib/rdwavefile.cpp +++ b/lib/rdwavefile.cpp @@ -70,6 +70,7 @@ RDWaveFile::RDWaveFile(QString file_name) // // Initialize Class Structures // + wave_file_name=file_name; wave_file.setName(file_name); wave_data=NULL; recordable=false; @@ -213,6 +214,7 @@ void RDWaveFile::nameWave(QString file_name) return; } wave_file.setName(file_name); + wave_file_name=file_name; } @@ -226,13 +228,12 @@ bool RDWaveFile::openWave(RDWaveData *data) int fd=-1; wave_data=data; - if((fd=open(wave_file.name().toUtf8(),O_RDONLY))<0) { + if((fd=open(wave_file_name.toUtf8(),O_RDONLY))<0) { return false; } if(!wave_file.open(fd,QIODevice::ReadOnly)) { return false; } - switch(GetType(wave_file.handle())) { case RDWaveFile::Wave: if(GetFmt(wave_file.handle())) { @@ -431,7 +432,7 @@ bool RDWaveFile::openWave(RDWaveData *data) data_chunk=true; format_chunk=true; wave_type=RDWaveFile::Ogg; - ReadNormalizeLevel(wave_file.name()); + ReadNormalizeLevel(wave_file_name); ValidateMetadata(); return true; #else @@ -553,7 +554,7 @@ bool RDWaveFile::createWave(RDWaveData *data,unsigned ptr_offset) } prev_mask = umask(0113); // Set umask so files are user and group writable. rc=wave_file.open(QIODevice::ReadWrite|QIODevice::Truncate); - unlink((wave_file.name()+".energy").ascii()); + unlink((wave_file_name+".energy").ascii()); umask(prev_mask); if(rc==false) { return false; @@ -914,7 +915,7 @@ void RDWaveFile::resetWave() QString RDWaveFile::getName() const { - return wave_file.name(); + return wave_file_name; } @@ -2443,7 +2444,7 @@ bool RDWaveFile::IsFlac(int fd) #ifdef HAVE_FLAC char buffer[5]; - ID3_Tag id3_tag(Q3CString().sprintf("%s",(const char *)wave_file.name().utf8())); + ID3_Tag id3_tag(Q3CString().sprintf("%s",(const char *)wave_file_name.utf8())); lseek(fd,id3_tag.GetPrependedBytes(),SEEK_SET); if(read(fd,buffer,4)!=4) { return false; @@ -3489,10 +3490,10 @@ void RDWaveFile::ReadId3Metadata() return; } bool using_rdxl=false; - TagLib::FileRef tagref(wave_file.name().toUtf8()); + TagLib::FileRef tagref(wave_file_name.toUtf8()); if(tagref.file()==NULL) { // Take another look with ID3Lib ID3_Frame *frame=NULL; - ID3_Tag id3_tag(wave_file.name().toUtf8()); + ID3_Tag id3_tag(wave_file_name.toUtf8()); if((frame=id3_tag.Find(ID3FID_USERTEXT,ID3FN_DESCRIPTION,"rdxl"))!=NULL) { rdxl_contents=ID3_GetString(frame,ID3FN_TEXT); if(wave_data!=NULL) { @@ -3516,7 +3517,7 @@ void RDWaveFile::ReadId3Metadata() if(name==QString::fromUtf8("牤硬")) { // Mangled RD v2.x RDXL Frame using_rdxl=true; ID3_Frame *frame=NULL; - ID3_Tag id3_tag(wave_file.name().toUtf8()); + ID3_Tag id3_tag(wave_file_name.toUtf8()); if((frame=id3_tag.Find(ID3FID_USERTEXT,ID3FN_DESCRIPTION,"rdxl"))!=NULL) { rdxl_contents=ID3_GetString(frame,ID3FN_TEXT); if(wave_data!=NULL) { @@ -4178,7 +4179,7 @@ bool RDWaveFile::GetFlacStreamInfo() { #if HAVE_FLAC FLAC__StreamMetadata sinfo; - if(!FLAC__metadata_get_streaminfo(Q3CString().sprintf("%s",(const char *)wave_file.name().utf8()),&sinfo)) { + if(!FLAC__metadata_get_streaminfo(Q3CString().sprintf("%s",(const char *)wave_file_name.utf8()),&sinfo)) { return false; } samples_per_sec=sinfo.data.stream_info.sample_rate; @@ -4201,7 +4202,7 @@ void RDWaveFile::ReadFlacMetadata() QString composer; FLAC__StreamMetadata* tags; if(!FLAC__metadata_get_tags(Q3CString(). - sprintf("%s",(const char *)wave_file.name().utf8()),&tags)) { + sprintf("%s",(const char *)wave_file_name.utf8()),&tags)) { return; } for(unsigned iCommentIndex=0; @@ -4654,7 +4655,7 @@ void RDWaveFile::GetEnergy() { int file_ptr; - ReadEnergyFile(wave_file.name()); + ReadEnergyFile(wave_file_name); if(!levl_chunk) { GetLevl(wave_file.handle()); diff --git a/lib/rdwavefile.h b/lib/rdwavefile.h index 6f0307cf..cf244446 100644 --- a/lib/rdwavefile.h +++ b/lib/rdwavefile.h @@ -1076,6 +1076,7 @@ class RDWaveFile #endif // HAVE_VORBIS int WriteOggBuffer(char *buf,int size); unsigned FrameOffset(int msecs) const; + QString wave_file_name; QFile wave_file; RDWaveData *wave_data; bool recordable; // Allow DATA chunk writes?