mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-31 16:12:33 +02:00
2023-10-16 Fred Gleason <fredg@paravelsystems.com>
* Added a 'volume' parameter to the 'Start Playback' CAE command. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
0dbe252a98
commit
8649ee1a0e
@ -24456,3 +24456,5 @@
|
||||
2023-10-16 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Modified rdcatch(8) to use the new-style CAE commands for play-out
|
||||
events.
|
||||
2023-10-16 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Added a 'volume' parameter to the 'Start Playback' CAE command.
|
||||
|
@ -156,9 +156,9 @@ MainObject::MainObject(QObject *parent)
|
||||
connect(cae_server,SIGNAL(playPositionReq(const SessionId &,int)),
|
||||
this,SLOT(playPositionData(const SessionId &,int)));
|
||||
connect(cae_server,SIGNAL(startPlaybackReq(const SessionId &,const QString &,
|
||||
unsigned,unsigned,int,int,int)),
|
||||
unsigned,unsigned,int,int,int,int)),
|
||||
this,SLOT(startPlaybackData(const SessionId &,const QString &,
|
||||
unsigned,unsigned,int,int,int)));
|
||||
unsigned,unsigned,int,int,int,int)));
|
||||
connect(cae_server,SIGNAL(playStopReq(const SessionId &)),
|
||||
this,SLOT(stopPlaybackData(const SessionId &)));
|
||||
connect(cae_server,SIGNAL(loadPlaybackReq(int,unsigned,const QString &)),
|
||||
@ -353,7 +353,8 @@ MainObject::MainObject(QObject *parent)
|
||||
//
|
||||
void MainObject::startPlaybackData(const SessionId &sid,const QString &cutname,
|
||||
unsigned cardnum,unsigned portnum,
|
||||
int start_pos,int end_pos,int speed)
|
||||
int start_pos,int end_pos,int speed,
|
||||
int volume)
|
||||
{
|
||||
Driver *dvr=NULL;
|
||||
|
||||
@ -388,7 +389,7 @@ void MainObject::startPlaybackData(const SessionId &sid,const QString &cutname,
|
||||
//
|
||||
// Set Mixer
|
||||
//
|
||||
if(!dvr->setOutputVolume(cardnum,streamnum,portnum,0)) {
|
||||
if(!dvr->setOutputVolume(cardnum,streamnum,portnum,volume)) {
|
||||
rda->syslog(LOG_WARNING,"set output volume failed - session: %s card: %d port: %d stream: %d level: 0",
|
||||
sid.dump().toUtf8().constData(),cardnum,portnum,streamnum);
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ class MainObject : public QObject
|
||||
//
|
||||
void startPlaybackData(const SessionId &sid,const QString &cutname,
|
||||
unsigned cardnum,unsigned portnum,
|
||||
int start_pos,int end_pos,int speed);
|
||||
int start_pos,int end_pos,int speed,int volume);
|
||||
void playPositionData(const SessionId &sid,int position);
|
||||
void stopPlaybackData(const SessionId &sid);
|
||||
|
||||
|
@ -148,6 +148,7 @@ bool CaeServer::ProcessCommand(const QHostAddress &src_addr,uint16_t src_port,
|
||||
int channels;
|
||||
int bitrate;
|
||||
int interval;
|
||||
int volume;
|
||||
SessionId origin(src_addr,src_port);
|
||||
|
||||
//
|
||||
@ -186,7 +187,7 @@ bool CaeServer::ProcessCommand(const QHostAddress &src_addr,uint16_t src_port,
|
||||
//
|
||||
// Playback Operations
|
||||
//
|
||||
if((f0.at(0)=="PY")&&(f0.size()==8)) { // Start Playback
|
||||
if((f0.at(0)=="PY")&&(f0.size()==9)) { // Start Playback
|
||||
serial=f0.at(1).toUInt(&ok);
|
||||
if(ok) {
|
||||
origin.setSerialNumber(serial);
|
||||
@ -202,9 +203,12 @@ bool CaeServer::ProcessCommand(const QHostAddress &src_addr,uint16_t src_port,
|
||||
if(ok&&(end_pos>=0)&&(end_pos>=start_pos)) {
|
||||
speed=f0.at(7).toInt(&ok);
|
||||
if(ok&&(speed>0)) {
|
||||
emit startPlaybackReq(origin,cutname,cardnum,portnum,
|
||||
start_pos,end_pos,speed);
|
||||
was_processed=true;
|
||||
volume=f0.at(8).toInt(&ok);
|
||||
if(ok) {
|
||||
emit startPlaybackReq(origin,cutname,cardnum,portnum,
|
||||
start_pos,end_pos,speed,volume);
|
||||
was_processed=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ class CaeServer : public QObject
|
||||
void connectionClosed(const SessionId &sid);
|
||||
void startPlaybackReq(const SessionId &sid,const QString &cutname,
|
||||
unsigned cardnum,unsigned portnum,
|
||||
int start_pos,int end_pos,int speed);
|
||||
int start_pos,int end_pos,int speed,int volume);
|
||||
void playPositionReq(const SessionId &sid,int position);
|
||||
void playPauseReq(const SessionId &sid);
|
||||
void playResumeReq(const SessionId &sid);
|
||||
|
@ -211,6 +211,7 @@
|
||||
<replaceable>start-pos</replaceable>
|
||||
<replaceable>end-pos</replaceable>
|
||||
<replaceable>speed</replaceable>
|
||||
<replaceable>volume</replaceable>
|
||||
</userinput>
|
||||
</para>
|
||||
<variablelist>
|
||||
@ -276,6 +277,15 @@
|
||||
indicating 100%.
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<replaceable>volume</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
The audio level of the play-out, relative to the reference
|
||||
level (-16 dBFS), in hundredths of a dB.
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
|
@ -200,14 +200,15 @@ void RDCae::enableMetering(QList<int> *cards)
|
||||
|
||||
|
||||
int RDCae::startPlayback(const QString &cutname,int cardnum,int portnum,
|
||||
int start_pos,int end_pos,int speed)
|
||||
int start_pos,int end_pos,int speed,int volume)
|
||||
{
|
||||
int serial=cae_next_serial_number++;
|
||||
|
||||
cae_stream_output_levels[serial]=new __RDCaeMeterPoint();
|
||||
SendCommand(QString::asprintf("PY %d %s %d %d %d %d %d",
|
||||
SendCommand(QString::asprintf("PY %d %s %d %d %d %d %d %d",
|
||||
serial,cutname.toUtf8().constData(),
|
||||
cardnum,portnum,start_pos,end_pos,100000));
|
||||
cardnum,portnum,start_pos,end_pos,
|
||||
speed,volume));
|
||||
emit playStarted(serial);
|
||||
|
||||
return serial;
|
||||
@ -361,11 +362,17 @@ void RDCae::stopRecord(int card,int stream)
|
||||
SendCommand(QString::asprintf("SR %d %d",card,stream));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void RDCae::setOutputVolume(int card,int stream,int port,int level)
|
||||
{
|
||||
SendCommand(QString::asprintf("OV %d %d %d %d",card,stream,port,level));
|
||||
}
|
||||
*/
|
||||
|
||||
void RDCae::setOutputVolume(int serial,int level)
|
||||
{
|
||||
SendCommand(QString::asprintf("OV %d %d",serial,level));
|
||||
}
|
||||
|
||||
|
||||
void RDCae::setOutputPort(int card,int stream,int port)
|
||||
@ -373,12 +380,18 @@ void RDCae::setOutputPort(int card,int stream,int port)
|
||||
SendCommand(QString::asprintf("OP %d %d %d 0",card,stream,port));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void RDCae::fadeOutputVolume(int card,int stream,int port,int level,int length)
|
||||
{
|
||||
SendCommand(QString::asprintf("FV %d %d %d %d %d",
|
||||
card,stream,port,level,length));
|
||||
}
|
||||
*/
|
||||
|
||||
void RDCae::fadeOutputVolume(int serial,int level,int length)
|
||||
{
|
||||
SendCommand(QString::asprintf("FV %d %d %d",serial,level,length));
|
||||
}
|
||||
|
||||
|
||||
void RDCae::setPassthroughVolume(int card,int in_port,int out_port,int level)
|
||||
|
@ -54,7 +54,7 @@ class RDCae : public QObject
|
||||
void connectToHost(int timeout_msecs=-1);
|
||||
void enableMetering(QList<int> *cards);
|
||||
int startPlayback(const QString &cutname,int cardnum,int portnum,
|
||||
int start_pos,int end_pos,int speed);
|
||||
int start_pos,int end_pos,int speed,int volume);
|
||||
void positionPlay(int serial,int pos);
|
||||
void pausePlayback(int serial);
|
||||
void resumePlayback(int serial);
|
||||
@ -72,9 +72,11 @@ class RDCae : public QObject
|
||||
void unloadRecord(int card,int stream);
|
||||
void record(int card,int stream,unsigned length,int threshold);
|
||||
void stopRecord(int card,int stream);
|
||||
void setOutputVolume(int card,int stream,int port,int level);
|
||||
// void setOutputVolume(int card,int stream,int port,int level);
|
||||
void setOutputVolume(int serial,int level);
|
||||
void setOutputPort(int card,int stream,int port);
|
||||
void fadeOutputVolume(int card,int stream,int port,int level,int length);
|
||||
// void fadeOutputVolume(int card,int stream,int port,int level,int length);
|
||||
void fadeOutputVolume(int serial,int level,int length);
|
||||
void setPassthroughVolume(int card,int in_port,int out_port,int level);
|
||||
bool inputStatus(int card,int port) const;
|
||||
void inputMeterUpdate(int card,int port,short levels[2]);
|
||||
|
@ -393,7 +393,8 @@ void RDMarkerPlayer::buttonPlayData()
|
||||
d_cae_serial=rda->cae()->
|
||||
startPlayback(RDCut::cutName(d_cart_number,d_cut_number),
|
||||
d_cards.first(),d_port,
|
||||
d_cursor_position,d_cut_length,RD_TIMESCALE_DIVISOR);
|
||||
d_cursor_position,d_cut_length,RD_TIMESCALE_DIVISOR,
|
||||
100*d_play_gain_spin->value());
|
||||
Play();
|
||||
rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream);
|
||||
// FIXME: Implement variable gain here!
|
||||
@ -412,10 +413,9 @@ void RDMarkerPlayer::buttonPlayFromData()
|
||||
startPlayback(RDCut::cutName(d_cart_number,d_cut_number),
|
||||
d_cards.first(),d_port,
|
||||
d_loop_start_msec,d_cut_length,
|
||||
RD_TIMESCALE_DIVISOR);
|
||||
RD_TIMESCALE_DIVISOR,100*d_play_gain_spin->value());
|
||||
Play();
|
||||
rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream);
|
||||
// FIXME: Implement variable gain here!
|
||||
}
|
||||
}
|
||||
|
||||
@ -436,11 +436,10 @@ void RDMarkerPlayer::buttonPlayToData()
|
||||
startPlayback(RDCut::cutName(d_cart_number,d_cut_number),
|
||||
d_cards.first(),d_port,
|
||||
d_loop_start_msec,d_loop_start_msec+d_loop_start_length,
|
||||
RD_TIMESCALE_DIVISOR);
|
||||
RD_TIMESCALE_DIVISOR,100*d_play_gain_spin->value());
|
||||
d_stop_timer->start(d_loop_start_length);
|
||||
Play();
|
||||
rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream);
|
||||
// FIXME: Implement variable gain here!
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -443,6 +443,10 @@ void RDPlayDeck::play(unsigned pos,int segue_start,int segue_end,
|
||||
int duck_up_end)
|
||||
{
|
||||
int fadeup;
|
||||
int start_volume=RD_MUTE_DEPTH;
|
||||
int fade_volume=RD_MUTE_DEPTH;
|
||||
int fade_length=0;
|
||||
|
||||
play_hook_mode=false;
|
||||
play_cut_gain=play_cut->playGain();
|
||||
|
||||
@ -482,41 +486,53 @@ void RDPlayDeck::play(unsigned pos,int segue_start,int segue_end,
|
||||
(play_state==RDPlayDeck::Paused)) {
|
||||
if((play_fade_point[1]==-1)||((fadeup=pos-play_fade_point[1])<=0)||
|
||||
(play_state==RDPlayDeck::Paused)) {
|
||||
play_cae->setOutputVolume(play_card,play_stream,play_port,
|
||||
play_ducked+play_cut_gain+play_duck_level);
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
play_ducked+play_cut_gain+play_duck_level,10);
|
||||
//play_cae->setOutputVolume(play_card,play_stream,play_port,
|
||||
// play_ducked+play_cut_gain+play_duck_level);
|
||||
start_volume=play_ducked+play_cut_gain+play_duck_level;
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
// play_ducked+play_cut_gain+play_duck_level,10);
|
||||
fade_volume=play_ducked+play_cut_gain+play_duck_level;
|
||||
fade_length=10;
|
||||
}
|
||||
else { // Fadedown event in progress, interpolate the gain accordingly
|
||||
int level=play_fade_gain[1]*((int)pos-play_fade_point[1])/
|
||||
(play_audio_point[1]-play_fade_point[1]);
|
||||
play_cae->
|
||||
setOutputVolume(play_card,play_stream,play_port,
|
||||
level+play_cut_gain+play_duck_level);
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
play_fade_gain[1]+play_cut_gain+
|
||||
play_duck_level,
|
||||
play_audio_point[1]-(int)pos);
|
||||
//play_cae->
|
||||
// setOutputVolume(play_card,play_stream,play_port,
|
||||
// level+play_cut_gain+play_duck_level);
|
||||
start_volume=level+play_cut_gain+play_duck_level;
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
// play_fade_gain[1]+play_cut_gain+
|
||||
// play_duck_level,
|
||||
// play_audio_point[1]-(int)pos);
|
||||
fade_volume=play_duck_level;
|
||||
fade_length=play_audio_point[1]-(int)pos;
|
||||
}
|
||||
}
|
||||
else { // FadeUp event in progress, interpolate the gain accordingly
|
||||
int level=(play_fade_gain[0]*fadeup/
|
||||
(play_fade_point[0]-play_audio_point[0]));
|
||||
if (level>play_ducked) {
|
||||
play_cae->
|
||||
setOutputVolume(play_card,play_stream,play_port,
|
||||
play_ducked+play_cut_gain+play_duck_level);
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
play_ducked+play_cut_gain+play_duck_level,
|
||||
fadeup);
|
||||
//play_cae->
|
||||
//setOutputVolume(play_card,play_stream,play_port,
|
||||
// play_ducked+play_cut_gain+play_duck_level);
|
||||
start_volume=play_ducked+play_cut_gain+play_duck_level;
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
// play_ducked+play_cut_gain+play_duck_level,
|
||||
// fadeup);
|
||||
fade_volume=play_ducked+play_cut_gain+play_duck_level;
|
||||
fade_length=fadeup;
|
||||
}
|
||||
else {
|
||||
play_cae->
|
||||
setOutputVolume(play_card,play_stream,play_port,
|
||||
level+play_cut_gain+play_duck_level);
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
play_ducked+play_cut_gain+play_duck_level,
|
||||
fadeup);
|
||||
//play_cae->
|
||||
// setOutputVolume(play_card,play_stream,play_port,
|
||||
// level+play_cut_gain+play_duck_level);
|
||||
start_volume=level+play_cut_gain+play_duck_level;
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
// play_ducked+play_cut_gain+play_duck_level,
|
||||
// fadeup);
|
||||
fade_volume=play_ducked+play_cut_gain+play_duck_level;
|
||||
fade_length=fadeup;
|
||||
}
|
||||
}
|
||||
/*
|
||||
@ -532,7 +548,9 @@ void RDPlayDeck::play(unsigned pos,int segue_start,int segue_end,
|
||||
play_audio_point[1],play_timescale_speed);
|
||||
play_serial=play_cae->startPlayback(play_cut->cutName(),play_card,play_port,
|
||||
play_audio_point[0]+pos,
|
||||
play_audio_point[1],play_timescale_speed);
|
||||
play_audio_point[1],play_timescale_speed,
|
||||
start_volume);
|
||||
play_cae->fadeOutputVolume(play_serial,fade_volume,fade_length);
|
||||
play_start_time=QTime::currentTime();
|
||||
StartTimers(pos);
|
||||
play_state=RDPlayDeck::Playing;
|
||||
@ -599,8 +617,11 @@ void RDPlayDeck::stop(int interval,int gain)
|
||||
level=0;
|
||||
}
|
||||
if(level>play_duck_gain[1]){
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
play_duck_gain[1]+play_cut_gain+play_duck_level,play_duck_down);
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
// play_duck_gain[1]+play_cut_gain+play_duck_level,play_duck_down);
|
||||
play_cae->
|
||||
fadeOutputVolume(play_serial,
|
||||
play_duck_gain[1]+play_cut_gain+play_duck_level,play_duck_down);
|
||||
play_duck_timer->start(play_duck_down);
|
||||
play_duck_down_state=true;
|
||||
play_segue_interval=interval;
|
||||
@ -608,8 +629,11 @@ void RDPlayDeck::stop(int interval,int gain)
|
||||
}
|
||||
else {
|
||||
if(play_point_gain!=0) {
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
play_point_gain+play_cut_gain+play_duck_level,interval);
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
// play_point_gain+play_cut_gain+play_duck_level,interval);
|
||||
play_cae->
|
||||
fadeOutputVolume(play_serial,
|
||||
play_point_gain+play_cut_gain+play_duck_level,interval);
|
||||
}
|
||||
}
|
||||
play_stop_timer->start(interval);
|
||||
@ -624,8 +648,11 @@ void RDPlayDeck::stop(int interval,int gain)
|
||||
void RDPlayDeck::duckDown(int interval)
|
||||
{
|
||||
if(play_duck_gain[1]<0) {
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
play_duck_gain[1]+play_cut_gain+play_duck_level,play_duck_down);
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
// play_duck_gain[1]+play_cut_gain+play_duck_level,play_duck_down);
|
||||
play_cae->
|
||||
fadeOutputVolume(play_serial,
|
||||
play_duck_gain[1]+play_cut_gain+play_duck_level,play_duck_down);
|
||||
play_duck_timer->start(play_duck_down);
|
||||
play_duck_down_state=true;
|
||||
play_segue_interval=interval;
|
||||
@ -638,8 +665,8 @@ void RDPlayDeck::duckVolume(int level,int fade)
|
||||
{
|
||||
play_duck_level=level;
|
||||
if((state()==RDPlayDeck::Playing || state()==RDPlayDeck::Stopping) && fade>0) {
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,play_cut_gain+play_duck_level,
|
||||
fade);
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,play_cut_gain+play_duck_level,fade);
|
||||
play_cae->fadeOutputVolume(play_serial,play_cut_gain+play_duck_level,fade);
|
||||
}
|
||||
}
|
||||
|
||||
@ -748,9 +775,12 @@ void RDPlayDeck::positionTimerData()
|
||||
void RDPlayDeck::fadeTimerData()
|
||||
{
|
||||
if(!play_duck_down_state) {
|
||||
play_cae->
|
||||
fadeOutputVolume(play_card,play_stream,play_port,play_fade_gain[1]+play_cut_gain+play_duck_level,
|
||||
play_fade_down);
|
||||
//play_cae->
|
||||
// fadeOutputVolume(play_card,play_stream,play_port,play_fade_gain[1]+play_cut_gain+play_duck_level,play_fade_down);
|
||||
play_cae->
|
||||
fadeOutputVolume(play_serial,
|
||||
play_fade_gain[1]+play_cut_gain+play_duck_level,
|
||||
play_fade_down);
|
||||
}
|
||||
play_fade_down_state=true;
|
||||
}
|
||||
@ -759,23 +789,32 @@ void RDPlayDeck::fadeTimerData()
|
||||
void RDPlayDeck::duckTimerData()
|
||||
{
|
||||
if (!play_duck_down_state) { //duck up
|
||||
play_cae->
|
||||
fadeOutputVolume(play_card,play_stream,play_port,0+play_cut_gain+play_duck_level,play_duck_up);
|
||||
//play_cae->
|
||||
// fadeOutputVolume(play_card,play_stream,play_port,0+play_cut_gain+play_duck_level,play_duck_up);
|
||||
play_cae->fadeOutputVolume(play_serial,
|
||||
0+play_cut_gain+play_duck_level,play_duck_up);
|
||||
play_ducked=0;
|
||||
}
|
||||
else { //duck down
|
||||
if(play_point_gain!=0) {
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
play_point_gain+play_cut_gain+play_duck_level,
|
||||
play_segue_interval-play_duck_down);
|
||||
if(play_point_gain!=0) {
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
// play_point_gain+play_cut_gain+play_duck_level,
|
||||
// play_segue_interval-play_duck_down);
|
||||
play_cae->fadeOutputVolume(play_serial,
|
||||
play_point_gain+play_cut_gain+play_duck_level,
|
||||
play_segue_interval-play_duck_down);
|
||||
}
|
||||
else {
|
||||
if(play_fade_down_state &&
|
||||
play_fade_gain[1]<play_duck_gain[1]) { //fade down in progress
|
||||
play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
play_fade_gain[1]+play_cut_gain+play_duck_level,
|
||||
play_segue_interval-play_duck_down);
|
||||
}
|
||||
//play_cae->fadeOutputVolume(play_card,play_stream,play_port,
|
||||
// play_fade_gain[1]+play_cut_gain+play_duck_level,
|
||||
// play_segue_interval-play_duck_down);
|
||||
play_cae->
|
||||
fadeOutputVolume(play_serial,
|
||||
play_fade_gain[1]+play_cut_gain+play_duck_level,
|
||||
play_segue_interval-play_duck_down);
|
||||
}
|
||||
}
|
||||
play_duck_down_state=false;
|
||||
}
|
||||
|
@ -162,14 +162,11 @@ void RDSimplePlayer::play(int start_pos)
|
||||
q->value(1).toUInt()-(q->value(0).toUInt()+start_pos),
|
||||
RD_TIMESCALE_DIVISOR,false);
|
||||
*/
|
||||
//
|
||||
// FIXME: implement cut gain!
|
||||
// play_cut_gain=q->value(2).toInt();
|
||||
play_serial=
|
||||
play_cae->startPlayback(play_cut,play_card,play_port,
|
||||
q->value(0).toInt()+start_pos,
|
||||
q->value(1).toInt(),
|
||||
RD_TIMESCALE_DIVISOR);
|
||||
RD_TIMESCALE_DIVISOR,q->value(2).toInt());
|
||||
// play_cae->setPlayPortActive(play_card,play_port,play_stream);
|
||||
if(play_serial>0) {
|
||||
play_event_player->exec(play_start_cart);
|
||||
|
@ -723,7 +723,7 @@ void MainWidget::headButtonData()
|
||||
catch_audition_card,catch_audition_port,
|
||||
cut->startPoint(),
|
||||
cut->startPoint()+RDCATCH_AUDITION_LENGTH,
|
||||
RD_TIMESCALE_DIVISOR);
|
||||
RD_TIMESCALE_DIVISOR,cut->playGain());
|
||||
catch_stop_timer->start(RDCATCH_AUDITION_LENGTH);
|
||||
head_playing=true;
|
||||
delete cut;
|
||||
@ -759,7 +759,7 @@ void MainWidget::tailButtonData()
|
||||
rda->cae()->startPlayback(cut->cutName(),
|
||||
catch_audition_card,catch_audition_port,
|
||||
start_pos,cut->endPoint(),
|
||||
RD_TIMESCALE_DIVISOR);
|
||||
RD_TIMESCALE_DIVISOR,cut->playGain());
|
||||
catch_stop_timer->start(RDCATCH_AUDITION_LENGTH);
|
||||
tail_playing=true;
|
||||
delete cut;
|
||||
|
@ -90,6 +90,18 @@ void CatchEvent::setCutName(const QString &str)
|
||||
}
|
||||
|
||||
|
||||
int CatchEvent::cutPlayGain() const
|
||||
{
|
||||
return catch_cut_play_gain;
|
||||
}
|
||||
|
||||
|
||||
void CatchEvent::setCutPlayGain(int gain)
|
||||
{
|
||||
catch_cut_play_gain=gain;
|
||||
}
|
||||
|
||||
|
||||
QString CatchEvent::tempName() const
|
||||
{
|
||||
return catch_temp_name;
|
||||
@ -686,6 +698,7 @@ void CatchEvent::clear()
|
||||
catch_type=RDRecording::Recording;
|
||||
catch_channel=0;
|
||||
catch_cut_name="";
|
||||
catch_cut_play_gain=0;
|
||||
catch_temp_name="";
|
||||
catch_delete_temp_file=false;
|
||||
for(int i=0;i<7;i++) {
|
||||
|
@ -43,6 +43,8 @@ class CatchEvent
|
||||
void setChannel(unsigned chan);
|
||||
QString cutName() const;
|
||||
void setCutName(const QString &str);
|
||||
int cutPlayGain() const;
|
||||
void setCutPlayGain(int gain);
|
||||
QString tempName() const;
|
||||
void setTempName(const QString &str);
|
||||
bool deleteTempFile() const;
|
||||
@ -148,6 +150,7 @@ class CatchEvent
|
||||
RDRecording::Type catch_type;
|
||||
unsigned catch_channel;
|
||||
QString catch_cut_name;
|
||||
int catch_cut_play_gain;
|
||||
QString catch_temp_name;
|
||||
bool catch_delete_temp_file;
|
||||
bool catch_day_of_week[7];
|
||||
|
@ -1321,7 +1321,8 @@ void MainObject::StartPlayout(int event)
|
||||
catch_playout_port[deck-129],
|
||||
start,
|
||||
end, // FIXME: this parameter does nothing!
|
||||
RD_TIMESCALE_DIVISOR);
|
||||
RD_TIMESCALE_DIVISOR,
|
||||
catch_events[event].cutPlayGain());
|
||||
rda->cae()->setPlayPortActive(catch_playout_card[deck-129],
|
||||
catch_playout_port[deck-129],
|
||||
catch_playout_stream[deck-129]);
|
||||
@ -1551,6 +1552,7 @@ void MainObject::LoadEngine(bool adv_day)
|
||||
rda->syslog(LOG_DEBUG,"rdcatchd engine load starts...");
|
||||
sql=LoadEventSql()+QString(" where `STATION_NAME`='")+
|
||||
RDEscapeString(rda->station()->name())+"'";
|
||||
rda->syslog(LOG_NOTICE,"%s",sql.toUtf8().constData());
|
||||
q=new RDSqlQuery(sql);
|
||||
while(q->next()) {
|
||||
catch_events.push_back(CatchEvent(rda->station(),RDConfiguration()));
|
||||
@ -1565,56 +1567,58 @@ void MainObject::LoadEngine(bool adv_day)
|
||||
QString MainObject::LoadEventSql()
|
||||
{
|
||||
return QString("select ")+
|
||||
"`ID`,"+ // 00
|
||||
"`IS_ACTIVE`,"+ // 01
|
||||
"`TYPE`,"+ // 02
|
||||
"`CHANNEL`,"+ // 03
|
||||
"`CUT_NAME`,"+ // 04
|
||||
"`SUN`,"+ // 05
|
||||
"`MON`,"+ // 06
|
||||
"`TUE`,"+ // 07
|
||||
"`WED`,"+ // 08
|
||||
"`THU`,"+ // 09
|
||||
"`FRI`,"+ // 10
|
||||
"`SAT`,"+ // 11
|
||||
"`START_TIME`,"+ // 12
|
||||
"`LENGTH`,"+ // 13
|
||||
"`START_GPI`,"+ // 14
|
||||
"`END_GPI`,"+ // 15
|
||||
"`TRIM_THRESHOLD`,"+ // 16
|
||||
"`STARTDATE_OFFSET`,"+ // 17
|
||||
"`ENDDATE_OFFSET`,"+ // 18
|
||||
"`FORMAT`," // 19
|
||||
"`CHANNELS`,"+ // 20
|
||||
"`SAMPRATE`,"+ // 21
|
||||
"`BITRATE`,"+ // 22
|
||||
"`MACRO_CART`,"+ // 23
|
||||
"`SWITCH_INPUT`,"+ // 24
|
||||
"`SWITCH_OUTPUT`,"+ // 25
|
||||
"`ONE_SHOT`,"+ // 26
|
||||
"`START_TYPE`,"+ // 27
|
||||
"`START_LENGTH`,"+ // 28
|
||||
"`START_MATRIX`,"+ // 29
|
||||
"`START_LINE`,"+ // 30
|
||||
"`START_OFFSET`,"+ // 31
|
||||
"`END_TYPE`,"+ // 32
|
||||
"`END_TIME`,"+ // 33
|
||||
"`END_LENGTH`,"+ // 34
|
||||
"`END_MATRIX`,"+ // 35
|
||||
"`END_LINE`,"+ // 36
|
||||
"`URL`,"+ // 37
|
||||
"`URL_USERNAME`,"+ // 38
|
||||
"`URL_PASSWORD`,"+ // 39
|
||||
"`URL_USE_ID_FILE`,"+ // 40
|
||||
"`QUALITY`,"+ // 40
|
||||
"`NORMALIZE_LEVEL`,"+ // 41
|
||||
"`ALLOW_MULT_RECS`,"+ // 42
|
||||
"`MAX_GPI_REC_LENGTH`,"+ // 43
|
||||
"`DESCRIPTION`,"+ // 44
|
||||
"`FEED_ID`,"+ // 45
|
||||
"`EVENTDATE_OFFSET`,"+ // 46
|
||||
"`ENABLE_METADATA` "+ // 47
|
||||
"from `RECORDINGS`";
|
||||
"`RECORDINGS`.`ID`,"+ // 00
|
||||
"`RECORDINGS`.`IS_ACTIVE`,"+ // 01
|
||||
"`RECORDINGS`.`TYPE`,"+ // 02
|
||||
"`RECORDINGS`.`CHANNEL`,"+ // 03
|
||||
"`RECORDINGS`.`CUT_NAME`,"+ // 04
|
||||
"`RECORDINGS`.`SUN`,"+ // 05
|
||||
"`RECORDINGS`.`MON`,"+ // 06
|
||||
"`RECORDINGS`.`TUE`,"+ // 07
|
||||
"`RECORDINGS`.`WED`,"+ // 08
|
||||
"`RECORDINGS`.`THU`,"+ // 09
|
||||
"`RECORDINGS`.`FRI`,"+ // 10
|
||||
"`RECORDINGS`.`SAT`,"+ // 11
|
||||
"`RECORDINGS`.`START_TIME`,"+ // 12
|
||||
"`RECORDINGS`.`LENGTH`,"+ // 13
|
||||
"`RECORDINGS`.`START_GPI`,"+ // 14
|
||||
"`RECORDINGS`.`END_GPI`,"+ // 15
|
||||
"`RECORDINGS`.`TRIM_THRESHOLD`,"+ // 16
|
||||
"`RECORDINGS`.`STARTDATE_OFFSET`,"+ // 17
|
||||
"`RECORDINGS`.`ENDDATE_OFFSET`,"+ // 18
|
||||
"`RECORDINGS`.`FORMAT`," // 19
|
||||
"`RECORDINGS`.`CHANNELS`,"+ // 20
|
||||
"`RECORDINGS`.`SAMPRATE`,"+ // 21
|
||||
"`RECORDINGS`.`BITRATE`,"+ // 22
|
||||
"`RECORDINGS`.`MACRO_CART`,"+ // 23
|
||||
"`RECORDINGS`.`SWITCH_INPUT`,"+ // 24
|
||||
"`RECORDINGS`.`SWITCH_OUTPUT`,"+ // 25
|
||||
"`RECORDINGS`.`ONE_SHOT`,"+ // 26
|
||||
"`RECORDINGS`.`START_TYPE`,"+ // 27
|
||||
"`RECORDINGS`.`START_LENGTH`,"+ // 28
|
||||
"`RECORDINGS`.`START_MATRIX`,"+ // 29
|
||||
"`RECORDINGS`.`START_LINE`,"+ // 30
|
||||
"`RECORDINGS`.`START_OFFSET`,"+ // 31
|
||||
"`RECORDINGS`.`END_TYPE`,"+ // 32
|
||||
"`RECORDINGS`.`END_TIME`,"+ // 33
|
||||
"`RECORDINGS`.`END_LENGTH`,"+ // 34
|
||||
"`RECORDINGS`.`END_MATRIX`,"+ // 35
|
||||
"`RECORDINGS`.`END_LINE`,"+ // 36
|
||||
"`RECORDINGS`.`URL`,"+ // 37
|
||||
"`RECORDINGS`.`URL_USERNAME`,"+ // 38
|
||||
"`RECORDINGS`.`URL_PASSWORD`,"+ // 39
|
||||
"`RECORDINGS`.`URL_USE_ID_FILE`,"+ // 40
|
||||
"`RECORDINGS`.`QUALITY`,"+ // 41
|
||||
"`RECORDINGS`.`NORMALIZE_LEVEL`,"+ // 42
|
||||
"`RECORDINGS`.`ALLOW_MULT_RECS`,"+ // 43
|
||||
"`RECORDINGS`.`MAX_GPI_REC_LENGTH`,"+ // 44
|
||||
"`RECORDINGS`.`DESCRIPTION`,"+ // 45
|
||||
"`RECORDINGS`.`FEED_ID`,"+ // 46
|
||||
"`RECORDINGS`.`EVENTDATE_OFFSET`,"+ // 47
|
||||
"`RECORDINGS`.`ENABLE_METADATA`,"+ // 48
|
||||
"`CUTS`.`PLAY_GAIN` "+ // 49
|
||||
"from `RECORDINGS` left join `CUTS` "+
|
||||
"on `RECORDINGS`.`CUT_NAME`=`CUTS`.`CUT_NAME` ";
|
||||
}
|
||||
|
||||
|
||||
@ -1670,6 +1674,7 @@ void MainObject::LoadEvent(RDSqlQuery *q,CatchEvent *e,bool add)
|
||||
e->setDescription(q->value(45).toString());
|
||||
e->setEventdateOffset(q->value(47).toInt());
|
||||
e->setEnableMetadata(RDBool(q->value(48).toString()));
|
||||
e->setCutPlayGain(q->value(49).toInt());
|
||||
|
||||
if(add) {
|
||||
if(e->startType()==RDRecording::GpiStart) {
|
||||
|
@ -654,7 +654,8 @@ void RecordCut::playData()
|
||||
rec_play_serial=
|
||||
rda->cae()->startPlayback(rec_cut->cutName(),
|
||||
rec_card_no[1],rec_port_no[1],
|
||||
start,end,RD_TIMESCALE_DIVISOR);
|
||||
start,end,RD_TIMESCALE_DIVISOR,
|
||||
rec_cut->playGain());
|
||||
// rda->cae()->setPlayPortActive(rec_card_no[1],rec_port_no[1],rec_stream_no[1]);
|
||||
}
|
||||
if(is_ready&&(!is_recording)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user