2019-05-03 Fred Gleason <fredg@paravelsystems.com>

* Fixed a regression that broke audio importation in rdimport(1).
This commit is contained in:
Fred Gleason 2019-05-03 15:42:40 -04:00
parent bf0a19bf43
commit aa59fbb0f5
3 changed files with 16 additions and 12 deletions

View File

@ -18637,3 +18637,5 @@
Python 3.6. Python 3.6.
2019-05-02 Fred Gleason <fredg@paravelsystems.com> 2019-05-02 Fred Gleason <fredg@paravelsystems.com>
* Updated the package version to 3.0.0rc01. * Updated the package version to 3.0.0rc01.
2019-05-03 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression that broke audio importation in rdimport(1).

View File

@ -70,6 +70,7 @@ RDWaveFile::RDWaveFile(QString file_name)
// //
// Initialize Class Structures // Initialize Class Structures
// //
wave_file_name=file_name;
wave_file.setName(file_name); wave_file.setName(file_name);
wave_data=NULL; wave_data=NULL;
recordable=false; recordable=false;
@ -213,6 +214,7 @@ void RDWaveFile::nameWave(QString file_name)
return; return;
} }
wave_file.setName(file_name); wave_file.setName(file_name);
wave_file_name=file_name;
} }
@ -226,13 +228,12 @@ bool RDWaveFile::openWave(RDWaveData *data)
int fd=-1; int fd=-1;
wave_data=data; 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; return false;
} }
if(!wave_file.open(fd,QIODevice::ReadOnly)) { if(!wave_file.open(fd,QIODevice::ReadOnly)) {
return false; return false;
} }
switch(GetType(wave_file.handle())) { switch(GetType(wave_file.handle())) {
case RDWaveFile::Wave: case RDWaveFile::Wave:
if(GetFmt(wave_file.handle())) { if(GetFmt(wave_file.handle())) {
@ -431,7 +432,7 @@ bool RDWaveFile::openWave(RDWaveData *data)
data_chunk=true; data_chunk=true;
format_chunk=true; format_chunk=true;
wave_type=RDWaveFile::Ogg; wave_type=RDWaveFile::Ogg;
ReadNormalizeLevel(wave_file.name()); ReadNormalizeLevel(wave_file_name);
ValidateMetadata(); ValidateMetadata();
return true; return true;
#else #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. prev_mask = umask(0113); // Set umask so files are user and group writable.
rc=wave_file.open(QIODevice::ReadWrite|QIODevice::Truncate); rc=wave_file.open(QIODevice::ReadWrite|QIODevice::Truncate);
unlink((wave_file.name()+".energy").ascii()); unlink((wave_file_name+".energy").ascii());
umask(prev_mask); umask(prev_mask);
if(rc==false) { if(rc==false) {
return false; return false;
@ -914,7 +915,7 @@ void RDWaveFile::resetWave()
QString RDWaveFile::getName() const QString RDWaveFile::getName() const
{ {
return wave_file.name(); return wave_file_name;
} }
@ -2443,7 +2444,7 @@ bool RDWaveFile::IsFlac(int fd)
#ifdef HAVE_FLAC #ifdef HAVE_FLAC
char buffer[5]; 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); lseek(fd,id3_tag.GetPrependedBytes(),SEEK_SET);
if(read(fd,buffer,4)!=4) { if(read(fd,buffer,4)!=4) {
return false; return false;
@ -3489,10 +3490,10 @@ void RDWaveFile::ReadId3Metadata()
return; return;
} }
bool using_rdxl=false; 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 if(tagref.file()==NULL) { // Take another look with ID3Lib
ID3_Frame *frame=NULL; 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) { if((frame=id3_tag.Find(ID3FID_USERTEXT,ID3FN_DESCRIPTION,"rdxl"))!=NULL) {
rdxl_contents=ID3_GetString(frame,ID3FN_TEXT); rdxl_contents=ID3_GetString(frame,ID3FN_TEXT);
if(wave_data!=NULL) { if(wave_data!=NULL) {
@ -3516,7 +3517,7 @@ void RDWaveFile::ReadId3Metadata()
if(name==QString::fromUtf8("牤硬")) { // Mangled RD v2.x RDXL Frame if(name==QString::fromUtf8("牤硬")) { // Mangled RD v2.x RDXL Frame
using_rdxl=true; using_rdxl=true;
ID3_Frame *frame=NULL; 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) { if((frame=id3_tag.Find(ID3FID_USERTEXT,ID3FN_DESCRIPTION,"rdxl"))!=NULL) {
rdxl_contents=ID3_GetString(frame,ID3FN_TEXT); rdxl_contents=ID3_GetString(frame,ID3FN_TEXT);
if(wave_data!=NULL) { if(wave_data!=NULL) {
@ -4178,7 +4179,7 @@ bool RDWaveFile::GetFlacStreamInfo()
{ {
#if HAVE_FLAC #if HAVE_FLAC
FLAC__StreamMetadata sinfo; 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; return false;
} }
samples_per_sec=sinfo.data.stream_info.sample_rate; samples_per_sec=sinfo.data.stream_info.sample_rate;
@ -4201,7 +4202,7 @@ void RDWaveFile::ReadFlacMetadata()
QString composer; QString composer;
FLAC__StreamMetadata* tags; FLAC__StreamMetadata* tags;
if(!FLAC__metadata_get_tags(Q3CString(). 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; return;
} }
for(unsigned iCommentIndex=0; for(unsigned iCommentIndex=0;
@ -4654,7 +4655,7 @@ void RDWaveFile::GetEnergy()
{ {
int file_ptr; int file_ptr;
ReadEnergyFile(wave_file.name()); ReadEnergyFile(wave_file_name);
if(!levl_chunk) { if(!levl_chunk) {
GetLevl(wave_file.handle()); GetLevl(wave_file.handle());

View File

@ -1076,6 +1076,7 @@ class RDWaveFile
#endif // HAVE_VORBIS #endif // HAVE_VORBIS
int WriteOggBuffer(char *buf,int size); int WriteOggBuffer(char *buf,int size);
unsigned FrameOffset(int msecs) const; unsigned FrameOffset(int msecs) const;
QString wave_file_name;
QFile wave_file; QFile wave_file;
RDWaveData *wave_data; RDWaveData *wave_data;
bool recordable; // Allow DATA chunk writes? bool recordable; // Allow DATA chunk writes?