2017-09-19 Fred Gleason <fredg@paravelsystems.com>

* Removed redundant 'int chans' parameter from the
	'RDRenderer::renderTo*()' methods in 'lib/rdrenderer.cpp' and
	'lib/rdrenderer.h'.
	* Fixed a bug in 'lib/rdrenderer.cpp' and 'lib/rdrenerer.h' that
	caused logs rendered to cart/cut in stereo regardless of the number
	of channels specified.
This commit is contained in:
Fred Gleason 2017-09-19 11:42:51 -04:00
parent 78fa7dbe17
commit 50447fa6f7
5 changed files with 40 additions and 32 deletions

View File

@ -16032,3 +16032,10 @@
in rdlogedit(1).
* Added a length check when rendering to cart/cut in
'lib/rdrenderer.cpp'.
2017-09-19 Fred Gleason <fredg@paravelsystems.com>
* Removed redundant 'int chans' parameter from the
'RDRenderer::renderTo*()' methods in 'lib/rdrenderer.cpp' and
'lib/rdrenderer.h'.
* Fixed a bug in 'lib/rdrenderer.cpp' and 'lib/rdrenerer.h' that
caused logs rendered to cart/cut in stereo regardless of the number
of channels specified.

View File

@ -249,9 +249,9 @@ RDRenderer::~RDRenderer()
bool RDRenderer::renderToFile(const QString &outfile,RDLogEvent *log,
unsigned chans,RDSettings *s,
const QTime &start_time,bool ignore_stops,
QString *err_msg,int first_line,int last_line,
RDSettings *s,const QTime &start_time,
bool ignore_stops,QString *err_msg,
int first_line,int last_line,
const QTime &first_time,const QTime &last_time)
{
QString temp_output_filename;
@ -284,7 +284,7 @@ bool RDRenderer::renderToFile(const QString &outfile,RDLogEvent *log,
//
// Render It
//
if(!Render(temp_output_filename,log,chans,s,start_time,ignore_stops,err_msg,
if(!Render(temp_output_filename,log,s,start_time,ignore_stops,err_msg,
first_line,last_line,first_time,last_time)) {
return false;
}
@ -305,7 +305,7 @@ bool RDRenderer::renderToFile(const QString &outfile,RDLogEvent *log,
ProgressMessage(tr("Pass 1 of 1"));
render_total_passes=1;
ret=Render(outfile,log,chans,s,start_time,ignore_stops,err_msg,
ret=Render(outfile,log,s,start_time,ignore_stops,err_msg,
first_line,last_line,first_time,last_time);
emit lineStarted(log->size(),log->size());
return ret;
@ -315,9 +315,9 @@ bool RDRenderer::renderToFile(const QString &outfile,RDLogEvent *log,
bool RDRenderer::renderToCart(unsigned cartnum,int cutnum,RDLogEvent *log,
unsigned chans,RDSettings *s,
const QTime &start_time,bool ignore_stops,
QString *err_msg,int first_line,int last_line,
RDSettings *s,const QTime &start_time,
bool ignore_stops,QString *err_msg,
int first_line,int last_line,
const QTime &first_time,const QTime &last_time)
{
QString temp_output_filename;
@ -366,7 +366,7 @@ bool RDRenderer::renderToCart(unsigned cartnum,int cutnum,RDLogEvent *log,
//
// Render It
//
if(!Render(temp_output_filename,log,chans,s,start_time,ignore_stops,err_msg,
if(!Render(temp_output_filename,log,s,start_time,ignore_stops,err_msg,
first_line,last_line,first_time,last_time)) {
return false;
}
@ -376,7 +376,7 @@ bool RDRenderer::renderToCart(unsigned cartnum,int cutnum,RDLogEvent *log,
//
ProgressMessage(tr("Pass 2 of 2"));
ProgressMessage(tr("Importing cart"));
ok=ImportCart(temp_output_filename,cartnum,cutnum,err_msg);
ok=ImportCart(temp_output_filename,cartnum,cutnum,s->channels(),err_msg);
DeleteTempFile(temp_output_filename);
emit lineStarted(log->size()+1,log->size()+1);
if(!ok) {
@ -399,8 +399,8 @@ void RDRenderer::abort()
}
bool RDRenderer::Render(const QString &outfile,RDLogEvent *log,unsigned chans,
RDSettings *s,const QTime &start_time,bool ignore_stops,
bool RDRenderer::Render(const QString &outfile,RDLogEvent *log,RDSettings *s,
const QTime &start_time,bool ignore_stops,
QString *err_msg,int first_line,int last_line,
const QTime &first_time,const QTime &last_time)
{
@ -419,7 +419,7 @@ bool RDRenderer::Render(const QString &outfile,RDLogEvent *log,unsigned chans,
memset(&sf_info,0,sizeof(sf_info));
sf_info.samplerate=render_system->sampleRate();
sf_info.channels=chans;
sf_info.channels=s->channels();
if(s->format()==RDSettings::Pcm16) {
sf_info.format=SF_FORMAT_WAV|SF_FORMAT_PCM_16;
}
@ -440,7 +440,7 @@ bool RDRenderer::Render(const QString &outfile,RDLogEvent *log,unsigned chans,
for(int i=0;i<log->size();i++) {
lls.push_back(new __RDRenderLogLine(log->logLine(i),render_user,
render_station,render_system,
render_config,chans));
render_config,s->channels()));
if(ignore_stops&&(lls.back()->transType()==RDLogLine::Stop)) {
lls.back()->setTransType(RDLogLine::Play);
}
@ -471,7 +471,7 @@ bool RDRenderer::Render(const QString &outfile,RDLogEvent *log,unsigned chans,
}
lls.push_back(new __RDRenderLogLine(new RDLogLine(),render_user,
render_station,render_system,
render_config,chans));
render_config,s->channels()));
lls.back()->setTransType(RDLogLine::Play);
if((!first_time.isNull())&&(first_line==-1)) {
first_line=log->size();
@ -518,13 +518,13 @@ bool RDRenderer::Render(const QString &outfile,RDLogEvent *log,unsigned chans,
current_time=current_time.addMSecs(lls.at(i)->cut()->endPoint()-
lls.at(i)->cut()->startPoint());
}
pcm=new float[frames*chans];
memset(pcm,0,frames*chans);
pcm=new float[frames*s->channels()];
memset(pcm,0,frames*s->channels());
for(unsigned j=0;j<i;j++) {
Sum(pcm,lls.at(j),frames,chans);
Sum(pcm,lls.at(j),frames,s->channels());
}
Sum(pcm,lls.at(i),frames,chans);
Sum(pcm,lls.at(i),frames,s->channels());
sf_writef_float(sf_out,pcm,frames);
delete pcm;
pcm=NULL;
@ -598,12 +598,13 @@ bool RDRenderer::ConvertAudio(const QString &srcfile,const QString &dstfile,
bool RDRenderer::ImportCart(const QString &srcfile,unsigned cartnum,int cutnum,
QString *err_msg)
unsigned chans,QString *err_msg)
{
RDAudioImport::ErrorCode err_import_code;
RDAudioConvert::ErrorCode err_conv_code;
RDSettings settings;
settings.setChannels(chans);
settings.setNormalizationLevel(0);
RDAudioImport *conv=new RDAudioImport(render_station,render_config,this);

View File

@ -80,13 +80,13 @@ class RDRenderer : public QObject
RDRenderer(RDUser *user,RDStation *station,RDSystem *system,RDConfig *config,
QObject *parent=0);
~RDRenderer();
bool renderToFile(const QString &outfile,RDLogEvent *log,unsigned chans,
RDSettings *s,const QTime &start_time,bool ignore_stops,
bool renderToFile(const QString &outfile,RDLogEvent *log,RDSettings *s,
const QTime &start_time,bool ignore_stops,
QString *err_msg,int first_line,int last_line,
const QTime &first_time=QTime(),
const QTime &last_time=QTime());
bool renderToCart(unsigned cartnum,int cutnum,RDLogEvent *log,unsigned chans,
RDSettings *s,const QTime &start_time,bool ignore_stops,
bool renderToCart(unsigned cartnum,int cutnum,RDLogEvent *log,RDSettings *s,
const QTime &start_time,bool ignore_stops,
QString *err_msg,int first_line,int last_line,
const QTime &first_time=QTime(),
const QTime &last_time=QTime());
@ -100,8 +100,8 @@ class RDRenderer : public QObject
void lineStarted(int linno,int totallines);
private:
bool Render(const QString &outfile,RDLogEvent *log,unsigned chans,
RDSettings *s,const QTime &start_time,bool ignore_stops,
bool Render(const QString &outfile,RDLogEvent *log,RDSettings *s,
const QTime &start_time,bool ignore_stops,
QString *err_msg,int first_line,int last_line,
const QTime &first_time,const QTime &last_time);
void Sum(float *pcm_out,__RDRenderLogLine *ll,sf_count_t frames,
@ -109,7 +109,7 @@ class RDRenderer : public QObject
bool ConvertAudio(const QString &srcfile,const QString &dstfile,
RDSettings *s,QString *err_msg);
bool ImportCart(const QString &srcfile,unsigned cartnum,int cutnum,
QString *err_msg);
unsigned chans,QString *err_msg);
uint64_t FramesFromMsec(uint64_t msec) const;
void DeleteTempFile(const QString &filename) const;
void ProgressMessage(const QString &msg);

View File

@ -287,13 +287,13 @@ void RenderDialog::renderData()
connect(render_progress_dialog,SIGNAL(cancelled()),r,SLOT(abort()));
if(render_to_box->currentItem()) {
result=
r->renderToFile(render_filename_edit->text(),render_log,2,render_settings,
r->renderToFile(render_filename_edit->text(),render_log,render_settings,
start_time,render_ignorestop_box->currentItem(),
&err_msg,first_line,last_line);
}
else {
result=
r->renderToCart(render_to_cartnum,render_to_cutnum,render_log,2,
r->renderToCart(render_to_cartnum,render_to_cutnum,render_log,
render_settings,start_time,
render_ignorestop_box->currentItem(),
&err_msg,first_line,last_line);

View File

@ -330,7 +330,7 @@ void MainObject::userData()
this,SLOT(printProgressMessage(const QString &)));
if(render_to_file.isEmpty()) {
if(!r->renderToCart(render_cart_number,render_cut_number,log_event,
render_channels,&render_settings,render_start_time,
&render_settings,render_start_time,
render_ignore_stops,&err_msg,render_first_line,
render_last_line,render_first_time,render_last_time)) {
fprintf(stderr,"rdrender: %s\n",(const char *)err_msg);
@ -338,8 +338,8 @@ void MainObject::userData()
}
}
else {
if(!r->renderToFile(render_to_file,log_event,render_channels,
&render_settings,render_start_time,render_ignore_stops,
if(!r->renderToFile(render_to_file,log_event,&render_settings,
render_start_time,render_ignore_stops,
&err_msg,render_first_line,render_last_line,
render_first_time,render_last_time)) {
fprintf(stderr,"rdrender: %s\n",(const char *)err_msg);