2022-04-21 Fred Gleason <fredg@paravelsystems.com>

* Fixed bug in the RDCatch subsystem that caused audio format
	parameters to be confounded between uploaded and audio store
	files.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2022-04-21 13:19:24 -04:00
parent 1b0d3dc9fd
commit d44e932fe3
12 changed files with 80 additions and 96 deletions

View File

@ -22987,3 +22987,7 @@
* Fixed a regression in rdcatch(1) that caused the 'Sample Rate' * Fixed a regression in rdcatch(1) that caused the 'Sample Rate'
dropdown in the 'Edit Audio Settings' dialog to always be set dropdown in the 'Edit Audio Settings' dialog to always be set
to '32000' regardless of the actual value in the record. to '32000' regardless of the actual value in the record.
2022-04-21 Fred Gleason <fredg@paravelsystems.com>
* Fixed bug in the RDCatch subsystem that caused audio format
parameters to be confounded between uploaded and audio store
files.

View File

@ -45,7 +45,7 @@ NORMALIZE_LEVEL int(11) in 1/100 dBFS
STARTDATE_OFFSET int(10) unsigned STARTDATE_OFFSET int(10) unsigned
ENDDATE_OFFSET int(10) unsigned ENDDATE_OFFSET int(10) unsigned
EVENTDATE_OFFSET int(11) EVENTDATE_OFFSET int(11)
FORMAT int(11) signed 0 = PCM16, 2 = Layer 2, 3 = Layer 3 FORMAT int(11) signed RDSettings::Format
CHANNELS int(11) signed CHANNELS int(11) signed
SAMPRATE int(11) signed SAMPRATE int(11) signed
BITRATE int(11) signed BITRATE int(11) signed

View File

@ -145,15 +145,15 @@ void RDDeck::setDefaultMonitorOn(bool state) const
} }
RDSettings::Format RDDeck::defaultFormat() const RDCae::AudioCoding RDDeck::defaultFormat() const
{ {
return (RDSettings::Format)GetIntValue("DEFAULT_FORMAT"); return (RDCae::AudioCoding)GetIntValue("DEFAULT_FORMAT");
} }
void RDDeck::setDefaultFormat(RDSettings::Format format) const void RDDeck::setDefaultFormat(RDCae::AudioCoding coding) const
{ {
SetRow("DEFAULT_FORMAT",(int)format); SetRow("DEFAULT_FORMAT",(int)coding);
} }

View File

@ -24,6 +24,7 @@
#include <qsqldatabase.h> #include <qsqldatabase.h>
#include <qtimer.h> #include <qtimer.h>
#include <rdcae.h>
#include <rdsettings.h> #include <rdsettings.h>
class RDDeck class RDDeck
@ -44,8 +45,8 @@ class RDDeck
void setMonitorPortNumber(int port) const; void setMonitorPortNumber(int port) const;
bool defaultMonitorOn() const; bool defaultMonitorOn() const;
void setDefaultMonitorOn(bool state) const; void setDefaultMonitorOn(bool state) const;
RDSettings::Format defaultFormat() const; RDCae::AudioCoding defaultFormat() const;
void setDefaultFormat(RDSettings::Format format) const; void setDefaultFormat(RDCae::AudioCoding coding) const;
int defaultChannels() const; int defaultChannels() const;
void setDefaultChannels(int chan) const; void setDefaultChannels(int chan) const;
int defaultBitrate() const; int defaultBitrate() const;

View File

@ -2,7 +2,7 @@
// //
// Edit Audio Export Settings // Edit Audio Export Settings
// //
// (C) Copyright 2002-2021\2 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License version 2 as

View File

@ -324,9 +324,12 @@ EditDecks::EditDecks(RDStation *station,RDStation *cae_station,QWidget *parent)
} }
edit_record_channel=edit_record_deck_box->currentIndex()+1; edit_record_channel=edit_record_deck_box->currentIndex()+1;
edit_play_channel=edit_play_deck_box->currentIndex()+129; edit_play_channel=edit_play_deck_box->currentIndex()+129;
edit_format_box->insertItem(edit_format_box->count(),tr("PCM16")); edit_format_box->
edit_format_box->insertItem(edit_format_box->count(),tr("PCM24")); insertItem(edit_format_box->count(),tr("PCM16"),RDCae::Pcm16);
edit_format_box->insertItem(edit_format_box->count(),tr("MPEG Layer 2")); edit_format_box->
insertItem(edit_format_box->count(),tr("PCM24"),RDCae::Pcm24);
edit_format_box->
insertItem(edit_format_box->count(),tr("MPEG Layer 2"),RDCae::MpegL2);
edit_channels_box->insertItem(0,"1"); edit_channels_box->insertItem(0,"1");
edit_channels_box->insertItem(1,"2"); edit_channels_box->insertItem(1,"2");
edit_bitrate_box->insertItem(edit_bitrate_box->count(),tr("32 kbps/chan"),32); edit_bitrate_box->insertItem(edit_bitrate_box->count(),tr("32 kbps/chan"),32);
@ -582,26 +585,27 @@ void EditDecks::ReadRecord(int chan)
edit_default_on_box->setCurrentIndex(0); edit_default_on_box->setCurrentIndex(0);
} }
switch(edit_record_deck->defaultFormat()) { switch(edit_record_deck->defaultFormat()) {
case RDSettings::Pcm16: case RDCae::Pcm16:
edit_format_box->setCurrentIndex(0); edit_format_box->setCurrentIndex(0);
edit_bitrate_box->setDisabled(true); edit_bitrate_box->setDisabled(true);
break; break;
case RDSettings::Pcm24: case RDCae::Pcm24:
edit_format_box->setCurrentIndex(1); edit_format_box->setCurrentIndex(1);
edit_bitrate_box->setDisabled(true); edit_bitrate_box->setDisabled(true);
break; break;
case RDSettings::MpegL2: case RDCae::MpegL2:
case RDSettings::MpegL2Wav: // case RDSettings::MpegL2Wav:
edit_format_box->setCurrentIndex(2); edit_format_box->setCurrentIndex(2);
edit_bitrate_box->setEnabled(true); edit_bitrate_box->setEnabled(true);
break; break;
case RDSettings::MpegL1: // case RDSettings::MpegL1:
case RDCae::MpegL1:
case RDSettings::MpegL3: case RDSettings::MpegL3:
case RDSettings::Flac: // case RDSettings::Flac:
case RDSettings::OggVorbis: // case RDSettings::OggVorbis:
break; break;
} }
edit_channels_box->setCurrentIndex(edit_record_deck->defaultChannels()-1); edit_channels_box->setCurrentIndex(edit_record_deck->defaultChannels()-1);
@ -725,6 +729,7 @@ void EditDecks::WriteRecord(int chan)
edit_record_deck->setDefaultMonitorOn(true); edit_record_deck->setDefaultMonitorOn(true);
} }
} }
/*
switch(edit_format_box->currentIndex()) { switch(edit_format_box->currentIndex()) {
case 0: case 0:
edit_record_deck->setDefaultFormat(RDSettings::Pcm16); edit_record_deck->setDefaultFormat(RDSettings::Pcm16);
@ -738,6 +743,10 @@ void EditDecks::WriteRecord(int chan)
edit_record_deck->setDefaultFormat(RDSettings::MpegL2); edit_record_deck->setDefaultFormat(RDSettings::MpegL2);
break; break;
} }
*/
edit_record_deck->
setDefaultFormat((RDCae::AudioCoding)edit_format_box->
itemData(edit_format_box->currentIndex()).toInt());
edit_record_deck->setDefaultChannels(edit_channels_box->currentIndex()+1); edit_record_deck->setDefaultChannels(edit_channels_box->currentIndex()+1);
edit_record_deck->setDefaultBitrate(1000*edit_bitrate_box-> edit_record_deck->setDefaultBitrate(1000*edit_bitrate_box->
itemData(edit_bitrate_box->currentIndex()).toInt()); itemData(edit_bitrate_box->currentIndex()).toInt());

View File

@ -809,6 +809,7 @@ void EditRecording::Save()
edit_recording->setSwitchSource(GetSource()); edit_recording->setSwitchSource(GetSource());
edit_recording->setStartdateOffset(edit_startoffset_box->value()); edit_recording->setStartdateOffset(edit_startoffset_box->value());
edit_recording->setEnddateOffset(edit_endoffset_box->value()); edit_recording->setEnddateOffset(edit_endoffset_box->value());
/*
edit_recording->setFormat(edit_deck->defaultFormat()); edit_recording->setFormat(edit_deck->defaultFormat());
if(edit_deck->defaultFormat()>0) { if(edit_deck->defaultFormat()>0) {
edit_recording->setBitrate(edit_deck->defaultBitrate()* edit_recording->setBitrate(edit_deck->defaultBitrate()*
@ -817,6 +818,7 @@ void EditRecording::Save()
else { else {
edit_recording->setBitrate(0); edit_recording->setBitrate(0);
} }
*/
edit_recording->setChannels(edit_channels_box->currentIndex()+1); edit_recording->setChannels(edit_channels_box->currentIndex()+1);
if(edit_autotrim_box->isChecked()) { if(edit_autotrim_box->isChecked()) {
edit_recording->setTrimThreshold(-100*edit_autotrim_spin->value()); edit_recording->setTrimThreshold(-100*edit_autotrim_spin->value());

View File

@ -2,7 +2,7 @@
// //
// Batch Routines for the Rivendell netcatcher daemon // Batch Routines for the Rivendell netcatcher daemon
// //
// (C) Copyright 2002-2021 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License version 2 as
@ -481,21 +481,7 @@ bool MainObject::Import(CatchEvent *evt)
conv->setSourceFile(RDEscapeString(evt->tempName())); conv->setSourceFile(RDEscapeString(evt->tempName()));
conv->setDestinationFile(RDCut::pathName(evt->cutName())); conv->setDestinationFile(RDCut::pathName(evt->cutName()));
RDSettings *settings=new RDSettings(); RDSettings *settings=new RDSettings();
switch(evt->format()) { settings->setFormat(evt->format());
case RDCae::Pcm16:
settings->setFormat(RDSettings::Pcm16);
break;
case RDCae::Pcm24:
settings->setFormat(RDSettings::Pcm24);
break;
case RDCae::MpegL1:
case RDCae::MpegL2:
case RDCae::MpegL3:
settings->setFormat(RDSettings::MpegL2Wav);
break;
}
settings->setChannels(evt->channels()); settings->setChannels(evt->channels());
settings->setSampleRate(rda->system()->sampleRate()); settings->setSampleRate(rda->system()->sampleRate());
settings->setBitRate(evt->bitrate()); settings->setBitRate(evt->bitrate());

View File

@ -2,7 +2,7 @@
// //
// A container class for a Rivendell netcatch event. // A container class for a Rivendell netcatch event.
// //
// (C) Copyright 2002-2004,2016 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License version 2 as
@ -354,13 +354,13 @@ void CatchEvent::setEnddateOffset(unsigned offset)
} }
RDCae::AudioCoding CatchEvent::format() const RDSettings::Format CatchEvent::format() const
{ {
return catch_format; return catch_format;
} }
void CatchEvent::setFormat(RDCae::AudioCoding fmt) void CatchEvent::setFormat(RDSettings::Format fmt)
{ {
catch_format=fmt; catch_format=fmt;
} }
@ -694,7 +694,7 @@ void CatchEvent::clear()
catch_trim_threshold=0; catch_trim_threshold=0;
catch_startdate_offset=0; catch_startdate_offset=0;
catch_enddate_offset=0; catch_enddate_offset=0;
catch_format=RDCae::Pcm16; catch_format=RDSettings::Pcm16;
catch_channels=0; catch_channels=0;
catch_samplerate=0; catch_samplerate=0;
catch_bitrate=0; catch_bitrate=0;

View File

@ -2,7 +2,7 @@
// //
// A container class for a Rivendell netcatch event. // A container class for a Rivendell netcatch event.
// //
// (C) Copyright 2002-2004,2016 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License version 2 as
@ -87,8 +87,8 @@ class CatchEvent
void setStartdateOffset(unsigned offset); void setStartdateOffset(unsigned offset);
unsigned enddateOffset() const; unsigned enddateOffset() const;
void setEnddateOffset(unsigned offset); void setEnddateOffset(unsigned offset);
RDCae::AudioCoding format() const; RDSettings::Format format() const;
void setFormat(RDCae::AudioCoding fmt); void setFormat(RDSettings::Format fmt);
int channels() const; int channels() const;
void setChannels(int chans); void setChannels(int chans);
int sampleRate() const; int sampleRate() const;
@ -166,7 +166,7 @@ class CatchEvent
unsigned catch_trim_threshold; unsigned catch_trim_threshold;
unsigned catch_startdate_offset; unsigned catch_startdate_offset;
unsigned catch_enddate_offset; unsigned catch_enddate_offset;
RDCae::AudioCoding catch_format; RDSettings::Format catch_format;
int catch_channels; int catch_channels;
int catch_samplerate; int catch_samplerate;
int catch_bitrate; int catch_bitrate;

View File

@ -2,7 +2,7 @@
// //
// The Rivendell Netcatcher Daemon // The Rivendell Netcatcher Daemon
// //
// (C) Copyright 2002-2021 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License version 2 as
@ -639,31 +639,34 @@ void MainObject::engineData(int id)
sql=QString("select ")+ sql=QString("select ")+
"`CARD_NUMBER`,"+ // 00 "`CARD_NUMBER`,"+ // 00
"`PORT_NUMBER`,"+ // 01 "`PORT_NUMBER`,"+ // 01
"`SWITCH_STATION`,"+ // 02 "`DEFAULT_FORMAT`,"+ // 02
"`SWITCH_MATRIX`,"+ // 03 "`DEFAULT_BITRATE`," // 03
"`SWITCH_OUTPUT`,"+ // 04 "`SWITCH_STATION`,"+ // 04
"`SWITCH_DELAY` "+ // 05 "`SWITCH_MATRIX`,"+ // 05
"`SWITCH_OUTPUT`,"+ // 06
"`SWITCH_DELAY` "+ // 07
"from `DECKS` where "+ "from `DECKS` where "+
"(`STATION_NAME`='"+RDEscapeString(rda->config()->stationName())+"')&&"+ "(`STATION_NAME`='"+RDEscapeString(rda->config()->stationName())+"')&&"+
QString::asprintf("(`CHANNEL`=%d)",catch_events[event].channel()); QString::asprintf("(`CHANNEL`=%d)",catch_events[event].channel());
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
if(q->first()) { if(q->first()) {
catch_record_card[catch_events[event].channel()-1]= catch_record_card[catch_events[event].channel()-1]=q->value(0).toInt();
q->value(0).toInt(); catch_record_stream[catch_events[event].channel()-1]=q->value(1).toInt();
catch_record_stream[catch_events[event].channel()-1]= catch_record_coding[catch_events[event].channel()-1]=
q->value(1).toInt(); (RDCae::AudioCoding)q->value(2).toInt();
if(q->value(2).toString()==QString("[none]")) { catch_record_bitrate[catch_events[event].channel()-1]=q->value(3).toInt();
if(q->value(4).toString()==QString("[none]")) {
catch_swaddress[catch_events[event].channel()-1]=QHostAddress(); catch_swaddress[catch_events[event].channel()-1]=QHostAddress();
} }
else { else {
rdstation=new RDStation(q->value(2).toString()); rdstation=new RDStation(q->value(4).toString());
catch_swaddress[catch_events[event].channel()-1]= catch_swaddress[catch_events[event].channel()-1]=
rdstation->address(); rdstation->address();
delete rdstation; delete rdstation;
} }
catch_swmatrix[catch_events[event].channel()-1]=q->value(3).toInt(); catch_swmatrix[catch_events[event].channel()-1]=q->value(5).toInt();
catch_swoutput[catch_events[event].channel()-1]=q->value(4).toInt(); catch_swoutput[catch_events[event].channel()-1]=q->value(6).toInt();
catch_swdelay[catch_events[event].channel()-1]=q->value(5).toInt(); catch_swdelay[catch_events[event].channel()-1]=q->value(7).toInt();
} }
else { else {
rda->syslog(LOG_INFO,"id %d specified non-existent record deck, ignored", rda->syslog(LOG_INFO,"id %d specified non-existent record deck, ignored",
@ -1282,7 +1285,6 @@ bool MainObject::StartRecording(int event)
// //
// Set Temp Name // Set Temp Name
// //
RDCae::AudioCoding format=catch_events[event].format();
QString cut_name; QString cut_name;
if(catch_events[event].normalizeLevel()==0) { if(catch_events[event].normalizeLevel()==0) {
cut_name=catch_events[event].cutName(); cut_name=catch_events[event].cutName();
@ -1292,19 +1294,19 @@ bool MainObject::StartRecording(int event)
catch_events[event]. catch_events[event].
setTempName(GetTempRecordingName(catch_events[event].id())); setTempName(GetTempRecordingName(catch_events[event].id()));
catch_events[event].setDeleteTempFile(true); catch_events[event].setDeleteTempFile(true);
format=RDCae::Pcm24;
} }
// //
// Start the recording // Start the recording
// //
rda->cae()->loadRecord(catch_record_card[deck-1], rda->cae()->loadRecord(catch_record_card[deck-1],
catch_record_stream[deck-1], catch_record_stream[deck-1],
cut_name, cut_name,
format, catch_record_coding[deck-1],
catch_events[event].channels(), catch_events[event].channels(),
catch_events[event].sampleRate(), rda->system()->sampleRate(),
catch_events[event].bitrate()); // catch_events[event].bitrate());
catch_record_bitrate[deck-1]);
rda->cae()->record(catch_record_card[deck-1],catch_record_stream[deck-1], rda->cae()->record(catch_record_card[deck-1],catch_record_stream[deck-1],
length,0); length,0);
catch_events[event].setStatus(RDDeck::Recording); catch_events[event].setStatus(RDDeck::Recording);
@ -1344,7 +1346,7 @@ bool MainObject::StartRecording(int event)
break; break;
} }
cut->setChannels(catch_events[event].channels()); cut->setChannels(catch_events[event].channels());
cut->setSampleRate(catch_events[event].sampleRate()); cut->setSampleRate(rda->system()->sampleRate());
cut->setBitRate(catch_events[event].bitrate()); cut->setBitRate(catch_events[event].bitrate());
cut->setPlayCounter(0); cut->setPlayCounter(0);
cut->setSegueStartPoint(-1); cut->setSegueStartPoint(-1);
@ -1923,29 +1925,7 @@ void MainObject::LoadEvent(RDSqlQuery *q,CatchEvent *e,bool add)
e->setTrimThreshold(q->value(16).toUInt()); e->setTrimThreshold(q->value(16).toUInt());
e->setStartdateOffset(q->value(17).toUInt()); e->setStartdateOffset(q->value(17).toUInt());
e->setEnddateOffset(q->value(18).toUInt()); e->setEnddateOffset(q->value(18).toUInt());
switch((RDSettings::Format)q->value(19).toInt()) { e->setFormat((RDSettings::Format)q->value(19).toInt());
case RDSettings::Pcm16:
e->setFormat(RDCae::Pcm16);
break;
case RDSettings::Pcm24:
e->setFormat(RDCae::Pcm24);
break;
case RDSettings::MpegL2:
case RDSettings::MpegL2Wav:
e->setFormat(RDCae::MpegL2);
break;
case RDSettings::MpegL3:
e->setFormat(RDCae::MpegL3);
break;
case RDSettings::MpegL1:
case RDSettings::Flac:
case RDSettings::OggVorbis:
break;
}
e->setChannels(q->value(20).toInt()); e->setChannels(q->value(20).toInt());
e->setSampleRate(q->value(21).toUInt()); e->setSampleRate(q->value(21).toUInt());
e->setBitrate(q->value(22).toInt()); e->setBitrate(q->value(22).toInt());
@ -2011,7 +1991,9 @@ void MainObject::LoadDeckList()
"`CHANNEL`,"+ // 00 "`CHANNEL`,"+ // 00
"`CARD_NUMBER`,"+ // 01 "`CARD_NUMBER`,"+ // 01
"`PORT_NUMBER`,"+ // 02 "`PORT_NUMBER`,"+ // 02
"`MON_PORT_NUMBER` "+ // 03 "`MON_PORT_NUMBER`,"+ // 03
"`DEFAULT_FORMAT`,"+ // 04
"`DEFAULT_BITRATE` " // 05
"from `DECKS` where "+ "from `DECKS` where "+
"(`STATION_NAME`='"+RDEscapeString(rda->config()->stationName())+"')&&"+ "(`STATION_NAME`='"+RDEscapeString(rda->config()->stationName())+"')&&"+
"(`CARD_NUMBER`!=-1)&&(`CHANNEL`>0)&&(`CHANNEL`<9)"; "(`CARD_NUMBER`!=-1)&&(`CHANNEL`>0)&&(`CHANNEL`<9)";
@ -2021,6 +2003,9 @@ void MainObject::LoadDeckList()
catch_record_card[q->value(0).toUInt()-1]=q->value(1).toInt(); catch_record_card[q->value(0).toUInt()-1]=q->value(1).toInt();
catch_record_stream[q->value(0).toUInt()-1]=q->value(2).toInt(); catch_record_stream[q->value(0).toUInt()-1]=q->value(2).toInt();
catch_monitor_port[q->value(0).toUInt()-1]=q->value(3).toInt(); catch_monitor_port[q->value(0).toUInt()-1]=q->value(3).toInt();
catch_record_coding[q->value(0).toUInt()-1]=
(RDCae::AudioCoding)q->value(4).toInt();
catch_record_bitrate[q->value(0).toInt()-1]=q->value(5).toInt();
} }
delete q; delete q;
for(int i=0;i<MAX_DECKS;i++) { for(int i=0;i<MAX_DECKS;i++) {
@ -2109,7 +2094,6 @@ bool MainObject::AddEvent(int id)
QString sql; QString sql;
QString day_name; QString day_name;
// //
// Load Schedule // Load Schedule
// //
@ -2319,7 +2303,7 @@ void MainObject::CheckInRecording(QString cutname,CatchEvent *evt,
RDCut *cut=new RDCut(cutname); RDCut *cut=new RDCut(cutname);
RDSettings *s=new RDSettings(); RDSettings *s=new RDSettings();
s->setFormat((RDSettings::Format)evt->format()); s->setFormat((RDSettings::Format)evt->format());
s->setSampleRate(evt->sampleRate()); s->setSampleRate(rda->system()->sampleRate());
s->setBitRate(evt->bitrate()); s->setBitRate(evt->bitrate());
s->setChannels(evt->channels()); s->setChannels(evt->channels());
cut->checkInRecording(rda->config()->stationName(),"", cut->checkInRecording(rda->config()->stationName(),"",
@ -2552,11 +2536,7 @@ void MainObject::StartRmlRecording(int chan,int cartnum,int cutnum,int maxlen)
catch_events.back().setStartTime(dt.time()); catch_events.back().setStartTime(dt.time());
catch_events.back().setEndType(RDRecording::LengthEnd); catch_events.back().setEndType(RDRecording::LengthEnd);
catch_events.back().setLength(maxlen); catch_events.back().setLength(maxlen);
catch_events.back().
setFormat((RDCae::AudioCoding)deck->defaultFormat());
catch_events.back().setChannels(deck->defaultChannels()); catch_events.back().setChannels(deck->defaultChannels());
catch_events.back().setSampleRate(rda->system()->sampleRate());
catch_events.back().setBitrate(deck->defaultBitrate());
catch_events.back().setNormalizeLevel(0); catch_events.back().setNormalizeLevel(0);
StartRecording(catch_events.size()-1); StartRecording(catch_events.size()-1);
delete cut; delete cut;

View File

@ -2,7 +2,7 @@
// //
// The Rivendell Netcatcher. // The Rivendell Netcatcher.
// //
// (C) Copyright 2002-2021 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2002-2022 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // 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 // it under the terms of the GNU General Public License version 2 as
@ -202,6 +202,8 @@ class MainObject : public QObject
bool catch_record_status[MAX_DECKS]; bool catch_record_status[MAX_DECKS];
int catch_record_card[MAX_DECKS]; int catch_record_card[MAX_DECKS];
int catch_record_stream[MAX_DECKS]; int catch_record_stream[MAX_DECKS];
RDCae::AudioCoding catch_record_coding[MAX_DECKS];
int catch_record_bitrate[MAX_DECKS];
RDDeck::Status catch_record_deck_status[MAX_DECKS]; RDDeck::Status catch_record_deck_status[MAX_DECKS];
int catch_record_id[MAX_DECKS]; int catch_record_id[MAX_DECKS];
QString catch_record_name[MAX_DECKS]; QString catch_record_name[MAX_DECKS];