From 67d1e3afd8814578f715148b003c60b25ea31bc9 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Fri, 3 Nov 2023 15:20:16 -0400 Subject: [PATCH] 2023-11-03 Fred Gleason * Fixed a regression in caed(8) that caused multiple play-outs on a common port to interfere with each others mixer settings. Signed-off-by: Fred Gleason --- ChangeLog | 3 +++ cae/cae.cpp | 8 ++++---- lib/rdmarkerplayer.cpp | 18 ++++++------------ lib/rdnotification.cpp | 2 +- lib/rdsimpleplayer.cpp | 10 +++++++--- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index a1e50f75..1d44a9e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24444,3 +24444,6 @@ * Prepended the string '[mixer]' to all syslog entries generated as a result of enabling the 'EnableMixerLogging=' directive in rd.conf(5). +2023-11-03 Fred Gleason + * Fixed a regression in caed(8) that caused multiple play-outs on + a common port to interfere with each others mixer settings. diff --git a/cae/cae.cpp b/cae/cae.cpp index 3d666acf..f19239ac 100644 --- a/cae/cae.cpp +++ b/cae/cae.cpp @@ -691,12 +691,12 @@ void MainObject::setOutputPortData(int id,unsigned card,unsigned stream, return; } if(!rda->config()->testOutputStreams()) { - for(unsigned i=0;isetOutputVolume(card,i,port,level); + for(unsigned i=0;isetOutputVolume(card,stream,i,level); } else { - dvr->setOutputVolume(card,i,port,RD_FADE_DEPTH); + dvr->setOutputVolume(card,stream,i,RD_MUTE_DEPTH); } } if(rda->config()->enableMixerLogging()) { diff --git a/lib/rdmarkerplayer.cpp b/lib/rdmarkerplayer.cpp index 6dc72829..d1d057f5 100644 --- a/lib/rdmarkerplayer.cpp +++ b/lib/rdmarkerplayer.cpp @@ -379,10 +379,8 @@ void RDMarkerPlayer::buttonPlayData() d_loop_start_length=0; rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false); rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream); - // FIXME: Implement variable gain here! - rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port,0); - // rda->cae()-> - // setOutputVolume(d_cards.first(),d_cae_stream,d_port,0+edit_gain_control->value()); + rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream, + d_port,0+100*d_play_gain_spin->value()); d_meter_timer->start(RD_METER_UPDATE_INTERVAL); } @@ -401,10 +399,8 @@ void RDMarkerPlayer::buttonPlayFromData() d_loop_start_length=0; rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false); rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream); - // FIXME: Implement variable gain here! - rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port,0); - // rda->cae()-> - // setOutputVolume(d_cards.first(),d_cae_stream,d_port,0+edit_gain_control->value()); + rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port, + 0+100*d_play_gain_spin->value()); d_meter_timer->start(RD_METER_UPDATE_INTERVAL); } } @@ -428,10 +424,8 @@ void RDMarkerPlayer::buttonPlayToData() rda->cae()->positionPlay(d_cae_handle,d_loop_start_msec); rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false); rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream); - // FIXME: Implement variable gain here! - rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port,0); - // rda->cae()-> - // setOutputVolume(d_cards.first(),d_cae_stream,d_port,0+edit_gain_control->value()); + rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port, + 0+100*d_play_gain_spin->value()); d_meter_timer->start(RD_METER_UPDATE_INTERVAL); } } diff --git a/lib/rdnotification.cpp b/lib/rdnotification.cpp index 44ff92bf..4121f608 100644 --- a/lib/rdnotification.cpp +++ b/lib/rdnotification.cpp @@ -81,7 +81,7 @@ bool RDNotification::isValid() const bool RDNotification::read(const QString &str) { - printf("RDNotification::read(%s)\n",str.toUtf8().constData()); + // printf("RDNotification::read(%s)\n",str.toUtf8().constData()); notify_type=RDNotification::NullType; notify_action=RDNotification::NoAction; diff --git a/lib/rdsimpleplayer.cpp b/lib/rdsimpleplayer.cpp index a056a965..9b29c47e 100644 --- a/lib/rdsimpleplayer.cpp +++ b/lib/rdsimpleplayer.cpp @@ -162,11 +162,15 @@ void RDSimplePlayer::play(int start_pos) if(q->first()) { play_cut_gain=q->value(2).toInt(); play_handles.push(handle); + /* for(int i=0;isetOutputVolume(play_card,play_stream,i,RD_MUTE_DEPTH); + play_cae->setOutputVolume(play_card,play_stream,i,RD_MUTE_DEPTH); } - play_cae->setOutputVolume(play_card,play_stream,play_port,0+play_cut_gain); - play_cae->positionPlay(play_handles.back(),q->value(0).toUInt()+start_pos); + */ + play_cae-> + setOutputVolume(play_card,play_stream,play_port,0+play_cut_gain); + play_cae-> + positionPlay(play_handles.back(),q->value(0).toUInt()+start_pos); play_cae->play(play_handles.back(), q->value(1).toUInt()-(q->value(0).toUInt()+start_pos), RD_TIMESCALE_DIVISOR,false);