mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-30 15:42:34 +02:00
2023-09-20 Fred Gleason <fredg@paravelsystems.com>
* Modified 'RDMarkerPlayer' to work with revised 'RDCae'. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
6bcd445650
commit
62f9e7ba86
@ -24429,3 +24429,5 @@
|
||||
* Added definition of RD_CAED_PORT to 'lib/rd.h'.
|
||||
* Added definition of RD_CAED_TIMEOUT_INTERVAL to 'lib/rd.h'.
|
||||
* Fixed a bug in caed(8) that broke metering CAE commands.
|
||||
2023-09-20 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Modified 'RDMarkerPlayer' to work with revised 'RDCae'.
|
||||
|
7
lib/rd.h
7
lib/rd.h
@ -2,7 +2,7 @@
|
||||
//
|
||||
// System-Wide Values for Rivendell
|
||||
//
|
||||
// (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2023 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -106,9 +106,10 @@
|
||||
#define RIPCD_TCP_PORT 5006
|
||||
|
||||
/*
|
||||
* CAED TCP Port
|
||||
* CAED Control Port
|
||||
*/
|
||||
#define CAED_TCP_PORT 5005
|
||||
#define RD_CAED_PORT 5005
|
||||
#define RD_CAED_TIMEOUT_INTERVAL 1000
|
||||
|
||||
/*
|
||||
* RdCatchd TCP Port
|
||||
|
129
lib/rdcae.cpp
129
lib/rdcae.cpp
@ -41,14 +41,25 @@
|
||||
RDCae::RDCae(RDStation *station,RDConfig *config,QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
int flags=-1;
|
||||
// int flags=-1;
|
||||
|
||||
cae_station=station;
|
||||
cae_config=config;
|
||||
cae_connected=false;
|
||||
cae_next_serial_number=1;
|
||||
argnum=0;
|
||||
argptr=0;
|
||||
|
||||
//
|
||||
// Control Connection
|
||||
//
|
||||
cae_socket=new QUdpSocket(this);
|
||||
connect(cae_socket,SIGNAL(readyRead()),this,SLOT(readyReadData()));
|
||||
cae_keepalive_timer=new QTimer(this);
|
||||
cae_keepalive_timer->setSingleShot(false);
|
||||
connect(cae_keepalive_timer,SIGNAL(timeout()),this,SLOT(keepaliveData()));
|
||||
|
||||
/*
|
||||
//
|
||||
// TCP Connection
|
||||
//
|
||||
@ -63,6 +74,7 @@ RDCae::RDCae(RDStation *station,RDConfig *config,QObject *parent)
|
||||
strerror(errno));
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
//
|
||||
// Meter Connection
|
||||
@ -111,10 +123,23 @@ RDCae::RDCae(RDStation *station,RDConfig *config,QObject *parent)
|
||||
|
||||
|
||||
RDCae::~RDCae() {
|
||||
close(cae_socket);
|
||||
delete cae_socket;
|
||||
// close(cae_socket);
|
||||
}
|
||||
|
||||
|
||||
void RDCae::connectToHost(int timeout_msecs)
|
||||
{
|
||||
if(timeout_msecs<0) {
|
||||
timeout_msecs=RD_CAED_TIMEOUT_INTERVAL;
|
||||
}
|
||||
if(timeout_msecs>0) {
|
||||
SendCommand(QString::asprintf("TO %d",timeout_msecs));
|
||||
cae_keepalive_timer->start(timeout_msecs/3);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void RDCae::connectHost()
|
||||
{
|
||||
int count=10;
|
||||
@ -142,6 +167,7 @@ void RDCae::connectHost()
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
void RDCae::enableMetering(QList<int> *cards)
|
||||
@ -164,6 +190,46 @@ 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 serial=cae_next_serial_number++;
|
||||
|
||||
SendCommand(QString::asprintf("PY %d %s %d %d %d %d %d",
|
||||
serial,cutname.toUtf8().constData(),
|
||||
cardnum,portnum,start_pos,end_pos,100000));
|
||||
emit playStarted(serial);
|
||||
|
||||
return serial;
|
||||
}
|
||||
|
||||
|
||||
void RDCae::positionPlay(int serial,int pos)
|
||||
{
|
||||
SendCommand(QString::asprintf("PP %d %d",serial,pos));
|
||||
emit playPositioned(serial,pos);
|
||||
}
|
||||
|
||||
|
||||
void RDCae::pausePlayback(int serial)
|
||||
{
|
||||
SendCommand(QString::asprintf("PE %d",serial));
|
||||
}
|
||||
|
||||
|
||||
void RDCae::resumePlayback(int serial)
|
||||
{
|
||||
SendCommand(QString::asprintf("PR %d",serial));
|
||||
}
|
||||
|
||||
|
||||
void RDCae::stopPlayback(int serial)
|
||||
{
|
||||
SendCommand(QString::asprintf("SP %d",serial));
|
||||
emit playbackStopped(serial);
|
||||
}
|
||||
|
||||
/*
|
||||
bool RDCae::loadPlay(int card,QString name,int *stream,int *handle)
|
||||
{
|
||||
#ifdef DEBUG_LATENCY
|
||||
@ -248,7 +314,7 @@ void RDCae::stopPlay(int handle)
|
||||
#endif // DEBUG_LATENCY
|
||||
SendCommand(QString::asprintf("SP %d!",handle));
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
void RDCae::loadRecord(int card,int stream,QString name,
|
||||
AudioCoding coding,int chan,int samp_rate,
|
||||
@ -353,7 +419,7 @@ unsigned RDCae::playPosition(int handle)
|
||||
|
||||
void RDCae::requestTimescale(int card)
|
||||
{
|
||||
SendCommand(QString::asprintf("TS %d!",card));
|
||||
// SendCommand(QString::asprintf("TS %d!",card));
|
||||
}
|
||||
|
||||
|
||||
@ -374,6 +440,17 @@ void RDCae::setPlayPortActive(int card,int port,int stream)
|
||||
}
|
||||
|
||||
|
||||
void RDCae::readyReadData()
|
||||
{
|
||||
char data[1501];
|
||||
int n;
|
||||
|
||||
while((n=cae_socket->readDatagram(data,1500))>0) {
|
||||
ProcessCommand(QString::fromUtf8(QByteArray(data,n)));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void RDCae::readyData()
|
||||
{
|
||||
readyData(0,0,"");
|
||||
@ -412,15 +489,15 @@ void RDCae::readyData(int *stream,int *handle,QString name)
|
||||
args[argnum++][argptr]=0;
|
||||
if(stream==NULL) {
|
||||
cmd.load(args,argnum,argptr);
|
||||
/*
|
||||
//
|
||||
// ************************************
|
||||
printf("DISPATCHING: ");
|
||||
for(int z=0;z<cmd.argNum();z++) {
|
||||
printf(" %s",cmd.arg(z));
|
||||
}
|
||||
// printf("DISPATCHING: ");
|
||||
//for(int z=0;z<cmd.argNum();z++) {
|
||||
// printf(" %s",cmd.arg(z));
|
||||
// }
|
||||
printf("\n");
|
||||
// ************************************
|
||||
*/
|
||||
//
|
||||
DispatchCommand(&cmd);
|
||||
}
|
||||
else {
|
||||
@ -455,7 +532,7 @@ void RDCae::readyData(int *stream,int *handle,QString name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
void RDCae::clockData()
|
||||
{
|
||||
@ -473,6 +550,19 @@ void RDCae::clockData()
|
||||
}
|
||||
|
||||
|
||||
void RDCae::keepaliveData()
|
||||
{
|
||||
SendCommand("TH");
|
||||
}
|
||||
|
||||
|
||||
void RDCae::SendCommand(const QString &cmd)
|
||||
{
|
||||
cae_socket->writeDatagram(cmd.toUtf8(),
|
||||
rda->station()->caeAddress(rda->config()),RD_CAED_PORT);
|
||||
}
|
||||
|
||||
/*
|
||||
void RDCae::SendCommand(QString cmd)
|
||||
{
|
||||
int len=cmd.toUtf8().length();
|
||||
@ -482,8 +572,23 @@ void RDCae::SendCommand(QString cmd)
|
||||
len-n,cmd.toUtf8().constData());
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void RDCae::ProcessCommand(const QString &cmd)
|
||||
{
|
||||
QStringList f0=cmd.split(" ",QString::SkipEmptyParts);
|
||||
bool ok=false;
|
||||
int serial;
|
||||
|
||||
if((f0.at(0)=="SP")&&(f0.size()==2)) { // Playback Stopped
|
||||
serial=f0.at(1).toInt(&ok);
|
||||
if(ok&&(serial>0)) {
|
||||
emit playbackStopped(serial);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void RDCae::DispatchCommand(RDCmdCache *cmd)
|
||||
{
|
||||
int pos;
|
||||
@ -621,7 +726,7 @@ void RDCae::DispatchCommand(RDCmdCache *cmd)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
int RDCae::CardNumber(const char *arg)
|
||||
{
|
||||
|
40
lib/rdcae.h
40
lib/rdcae.h
@ -23,6 +23,7 @@
|
||||
|
||||
#include <QList>
|
||||
#include <QObject>
|
||||
#include <QTimer>
|
||||
#include <QUdpSocket>
|
||||
|
||||
#include <rd.h>
|
||||
@ -40,13 +41,22 @@ class RDCae : public QObject
|
||||
enum AudioCoding {Pcm16=0,MpegL1=1,MpegL2=2,MpegL3=3,Pcm24=4};
|
||||
RDCae(RDStation *station,RDConfig *config,QObject *parent=0);
|
||||
~RDCae();
|
||||
void connectHost();
|
||||
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);
|
||||
void positionPlay(int serial,int pos);
|
||||
void pausePlayback(int serial);
|
||||
void resumePlayback(int serial);
|
||||
void stopPlayback(int serial);
|
||||
/*
|
||||
bool loadPlay(int card,QString name,int *stream,int *handle);
|
||||
void unloadPlay(int handle);
|
||||
void positionPlay(int handle,int msec);
|
||||
void play(int handle,unsigned length,int speed,bool pitch);
|
||||
void stopPlay(int handle);
|
||||
*/
|
||||
|
||||
void loadRecord(int card,int stream,QString name,AudioCoding coding,
|
||||
int chan,int samp_rate,int bit_rate);
|
||||
void unloadRecord(int card,int stream);
|
||||
@ -66,11 +76,13 @@ class RDCae : public QObject
|
||||
void setPlayPortActive(int card,int port,int stream);
|
||||
|
||||
signals:
|
||||
void isConnected(bool state);
|
||||
void playLoaded(int handle);
|
||||
// void isConnected(bool state);
|
||||
// void playLoaded(int handle);
|
||||
void playPositioned(int handle,unsigned msec);
|
||||
void playing(int handle);
|
||||
void playStopped(int handle);
|
||||
// void playing(int handle);
|
||||
void playStarted(int serial);
|
||||
void playbackStopped(int serial);
|
||||
// void playStopped(int handle);
|
||||
void playUnloaded(int handle);
|
||||
void recordLoaded(int card,int stream);
|
||||
void recording(int card,int stream);
|
||||
@ -83,18 +95,22 @@ class RDCae : public QObject
|
||||
void timescalingSupported(int card,bool state);
|
||||
|
||||
private slots:
|
||||
void readyData();
|
||||
void readyData(int *stream,int *handle,QString name);
|
||||
void readyReadData();
|
||||
// void readyData();
|
||||
// void readyData(int *stream,int *handle,QString name);
|
||||
void clockData();
|
||||
void keepaliveData();
|
||||
|
||||
private:
|
||||
void SendCommand(QString cmd);
|
||||
void DispatchCommand(RDCmdCache *cmd);
|
||||
void SendCommand(const QString &cmd);
|
||||
// void SendCommand(QString cmd);
|
||||
// void DispatchCommand(RDCmdCache *cmd);
|
||||
void ProcessCommand(const QString &cmd);
|
||||
int CardNumber(const char *arg);
|
||||
int StreamNumber(const char *arg);
|
||||
int GetHandle(const char *arg);
|
||||
void UpdateMeters();
|
||||
int cae_socket;
|
||||
// int cae_socket;
|
||||
bool debug;
|
||||
char args[CAE_MAX_ARGS][CAE_MAX_LENGTH];
|
||||
int argnum;
|
||||
@ -114,6 +130,10 @@ class RDCae : public QObject
|
||||
std::vector<RDCmdCache> delayed_cmds;
|
||||
RDStation *cae_station;
|
||||
RDConfig *cae_config;
|
||||
|
||||
QUdpSocket *cae_socket;
|
||||
QTimer *cae_keepalive_timer;
|
||||
int cae_next_serial_number;
|
||||
};
|
||||
|
||||
|
||||
|
@ -83,7 +83,7 @@ RDLogPlay::RDLogPlay(int id,RDEventPlayer *player,bool enable_cue,QObject *paren
|
||||
// CAE Connection
|
||||
//
|
||||
play_cae=new RDCae(rda->station(),rda->config(),parent);
|
||||
play_cae->connectHost();
|
||||
play_cae->connectToHost();
|
||||
|
||||
for(int i=0;i<2;i++) {
|
||||
play_card[i]=0;
|
||||
|
@ -28,18 +28,19 @@ RDMarkerPlayer::RDMarkerPlayer(int card,int port,QWidget *parent)
|
||||
d_cards.push_back(card);
|
||||
d_port=port;
|
||||
d_cae_stream=-1;
|
||||
d_cae_handle=-1;
|
||||
d_cae_serial=-1;
|
||||
d_is_playing=false;
|
||||
d_looping=false;
|
||||
d_cursor_position=0;
|
||||
|
||||
//
|
||||
// CAE
|
||||
//
|
||||
rda->cae()->enableMetering(&d_cards);
|
||||
connect(rda->cae(),SIGNAL(playing(int)),this,SLOT(caePlayedData(int)));
|
||||
connect(rda->cae(),SIGNAL(playStopped(int)),this,SLOT(caePausedData(int)));
|
||||
connect(rda->cae(),SIGNAL(playPositionChanged(int,unsigned)),
|
||||
this,SLOT(caePositionData(int,unsigned)));
|
||||
connect(rda->cae(),SIGNAL(playbackStopped(int)),
|
||||
this,SLOT(playbackStoppedData(int)));
|
||||
// connect(rda->cae(),SIGNAL(playPositionChanged(int,unsigned)),
|
||||
// this,SLOT(caePositionData(int,unsigned)));
|
||||
|
||||
//
|
||||
// Marker Readouts
|
||||
@ -101,6 +102,20 @@ RDMarkerPlayer::RDMarkerPlayer(int card,int port,QWidget *parent)
|
||||
d_position_edit->
|
||||
setStyleSheet("background-color: "+palette().color(QPalette::Base).name());
|
||||
|
||||
//
|
||||
// Position Timer
|
||||
//
|
||||
d_position_timer=new QTimer(this);
|
||||
d_position_timer->setSingleShot(false);
|
||||
connect(d_position_timer,SIGNAL(timeout()),this,SLOT(positionTimeoutData()));
|
||||
|
||||
//
|
||||
// Stop Timer
|
||||
//
|
||||
d_stop_timer=new QTimer(this);
|
||||
d_stop_timer->setSingleShot(true);
|
||||
connect(d_stop_timer,SIGNAL(timeout()),this,SLOT(buttonStopData()));
|
||||
|
||||
//
|
||||
// Goto Buttons
|
||||
//
|
||||
@ -230,13 +245,8 @@ QSizePolicy RDMarkerPlayer::sizePolicy() const
|
||||
bool RDMarkerPlayer::setCut(unsigned cartnum,int cutnum)
|
||||
{
|
||||
clearCut();
|
||||
|
||||
if(!rda->cae()->loadPlay(d_cards.first(),RDCut::cutName(cartnum,cutnum),
|
||||
&d_cae_stream,&d_cae_handle)) {
|
||||
return false;
|
||||
}
|
||||
rda->cae()->positionPlay(d_cae_handle,0);
|
||||
rda->cae()->setOutputPort(d_cards.first(),d_cae_stream,d_port);
|
||||
d_cart_number=cartnum;
|
||||
d_cut_number=cutnum;
|
||||
|
||||
QString sql=QString("select ")+
|
||||
"`START_POINT`,"+ // 00
|
||||
@ -247,10 +257,11 @@ bool RDMarkerPlayer::setCut(unsigned cartnum,int cutnum)
|
||||
"`SEGUE_END_POINT`,"+ // 05
|
||||
"`HOOK_START_POINT`,"+ // 06
|
||||
"`HOOK_END_POINT`,"+ // 07
|
||||
"`FADEDOWN_POINT`,"+ // 08
|
||||
"`FADEUP_POINT`,"+ // 09
|
||||
"`FADEDOWN_POINT`,"+ // 08
|
||||
"`FADEUP_POINT`,"+ // 09
|
||||
"`SEGUE_GAIN`,"+ // 10
|
||||
"`PLAY_GAIN` "+ // 11
|
||||
"`PLAY_GAIN`,"+ // 11
|
||||
"`LENGTH` "+ // 12
|
||||
"from `CUTS` where "+
|
||||
"`CUT_NAME`='"+RDEscapeString(RDCut::cutName(cartnum,cutnum))+"'";
|
||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||
@ -265,6 +276,7 @@ bool RDMarkerPlayer::setCut(unsigned cartnum,int cutnum)
|
||||
d_fadedown_readout->setValue(role,q->value(i).toInt());
|
||||
setPointerValue(role,q->value(i).toInt());
|
||||
setSelectedMarkers(RDMarkerHandle::LastRole,RDMarkerHandle::LastRole);
|
||||
d_cut_length=q->value(12).toInt();
|
||||
}
|
||||
d_no_segue_fade_check->setChecked(q->value(10).toInt()==0);
|
||||
d_play_gain_spin->setValue(q->value(11).toInt()/100);
|
||||
@ -277,18 +289,18 @@ bool RDMarkerPlayer::setCut(unsigned cartnum,int cutnum)
|
||||
|
||||
void RDMarkerPlayer::clearCut()
|
||||
{
|
||||
if(d_cae_handle>=0) {
|
||||
rda->cae()->stopPlay(d_cae_handle);
|
||||
rda->cae()->unloadPlay(d_cae_handle);
|
||||
if(d_cae_serial>=0) {
|
||||
rda->cae()->stopPlayback(d_cae_serial);
|
||||
d_cae_stream=-1;
|
||||
d_cae_handle=-1;
|
||||
d_cut_length=0;
|
||||
d_is_playing=false;
|
||||
d_position_timer->stop();
|
||||
}
|
||||
for(int i=0;i<RDMarkerHandle::LastRole;i++) {
|
||||
d_pointers[i]=-1;
|
||||
}
|
||||
d_looping=false;
|
||||
d_stopping=false;
|
||||
// d_stopping=false;
|
||||
}
|
||||
|
||||
|
||||
@ -300,7 +312,10 @@ int RDMarkerPlayer::cursorPosition() const
|
||||
|
||||
void RDMarkerPlayer::setCursorPosition(int msec)
|
||||
{
|
||||
rda->cae()->positionPlay(d_cae_handle,msec);
|
||||
rda->cae()->positionPlay(d_cae_serial,msec);
|
||||
d_cursor_position=msec;
|
||||
positionTimeoutData();
|
||||
d_stop_timer->stop();
|
||||
}
|
||||
|
||||
|
||||
@ -370,42 +385,39 @@ void RDMarkerPlayer::buttonPlayData()
|
||||
{
|
||||
d_active_play_button=d_play_button;
|
||||
|
||||
if(d_cae_handle>=0) {
|
||||
if(d_cae_serial>=0) {
|
||||
if(d_is_playing) {
|
||||
rda->cae()->stopPlay(d_cae_handle);
|
||||
rda->cae()->stopPlayback(d_cae_serial);
|
||||
}
|
||||
}
|
||||
d_loop_start_msec=d_cursor_position;
|
||||
d_loop_start_length=0;
|
||||
rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false);
|
||||
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);
|
||||
Play();
|
||||
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());
|
||||
d_meter_timer->start(RD_METER_UPDATE_INTERVAL);
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::buttonPlayFromData()
|
||||
{
|
||||
d_active_play_button=d_play_from_button;
|
||||
if(d_cae_handle>=0) {
|
||||
if(d_is_playing) {
|
||||
rda->cae()->stopPlay(d_cae_handle);
|
||||
}
|
||||
}
|
||||
Stop();
|
||||
if(d_selected_markers[RDMarkerHandle::Start]!=RDMarkerHandle::LastRole) {
|
||||
d_loop_start_msec=d_pointers[d_selected_markers[0]];
|
||||
rda->cae()->positionPlay(d_cae_handle,d_loop_start_msec);
|
||||
d_loop_start_length=0;
|
||||
rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false);
|
||||
d_cursor_position=d_loop_start_msec;
|
||||
d_cae_serial=rda->cae()->
|
||||
startPlayback(RDCut::cutName(d_cart_number,d_cut_number),
|
||||
d_cards.first(),d_port,
|
||||
d_loop_start_msec,d_cut_length,
|
||||
RD_TIMESCALE_DIVISOR);
|
||||
Play();
|
||||
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());
|
||||
d_meter_timer->start(RD_METER_UPDATE_INTERVAL);
|
||||
}
|
||||
}
|
||||
|
||||
@ -413,11 +425,7 @@ void RDMarkerPlayer::buttonPlayFromData()
|
||||
void RDMarkerPlayer::buttonPlayToData()
|
||||
{
|
||||
d_active_play_button=d_play_to_button;
|
||||
if(d_cae_handle>=0) {
|
||||
if(d_is_playing) {
|
||||
rda->cae()->stopPlay(d_cae_handle);
|
||||
}
|
||||
}
|
||||
Stop();
|
||||
if(d_selected_markers[RDMarkerHandle::End]!=RDMarkerHandle::LastRole) {
|
||||
d_loop_start_msec=d_pointers[d_selected_markers[1]]-2000;
|
||||
d_loop_start_length=2000;
|
||||
@ -425,26 +433,23 @@ void RDMarkerPlayer::buttonPlayToData()
|
||||
d_loop_start_msec=0;
|
||||
d_loop_start_length=d_pointers[d_selected_markers[1]];
|
||||
}
|
||||
rda->cae()->positionPlay(d_cae_handle,d_loop_start_msec);
|
||||
rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false);
|
||||
d_cursor_position=d_loop_start_msec;
|
||||
d_cae_serial=rda->cae()->
|
||||
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);
|
||||
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!
|
||||
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());
|
||||
d_meter_timer->start(RD_METER_UPDATE_INTERVAL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::buttonStopData()
|
||||
{
|
||||
if(d_cae_handle>=0) {
|
||||
if(d_is_playing) {
|
||||
d_stopping=true;
|
||||
rda->cae()->stopPlay(d_cae_handle);
|
||||
}
|
||||
}
|
||||
Stop();
|
||||
}
|
||||
|
||||
|
||||
@ -531,29 +536,41 @@ void RDMarkerPlayer::meterData()
|
||||
d_meter->setRightPeakBar(lvls[1]);
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::caePlayedData(int handle)
|
||||
/*
|
||||
void RDMarkerPlayer::caePlayedData(int serial)
|
||||
{
|
||||
if(handle==d_cae_handle) {
|
||||
printf("d_cae_serial2: %d serial: %d\n",d_cae_serial,serial);
|
||||
printf("HERE10\n");
|
||||
if(serial==d_cae_serial) {
|
||||
printf("HERE11\n");
|
||||
if(!d_is_playing) {
|
||||
printf("HERE12\n");
|
||||
d_active_play_button->setState(RDTransportButton::On);
|
||||
d_stop_button->setState(RDTransportButton::Off);
|
||||
d_is_playing=true;
|
||||
if(!d_position_timer->isActive()) {
|
||||
printf("HERE13\n");
|
||||
d_position_timer->start(RDMARKERPLAYER_POSITION_INTERVAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
void RDMarkerPlayer::caePausedData(int handle)
|
||||
void RDMarkerPlayer::playbackStoppedData(int serial)
|
||||
{
|
||||
if(handle==d_cae_handle) {
|
||||
if(serial==d_cae_serial) {
|
||||
if(d_is_playing) {
|
||||
if(d_looping&&(!d_stopping)) {
|
||||
rda->cae()->positionPlay(d_cae_handle,d_loop_start_msec);
|
||||
rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false);
|
||||
if(d_looping) {
|
||||
rda->cae()->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);
|
||||
Play();
|
||||
rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream);
|
||||
}
|
||||
else {
|
||||
d_stopping=false;
|
||||
if(d_meter_timer->isActive()) {
|
||||
d_meter_timer->stop();
|
||||
d_meter->setLeftPeakBar(-10000);
|
||||
@ -564,19 +581,22 @@ void RDMarkerPlayer::caePausedData(int handle)
|
||||
d_play_to_button->setState(RDTransportButton::Off);
|
||||
d_stop_button->setState(RDTransportButton::On);
|
||||
d_is_playing=false;
|
||||
d_position_timer->stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::caePositionData(int handle,unsigned msec)
|
||||
void RDMarkerPlayer::caePositionData(int serial,unsigned msec)
|
||||
{
|
||||
if(handle==d_cae_handle) {
|
||||
/*
|
||||
if(serial==d_cae_serial) {
|
||||
d_position_edit->setText(RDGetTimeLength(msec-d_pointers[RDMarkerHandle::CutStart],true,true));
|
||||
d_cursor_position=msec;
|
||||
emit cursorPositionChanged(msec);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -587,6 +607,49 @@ void RDMarkerPlayer::trimThresholdChanged(int dbfs)
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::positionTimeoutData()
|
||||
{
|
||||
d_cursor_position+=RDMARKERPLAYER_POSITION_INTERVAL;
|
||||
d_position_edit->setText(RDGetTimeLength(d_cursor_position-d_pointers[RDMarkerHandle::CutStart],true,true));
|
||||
emit cursorPositionChanged(d_cursor_position);
|
||||
printf("d_cursor_position: %d\n",d_cursor_position);
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::Play()
|
||||
{
|
||||
if(!d_is_playing) {
|
||||
d_active_play_button->setState(RDTransportButton::On);
|
||||
d_stop_button->setState(RDTransportButton::Off);
|
||||
d_is_playing=true;
|
||||
if(!d_position_timer->isActive()) {
|
||||
d_position_timer->start(RDMARKERPLAYER_POSITION_INTERVAL);
|
||||
}
|
||||
}
|
||||
d_meter_timer->start(RD_METER_UPDATE_INTERVAL);
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::Stop()
|
||||
{
|
||||
if(d_cae_serial>=0) {
|
||||
if(d_is_playing) {
|
||||
rda->cae()->stopPlayback(d_cae_serial);
|
||||
d_stop_timer->stop();
|
||||
d_position_timer->stop();
|
||||
d_cae_serial=-1;
|
||||
d_is_playing=false;
|
||||
d_play_button->setState(RDTransportButton::Off);
|
||||
d_play_from_button->setState(RDTransportButton::Off);
|
||||
d_play_to_button->setState(RDTransportButton::Off);
|
||||
d_stop_button->setState(RDTransportButton::On);
|
||||
d_meter->setLeftPeakBar(RD_MUTE_DEPTH);
|
||||
d_meter->setRightPeakBar(RD_MUTE_DEPTH);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RDMarkerPlayer::resizeEvent(QResizeEvent *)
|
||||
{
|
||||
for(int i=0;i<4;i++) {
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include <rdwidget.h>
|
||||
|
||||
#define RDMARKERPLAYER_READOUT_QUAN 7
|
||||
#define RDMARKERPLAYER_POSITION_INTERVAL 100
|
||||
|
||||
class RDMarkerPlayer : public RDWidget
|
||||
{
|
||||
@ -80,16 +81,18 @@ class RDMarkerPlayer : public RDWidget
|
||||
void buttonTrimEndData();
|
||||
void readoutClickedData(int role);
|
||||
void meterData();
|
||||
void caePlayedData(int handle);
|
||||
void caePausedData(int handle);
|
||||
void playbackStoppedData(int serial);
|
||||
void caePositionData(int handle,unsigned pos);
|
||||
void trimThresholdChanged(int dbfs);
|
||||
void positionTimeoutData();
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *);
|
||||
void paintEvent(QPaintEvent *e);
|
||||
|
||||
private:
|
||||
void Play();
|
||||
void Stop();
|
||||
QLabel *d_readout_labels[RDMARKERPLAYER_READOUT_QUAN];
|
||||
QSignalMapper *d_readout_mapper;
|
||||
RDMarkerReadout *d_cut_readout;
|
||||
@ -123,15 +126,22 @@ class RDMarkerPlayer : public RDWidget
|
||||
QList<int> d_cards;
|
||||
int d_port;
|
||||
int d_cae_stream;
|
||||
int d_cae_handle;
|
||||
// int d_cae_handle;
|
||||
int d_cae_serial;
|
||||
unsigned d_cart_number;
|
||||
int d_cut_number;
|
||||
|
||||
bool d_is_playing;
|
||||
RDMarkerHandle::PointerRole d_selected_markers[2];
|
||||
int d_pointers[RDMarkerHandle::LastRole];
|
||||
bool d_looping;
|
||||
bool d_stopping;
|
||||
int d_loop_start_msec;
|
||||
int d_loop_start_length;
|
||||
int d_cursor_position;
|
||||
int d_cut_length;
|
||||
|
||||
QTimer *d_position_timer;
|
||||
QTimer *d_stop_timer;
|
||||
};
|
||||
|
||||
|
||||
|
@ -86,8 +86,8 @@ RDPlayDeck::RDPlayDeck(RDCae *cae,int id,QObject *parent)
|
||||
RDPlayDeck::~RDPlayDeck()
|
||||
{
|
||||
if(play_state!=RDPlayDeck::Stopped) {
|
||||
play_cae->stopPlay(play_handle);
|
||||
play_cae->unloadPlay(play_handle);
|
||||
play_cae->stopPlayback(play_handle);
|
||||
// play_cae->unloadPlay(play_handle);
|
||||
}
|
||||
}
|
||||
|
||||
@ -236,12 +236,14 @@ bool RDPlayDeck::setCart(RDLogLine *logline,bool rotate)
|
||||
}
|
||||
play_duck_gain[0]=logline->duckUpGain();
|
||||
play_duck_gain[1]=logline->duckDownGain();
|
||||
/*
|
||||
if(play_state!=RDPlayDeck::Paused) {
|
||||
if(!play_cae->loadPlay(play_card,play_cut->cutName(),
|
||||
&play_stream,&play_handle)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
*/
|
||||
play_state=RDPlayDeck::Stopped;
|
||||
return true;
|
||||
}
|
||||
@ -349,7 +351,7 @@ void RDPlayDeck::clear()
|
||||
break;
|
||||
|
||||
case RDPlayDeck::Paused:
|
||||
play_cae->unloadPlay(play_handle);
|
||||
// play_cae->unloadPlay(play_handle);
|
||||
emit stateChanged(play_id,RDPlayDeck::Stopped);
|
||||
break;
|
||||
|
||||
@ -366,10 +368,10 @@ void RDPlayDeck::reset()
|
||||
switch(play_state) {
|
||||
case RDPlayDeck::Playing:
|
||||
case RDPlayDeck::Stopping:
|
||||
play_cae->stopPlay(play_handle);
|
||||
play_cae->stopPlayback(play_handle);
|
||||
|
||||
case RDPlayDeck::Paused:
|
||||
play_cae->unloadPlay(play_handle);
|
||||
// play_cae->unloadPlay(play_handle);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -509,11 +511,13 @@ void RDPlayDeck::play(unsigned pos,int segue_start,int segue_end,
|
||||
fadeup);
|
||||
}
|
||||
}
|
||||
/*
|
||||
play_cae->
|
||||
play(play_handle,
|
||||
(int)(100000.0*(double)(play_audio_point[1]-play_audio_point[0]-pos)/
|
||||
(double)play_timescale_speed),
|
||||
play_timescale_speed,false);
|
||||
*/
|
||||
play_start_time=QTime::currentTime();
|
||||
StartTimers(pos);
|
||||
play_state=RDPlayDeck::Playing;
|
||||
@ -531,7 +535,7 @@ void RDPlayDeck::pause()
|
||||
{
|
||||
pause_called=true;
|
||||
play_state=RDPlayDeck::Paused;
|
||||
play_cae->stopPlay(play_handle);
|
||||
// play_cae->stopPlay(play_handle);
|
||||
}
|
||||
|
||||
|
||||
@ -546,7 +550,7 @@ void RDPlayDeck::stop()
|
||||
else {
|
||||
stop_called=true;
|
||||
play_state=RDPlayDeck::Stopping;
|
||||
play_cae->stopPlay(play_handle);
|
||||
// play_cae->stopPlay(play_handle);
|
||||
}
|
||||
}
|
||||
|
||||
@ -646,7 +650,7 @@ void RDPlayDeck::playStoppedData(int handle)
|
||||
emit stateChanged(play_id,RDPlayDeck::Paused);
|
||||
}
|
||||
else {
|
||||
play_cae->unloadPlay(play_handle);
|
||||
// play_cae->unloadPlay(play_handle);
|
||||
|
||||
play_handle=-1;
|
||||
play_state=RDPlayDeck::Stopped;
|
||||
|
@ -145,8 +145,8 @@ void RDSimplePlayer::play(int start_pos)
|
||||
delete cart;
|
||||
}
|
||||
if(!play_cut.isEmpty()) {
|
||||
play_cae->
|
||||
loadPlay(play_card,play_cut,&play_stream,&handle);
|
||||
// play_cae->
|
||||
// loadPlay(play_card,play_cut,&play_stream,&handle);
|
||||
|
||||
if(play_stream<0) {
|
||||
return;
|
||||
@ -167,9 +167,11 @@ void RDSimplePlayer::play(int 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);
|
||||
*/
|
||||
play_cae->setPlayPortActive(play_card,play_port,play_stream);
|
||||
}
|
||||
delete q;
|
||||
@ -182,7 +184,7 @@ void RDSimplePlayer::stop()
|
||||
if(!play_is_playing) {
|
||||
return;
|
||||
}
|
||||
play_cae->stopPlay(play_handles.back());
|
||||
// play_cae->stopPlay(play_handles.back());
|
||||
}
|
||||
|
||||
|
||||
@ -210,7 +212,7 @@ void RDSimplePlayer::playStoppedData(int handle)
|
||||
if(handle!=play_handles.front()) {
|
||||
return;
|
||||
}
|
||||
play_cae->unloadPlay(play_handles.front());
|
||||
// play_cae->unloadPlay(play_handles.front());
|
||||
play_event_player->exec(play_end_cart);
|
||||
play_start_button->off();
|
||||
play_stop_button->on();
|
||||
|
@ -238,7 +238,7 @@ MainWidget::MainWidget(RDConfig *config,QWidget *parent)
|
||||
//
|
||||
connect(rda->cae(),SIGNAL(isConnected(bool)),
|
||||
this,SLOT(caeConnectedData(bool)));
|
||||
rda->cae()->connectHost();
|
||||
rda->cae()->connectToHost();
|
||||
|
||||
//
|
||||
// Set Audio Assignments
|
||||
|
@ -63,7 +63,7 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
||||
//
|
||||
connect(rda->cae(),SIGNAL(isConnected(bool)),
|
||||
this,SLOT(caeConnectedData(bool)));
|
||||
rda->cae()->connectHost();
|
||||
rda->cae()->connectToHost();
|
||||
|
||||
//
|
||||
// RIPC Connection
|
||||
|
@ -149,7 +149,7 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
||||
connect(rda->cae(),SIGNAL(playing(int)),this,SLOT(playedData(int)));
|
||||
connect(rda->cae(),SIGNAL(playStopped(int)),
|
||||
this,SLOT(playStoppedData(int)));
|
||||
rda->cae()->connectHost();
|
||||
rda->cae()->connectToHost();
|
||||
|
||||
//
|
||||
// Deck Monitors
|
||||
@ -697,6 +697,7 @@ void MainWidget::reportsButtonData()
|
||||
|
||||
void MainWidget::headButtonData()
|
||||
{
|
||||
/*
|
||||
QModelIndexList rows=catch_recordings_view->selectionModel()->selectedRows();
|
||||
|
||||
if(rows.size()!=1) {
|
||||
@ -723,11 +724,13 @@ void MainWidget::headButtonData()
|
||||
head_playing=true;
|
||||
delete cut;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::tailButtonData()
|
||||
{
|
||||
/*
|
||||
QModelIndexList rows=catch_recordings_view->selectionModel()->selectedRows();
|
||||
|
||||
if(rows.size()!=1) {
|
||||
@ -758,15 +761,18 @@ void MainWidget::tailButtonData()
|
||||
tail_playing=true;
|
||||
delete cut;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
void MainWidget::stopButtonData()
|
||||
{
|
||||
/*
|
||||
if(head_playing||tail_playing) { // Stop Play
|
||||
rda->cae()->stopPlay(catch_play_handle);
|
||||
rda->cae()->unloadPlay(catch_play_handle);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -804,7 +810,7 @@ void MainWidget::playStoppedData(int handle)
|
||||
catch_head_button->off();
|
||||
catch_tail_button->off();
|
||||
catch_stop_button->on();
|
||||
rda->cae()->unloadPlay(catch_play_handle);
|
||||
// rda->cae()->unloadPlay(catch_play_handle);
|
||||
}
|
||||
|
||||
|
||||
|
@ -225,7 +225,8 @@ MainObject::MainObject(QObject *parent)
|
||||
this,SLOT(playStoppedData(int)));
|
||||
connect(rda->cae(),SIGNAL(playUnloaded(int)),
|
||||
this,SLOT(playUnloadedData(int)));
|
||||
rda->cae()->connectHost();
|
||||
rda->syslog(LOG_DEBUG,"starting CAE connection");
|
||||
rda->cae()->connectToHost();
|
||||
|
||||
//
|
||||
// Sound Initialization
|
||||
@ -394,7 +395,7 @@ void MainObject::catchEventReceivedData(RDCatchEvent *evt)
|
||||
if((evt->deckChannel()>128)&&(evt->deckChannel()<(MAX_DECKS+129))) {
|
||||
switch(catch_playout_deck_status[evt->deckChannel()-129]) {
|
||||
case RDDeck::Recording:
|
||||
rda->cae()->stopPlay(catch_playout_handle[evt->deckChannel()-129]);
|
||||
// rda->cae()->stopPlay(catch_playout_handle[evt->deckChannel()-129]);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -985,7 +986,7 @@ void MainObject::playStoppedData(int handle)
|
||||
catch_playout_card[deck-129],
|
||||
catch_playout_stream[deck-129]);
|
||||
}
|
||||
rda->cae()->unloadPlay(handle);
|
||||
// rda->cae()->unloadPlay(handle);
|
||||
}
|
||||
|
||||
|
||||
@ -1304,6 +1305,7 @@ bool MainObject::StartRecording(int event)
|
||||
|
||||
void MainObject::StartPlayout(int event)
|
||||
{
|
||||
/*
|
||||
unsigned deck=catch_events[event].channel();
|
||||
if((catch_playout_card[deck-129]<0)) {
|
||||
rda->syslog(LOG_WARNING, "invalid audio device for deck: %d, event: %d",
|
||||
@ -1359,6 +1361,7 @@ void MainObject::StartPlayout(int event)
|
||||
//
|
||||
catch_playout_name[deck-129]=catch_events[event].cutName();
|
||||
catch_playout_event_id[deck-129]=event;
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -1775,7 +1778,7 @@ void MainObject::LoadDeckList()
|
||||
catch_playout_deck_status[i]=RDDeck::Recording;
|
||||
}
|
||||
else {
|
||||
rda->cae()->stopPlay(catch_playout_handle[i]);
|
||||
// rda->cae()->stopPlay(catch_playout_handle[i]);
|
||||
catch_playout_deck_status[i]=RDDeck::Offline;
|
||||
}
|
||||
}
|
||||
|
@ -130,9 +130,13 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
||||
//
|
||||
// CAE Connection
|
||||
//
|
||||
connect(rda->cae(),SIGNAL(isConnected(bool)),
|
||||
this,SLOT(caeConnectedData(bool)));
|
||||
rda->cae()->connectHost();
|
||||
// connect(rda->cae(),SIGNAL(isConnected(bool)),
|
||||
// this,SLOT(caeConnectedData(bool)));
|
||||
rda->cae()->connectToHost();
|
||||
QList<int> cards;
|
||||
cards.push_back(rda->libraryConf()->inputCard());
|
||||
cards.push_back(rda->libraryConf()->outputCard());
|
||||
rda->cae()->enableMetering(&cards);
|
||||
|
||||
//
|
||||
// Filter
|
||||
@ -285,7 +289,7 @@ void MainWidget::selectedGroupChangedData(const QString &grpname)
|
||||
lib_default_group=grpname;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void MainWidget::caeConnectedData(bool state)
|
||||
{
|
||||
if(state) {
|
||||
@ -295,7 +299,7 @@ void MainWidget::caeConnectedData(bool state)
|
||||
rda->cae()->enableMetering(&cards);
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
void MainWidget::userData()
|
||||
{
|
||||
|
@ -63,7 +63,6 @@ class MainWidget : public MainWindow
|
||||
|
||||
private slots:
|
||||
void selectedGroupChangedData(const QString &grpname);
|
||||
void caeConnectedData(bool state);
|
||||
void userData();
|
||||
void addData();
|
||||
void editData();
|
||||
|
@ -56,14 +56,16 @@ RecordCut::RecordCut(RDCart *cart,QString cut,bool use_weight,QWidget *parent)
|
||||
rec_port_no[0]=rda->libraryConf()->inputPort();
|
||||
rec_card_no[1]=rda->libraryConf()->outputCard();
|
||||
rec_port_no[1]=rda->libraryConf()->outputPort();
|
||||
rec_play_handle=-1;
|
||||
rec_play_serial=-1;
|
||||
|
||||
//
|
||||
// CAE Connection
|
||||
//
|
||||
connect(rda->cae(),SIGNAL(isConnected(bool)),this,SLOT(initData(bool)));
|
||||
connect(rda->cae(),SIGNAL(playing(int)),this,SLOT(playedData(int)));
|
||||
connect(rda->cae(),SIGNAL(playStarted(int)),this,SLOT(playStartedData(int)));
|
||||
connect(rda->cae(),SIGNAL(playStopped(int)),this,SLOT(playStoppedData(int)));
|
||||
// connect(rda->cae(),SIGNAL(playing(int)),this,SLOT(playedData(int)));
|
||||
// connect(rda->cae(),SIGNAL(playStopped(int)),this,SLOT(playStoppedData(int)));
|
||||
connect(rda->cae(),SIGNAL(recordLoaded(int,int)),
|
||||
this,SLOT(recordLoadedData(int,int)));
|
||||
connect(rda->cae(),SIGNAL(recordUnloaded(int,int,unsigned)),
|
||||
@ -653,14 +655,19 @@ void RecordCut::playData()
|
||||
int end=rec_cut->endPoint(true);
|
||||
|
||||
if((!is_recording)&&(!is_playing)&&(!is_ready)) { // Start Play
|
||||
rda->cae()->loadPlay(rec_card_no[1],rec_cut->cutName(),
|
||||
&rec_stream_no[1],&rec_play_handle);
|
||||
rda->cae()->setOutputPort(rec_card_no[1],rec_stream_no[1],rec_port_no[1]);
|
||||
rda->cae()->positionPlay(rec_play_handle,start);
|
||||
rda->cae()->setPlayPortActive(rec_card_no[1],rec_port_no[1],rec_stream_no[1]);
|
||||
rda->cae()->setOutputVolume(rec_card_no[1],rec_stream_no[1],rec_port_no[1],
|
||||
0+rec_cut->playGain());
|
||||
rda->cae()->play(rec_play_handle,end-start,RD_TIMESCALE_DIVISOR,false);
|
||||
// rda->cae()->loadPlay(rec_card_no[1],rec_cut->cutName(),
|
||||
// &rec_stream_no[1],&rec_play_handle);
|
||||
// rda->cae()->setOutputPort(rec_card_no[1],rec_stream_no[1],rec_port_no[1]);
|
||||
// rda->cae()->positionPlay(rec_play_handle,start);
|
||||
// rda->cae()->setPlayPortActive(rec_card_no[1],rec_port_no[1],rec_stream_no[1]);
|
||||
// rda->cae()->setOutputVolume(rec_card_no[1],rec_stream_no[1],rec_port_no[1],
|
||||
// 0+rec_cut->playGain());
|
||||
|
||||
rec_play_serial=
|
||||
rda->cae()->startPlayback(rec_cut->cutName(),
|
||||
rec_card_no[1],rec_port_no[1],
|
||||
start,end,RD_TIMESCALE_DIVISOR);
|
||||
// rda->cae()->play(rec_play_handle,end-start,RD_TIMESCALE_DIVISOR,false);
|
||||
}
|
||||
if(is_ready&&(!is_recording)) {
|
||||
if(rec_mode_box->currentIndex()==1) {
|
||||
@ -679,7 +686,7 @@ void RecordCut::playData()
|
||||
void RecordCut::stopData()
|
||||
{
|
||||
if(is_playing) {
|
||||
rda->cae()->stopPlay(rec_play_handle);
|
||||
rda->cae()->stopPlayback(rec_play_serial);
|
||||
return;
|
||||
}
|
||||
if(is_recording) {
|
||||
@ -717,7 +724,7 @@ void RecordCut::recordedData(int card,int stream)
|
||||
}
|
||||
|
||||
|
||||
void RecordCut::playedData(int handle)
|
||||
void RecordCut::playStartedData(int serial)
|
||||
{
|
||||
rec_play_button->on();
|
||||
rec_stop_button->off();
|
||||
@ -729,9 +736,8 @@ void RecordCut::playedData(int handle)
|
||||
}
|
||||
|
||||
|
||||
void RecordCut::playStoppedData(int handle)
|
||||
void RecordCut::playStoppedData(int serial)
|
||||
{
|
||||
rda->cae()->unloadPlay(rec_play_handle);
|
||||
rec_timer->stop();
|
||||
rec_play_button->off();
|
||||
rec_stop_button->on();
|
||||
@ -746,6 +752,36 @@ void RecordCut::playStoppedData(int handle)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void RecordCut::playedData(int handle)
|
||||
{
|
||||
rec_play_button->on();
|
||||
rec_stop_button->off();
|
||||
rec_timer_value=-1;
|
||||
recTimerData();
|
||||
rec_timer->start(RECORD_CUT_TIMER_INTERVAL);
|
||||
is_playing=true;
|
||||
is_recording=false;
|
||||
}
|
||||
|
||||
|
||||
void RecordCut::playStoppedData(int handle)
|
||||
{
|
||||
// rda->cae()->unloadPlay(rec_play_handle);
|
||||
rec_timer->stop();
|
||||
rec_play_button->off();
|
||||
rec_stop_button->on();
|
||||
rec_meter->resetClipLight();
|
||||
is_playing=false;
|
||||
is_recording=false;
|
||||
rec_meter->setLeftSolidBar(-10000);
|
||||
rec_meter->setRightSolidBar(-10000);
|
||||
if(is_closing) {
|
||||
is_closing=false;
|
||||
closeData();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void RecordCut::recordStoppedData(int card,int stream)
|
||||
{
|
||||
|
@ -62,8 +62,10 @@ class RecordCut : public RDDialog
|
||||
void recordedData(int,int);
|
||||
void recordStoppedData(int,int);
|
||||
void recordUnloadedData(int,int,unsigned);
|
||||
void playedData(int);
|
||||
void playStoppedData(int);
|
||||
void playStartedData(int serial);
|
||||
void playStoppedData(int serial);
|
||||
// void playedData(int);
|
||||
// void playStoppedData(int);
|
||||
void closeData();
|
||||
void initData(bool);
|
||||
void recTimerData();
|
||||
@ -145,7 +147,8 @@ class RecordCut : public RDDialog
|
||||
int rec_card_no[2];
|
||||
int rec_stream_no[2];
|
||||
int rec_port_no[2];
|
||||
int rec_play_handle;
|
||||
// int rec_play_handle;
|
||||
int rec_play_serial;
|
||||
RDCae::AudioCoding rec_format;
|
||||
unsigned rec_channels;
|
||||
unsigned rec_samprate;
|
||||
|
@ -86,7 +86,7 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
||||
//
|
||||
connect(rda->cae(),SIGNAL(isConnected(bool)),
|
||||
this,SLOT(caeConnectedData(bool)));
|
||||
rda->cae()->connectHost();
|
||||
rda->cae()->connectToHost();
|
||||
|
||||
//
|
||||
// RIPC Connection
|
||||
|
@ -65,7 +65,7 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
||||
//
|
||||
// CAE Connection
|
||||
//
|
||||
rda->cae()->connectHost();
|
||||
rda->cae()->connectToHost();
|
||||
|
||||
//
|
||||
// RIPC Connection
|
||||
|
@ -89,7 +89,7 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
||||
//
|
||||
connect(rda->cae(),SIGNAL(isConnected(bool)),
|
||||
this,SLOT(caeConnectedData(bool)));
|
||||
rda->cae()->connectHost();
|
||||
rda->cae()->connectToHost();
|
||||
|
||||
//
|
||||
// RIPC Connection
|
||||
|
@ -88,7 +88,7 @@ MainObject::MainObject(QObject *parent)
|
||||
//
|
||||
// CAE Connection
|
||||
//
|
||||
rda->cae()->connectHost();
|
||||
rda->cae()->connectToHost();
|
||||
|
||||
//
|
||||
// Set Audio Assignments
|
||||
|
@ -131,7 +131,7 @@ MainObject::MainObject(QObject *parent)
|
||||
//
|
||||
// CAE Connection
|
||||
//
|
||||
rda->cae()->connectHost();
|
||||
rda->cae()->connectToHost(0); // Assume no persistent operations!
|
||||
|
||||
if(qApp->arguments().size()!=1) {
|
||||
debug=true;
|
||||
|
@ -123,7 +123,7 @@ MainWidget::MainWidget(QWidget *parent)
|
||||
//
|
||||
connect(rda->cae(),SIGNAL(isConnected(bool)),
|
||||
this,SLOT(caeConnectedData(bool)));
|
||||
rda->cae()->connectHost();
|
||||
rda->cae()->connectToHost();
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user