2018-08-28 Fred Gleason <fredg@paravelsystems.com>

* Fixed a regression that caused the RDXport service to throw
	a segfault when importing audio.
This commit is contained in:
Fred Gleason 2018-08-28 13:09:17 -04:00
parent c3adee3c07
commit 9b25471da1
3 changed files with 15 additions and 11 deletions

View File

@ -17533,3 +17533,6 @@
2018-08-28 Fred Gleason <fredg@paravelsystems.com> 2018-08-28 Fred Gleason <fredg@paravelsystems.com>
* Added an optional third argument to the 'Add Next' ['PX'] RML * Added an optional third argument to the 'Add Next' ['PX'] RML
to allow specication of the transition type. to allow specication of the transition type.
2018-08-28 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression that caused the RDXport service to throw
a segfault when importing audio.

View File

@ -69,6 +69,7 @@ RDAudioConvert::RDAudioConvert(QObject *parent)
conv_src_wavedata=new RDWaveData(); conv_src_wavedata=new RDWaveData();
conv_dst_wavedata=NULL; conv_dst_wavedata=NULL;
conv_src_converter=rda->libraryConf()->srcConverter(); conv_src_converter=rda->libraryConf()->srcConverter();
conv_transcoding_delay=rda->config()->transcodingDelay();
// //
// Load MPEG Libraries // Load MPEG Libraries
@ -656,7 +657,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage1Mpeg(const QString &dstfile,
return RDAudioConvert::ErrorFormatError; return RDAudioConvert::ErrorFormatError;
} }
memmove(buffer,mad_stream.next_frame,left_over); memmove(buffer,mad_stream.next_frame,left_over);
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
memset(buffer+left_over,0,MAD_BUFFER_GUARD); memset(buffer+left_over,0,MAD_BUFFER_GUARD);
mad_stream_buffer(&mad_stream,buffer,MAD_BUFFER_GUARD+left_over); mad_stream_buffer(&mad_stream,buffer,MAD_BUFFER_GUARD+left_over);
@ -886,7 +887,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage1SndFile(const QString &dstfile,
if((end-start)<buffer_size) { if((end-start)<buffer_size) {
buffer_size=end-start; buffer_size=end-start;
} }
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
delete buffer; delete buffer;
sf_close(sf_dst); sf_close(sf_dst);
@ -1075,7 +1076,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage2Convert(const QString &srcfile,
sf_close(dst_sf); sf_close(dst_sf);
return RDAudioConvert::ErrorNoSpace; return RDAudioConvert::ErrorNoSpace;
} }
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
// //
@ -1099,7 +1100,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage2Convert(const QString &srcfile,
sf_close(dst_sf); sf_close(dst_sf);
return RDAudioConvert::ErrorNoSpace; return RDAudioConvert::ErrorNoSpace;
} }
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
delete st_conv; delete st_conv;
} }
@ -1512,7 +1513,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage3Layer3(SNDFILE *src_sf,
return RDAudioConvert::ErrorNoSpace; return RDAudioConvert::ErrorNoSpace;
} }
} }
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
} }
else { else {
@ -1523,7 +1524,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage3Layer3(SNDFILE *src_sf,
::close(dst_fd); ::close(dst_fd);
return RDAudioConvert::ErrorNoSpace; return RDAudioConvert::ErrorNoSpace;
} }
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
} }
} }
@ -1653,7 +1654,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage3Layer2Wav(SNDFILE *src_sf,
else { else {
fprintf(stderr,"TwoLAME encode error\n"); fprintf(stderr,"TwoLAME encode error\n");
} }
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
if((s=twolame_encode_flush(lameopts,mpeg,2048))>=0) { if((s=twolame_encode_flush(lameopts,mpeg,2048))>=0) {
if(wave->writeWave(mpeg,s)!=s) { if(wave->writeWave(mpeg,s)!=s) {
@ -1756,7 +1757,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage3Layer2(SNDFILE *src_sf,
else { else {
fprintf(stderr,"TwoLAME encode error\n"); fprintf(stderr,"TwoLAME encode error\n");
} }
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
if((s=twolame_encode_flush(lameopts,mpeg,2048))>=0) { if((s=twolame_encode_flush(lameopts,mpeg,2048))>=0) {
if(write(dst_fd,mpeg,s)!=s) { if(write(dst_fd,mpeg,s)!=s) {
@ -1823,7 +1824,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage3Pcm16(SNDFILE *src_sf,
delete wave; delete wave;
return RDAudioConvert::ErrorNoSpace; return RDAudioConvert::ErrorNoSpace;
} }
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
delete sf_buffer; delete sf_buffer;
wave->closeWave(); wave->closeWave();
@ -1873,7 +1874,7 @@ RDAudioConvert::ErrorCode RDAudioConvert::Stage3Pcm24(SNDFILE *src_sf,
delete wave; delete wave;
return RDAudioConvert::ErrorNoSpace; return RDAudioConvert::ErrorNoSpace;
} }
usleep(conv_config->transcodingDelay()); usleep(conv_transcoding_delay);
} }
delete sf_buffer; delete sf_buffer;
delete pcm24; delete pcm24;

View File

@ -108,6 +108,7 @@ class RDAudioConvert : public QObject
int conv_start_point; int conv_start_point;
int conv_end_point; int conv_end_point;
float conv_speed_ratio; float conv_speed_ratio;
int conv_transcoding_delay;
RDSettings *conv_settings; RDSettings *conv_settings;
RDWaveData *conv_src_wavedata; RDWaveData *conv_src_wavedata;
RDWaveData *conv_dst_wavedata; RDWaveData *conv_dst_wavedata;
@ -118,7 +119,6 @@ class RDAudioConvert : public QObject
void *conv_mad_handle; void *conv_mad_handle;
void *conv_lame_handle; void *conv_lame_handle;
void *conv_twolame_handle; void *conv_twolame_handle;
RDConfig *conv_config;
#ifdef HAVE_MAD #ifdef HAVE_MAD
void (*mad_stream_init)(struct mad_stream *); void (*mad_stream_init)(struct mad_stream *);
void (*mad_frame_init)(struct mad_frame *); void (*mad_frame_init)(struct mad_frame *);