mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-04-07 01:13:50 +02:00
* Consolidated the Metadata Wildcard definitions in the 'RDResolveNowNext()' function into the 'RDLogLine::resolveWildcards()' method. * Added 'recordMbId' and 'releaseMbId' fields to the cut XML data schema. * Added '%wm' ['MusicBrainz Recording ID'] and '%wr' ['MusicBrainz Release ID'] metadata wildcards.
180 lines
6.8 KiB
C++
180 lines
6.8 KiB
C++
// rdcut.h
|
|
//
|
|
// Abstract a Rivendell Cut
|
|
//
|
|
// (C) Copyright 2002-2020 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
|
|
// published by the Free Software Foundation.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public
|
|
// License along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
//
|
|
|
|
#include <qsqldatabase.h>
|
|
#include <q3signal.h>
|
|
#include <qobject.h>
|
|
|
|
#include <rdconfig.h>
|
|
#include <rddb.h>
|
|
#include <rdwavedata.h>
|
|
#include <rdsettings.h>
|
|
#include <rdstation.h>
|
|
#include <rduser.h>
|
|
|
|
#ifndef RDCUT_H
|
|
#define RDCUT_H
|
|
|
|
class RDCut
|
|
{
|
|
public:
|
|
enum AudioEnd {AudioBoth=0,AudioHead=1,AudioTail=2};
|
|
enum IsrcFormat {RawIsrc=0,FormattedIsrc=1};
|
|
enum Validity {NeverValid=0,ConditionallyValid=1,AlwaysValid=2,FutureValid=3};
|
|
RDCut(const QString &name,bool create=false);
|
|
RDCut(unsigned cartnum,int cutnum,bool create=false);
|
|
~RDCut();
|
|
bool exists() const;
|
|
bool isValid() const;
|
|
bool isValid(const QTime &time) const;
|
|
bool isValid(const QDateTime &datetime) const;
|
|
QString cutName() const;
|
|
unsigned cutNumber() const;
|
|
unsigned cartNumber() const;
|
|
void setCartNumber(unsigned num) const;
|
|
bool evergreen() const;
|
|
void setEvergreen(bool state) const;
|
|
QString description() const;
|
|
void setDescription(const QString &string) const;
|
|
QString outcue() const;
|
|
void setOutcue(const QString &string) const;
|
|
QString isrc(IsrcFormat fmt=RawIsrc) const;
|
|
void setIsrc(const QString &isrc) const;
|
|
QString isci() const;
|
|
void setIsci(const QString &isci) const;
|
|
QString recordingMbId() const;
|
|
void setRecordingMbId(const QString &mbid);
|
|
QString releaseMbId() const;
|
|
void setReleaseMbId(const QString &mbid);
|
|
QString sha1Hash() const;
|
|
void setSha1Hash(const QString &str);
|
|
unsigned length() const;
|
|
void setLength(int length) const;
|
|
QDateTime originDatetime(bool *valid) const;
|
|
void setOriginDatetime(const QDateTime &datetime) const;
|
|
QDateTime startDatetime(bool *valid) const;
|
|
void setStartDatetime(const QDateTime &datetime,bool valid) const;
|
|
QDateTime endDatetime(bool *valid) const;
|
|
void setEndDatetime(const QDateTime &datetime,bool valid) const;
|
|
QTime startDaypart(bool *valid) const;
|
|
void setStartDaypart(const QTime &time,bool valid) const;
|
|
QTime endDaypart(bool *valid) const;
|
|
void setEndDaypart(const QTime &time,bool valid) const;
|
|
bool weekPart(int dayofweek) const;
|
|
void setWeekPart(int dayofweek,bool state) const;
|
|
QString originName() const;
|
|
void setOriginName(const QString &name) const;
|
|
QString originLoginName() const;
|
|
void setOriginLoginName(const QString &name) const;
|
|
QString sourceHostname() const;
|
|
void setSourceHostname(const QString &name) const;
|
|
unsigned weight() const;
|
|
void setWeight(int value) const;
|
|
int playOrder() const;
|
|
void setPlayOrder(int order) const;
|
|
QDateTime lastPlayDatetime(bool *valid) const;
|
|
void setLastPlayDatetime(const QDateTime &datetime,bool valid) const;
|
|
QDateTime uploadDatetime(bool *valid) const;
|
|
void setUploadDatetime(const QDateTime &datetime,bool valid) const;
|
|
unsigned playCounter() const;
|
|
void setPlayCounter(unsigned count) const;
|
|
RDCut::Validity validity() const;
|
|
void setValidity(RDCut::Validity state);
|
|
unsigned localCounter() const;
|
|
void setLocalCounter(unsigned count) const;
|
|
unsigned codingFormat() const;
|
|
void setCodingFormat(unsigned format) const;
|
|
unsigned sampleRate() const;
|
|
void setSampleRate(unsigned rate) const;
|
|
unsigned bitRate() const;
|
|
void setBitRate(unsigned rate) const;
|
|
unsigned channels() const;
|
|
void setChannels(unsigned chan) const;
|
|
int playGain() const;
|
|
void setPlayGain(int gain) const;
|
|
int startPoint(bool calc=false) const;
|
|
void setStartPoint(int point) const;
|
|
int endPoint(bool calc=false) const;
|
|
void setEndPoint(int point) const;
|
|
int fadeupPoint(bool calc=false) const;
|
|
void setFadeupPoint(int point) const;
|
|
int fadedownPoint(bool calc=false) const;
|
|
void setFadedownPoint(int point) const;
|
|
int segueStartPoint(bool calc=false) const;
|
|
void setSegueStartPoint(int point) const;
|
|
int segueEndPoint(bool calc=false) const;
|
|
void setSegueEndPoint(int point) const;
|
|
int segueGain() const;
|
|
void setSegueGain(int gain) const;
|
|
int hookStartPoint(bool calc=false) const;
|
|
void setHookStartPoint(int point) const;
|
|
int hookEndPoint(bool calc=false) const;
|
|
void setHookEndPoint(int point) const;
|
|
int talkStartPoint(bool calc=false) const;
|
|
void setTalkStartPoint(int point) const;
|
|
int talkEndPoint(bool calc=false) const;
|
|
void setTalkEndPoint(int point) const;
|
|
int effectiveStart() const;
|
|
int effectiveEnd() const;
|
|
void logPlayout() const;
|
|
bool copyTo(RDStation *station,RDUser *user,const QString &cutname,
|
|
RDConfig *config) const;
|
|
void getMetadata(RDWaveData *data) const;
|
|
void setMetadata(RDWaveData *data) const;
|
|
bool checkInRecording(const QString &station_name,const QString &user_name,
|
|
QString src_hostname,RDSettings *settings,
|
|
unsigned msecs) const;
|
|
void autoTrim(RDCut::AudioEnd end,int level);
|
|
void autoSegue(int level,int length,RDStation *station,RDUser *user,
|
|
RDConfig *config);
|
|
void reset() const;
|
|
void connect(QObject *receiver,const char *member) const;
|
|
void disconnect(QObject *receiver,const char *member) const;
|
|
static QString xml(RDSqlQuery *q,bool absolute,RDSettings *settings=NULL);
|
|
static QString cutName(unsigned cartnum,unsigned cutnum);
|
|
static unsigned cartNumber(const QString &cutname);
|
|
static unsigned cutNumber(const QString &cutname);
|
|
static bool create(unsigned cartnum,int cutnum);
|
|
static bool create(const QString &cutname);
|
|
static bool exists(unsigned cartnum,unsigned cutnum);
|
|
static bool exists(const QString &cutname);
|
|
static QString pathName(unsigned cartnum,unsigned cutnum);
|
|
static QString pathName(const QString &cutname);
|
|
|
|
private:
|
|
bool FileCopy(const QString &srcfile,const QString &destfile) const;
|
|
void SetRow(const QString ¶m,const QString &value) const;
|
|
void SetRow(const QString ¶m,unsigned value) const;
|
|
void SetRow(const QString ¶m,int value) const;
|
|
void SetRow(const QString ¶m,const QDateTime &value) const;
|
|
void SetRow(const QString ¶m,const QDate &value) const;
|
|
void SetRow(const QString ¶m,const QTime &value) const;
|
|
void SetRow(const QString ¶m) const;
|
|
static void GetDefaultDateTimes(QString *start_dt,QString *end_dt,
|
|
const QString &cutname);
|
|
Q3Signal *cut_signal;
|
|
QString cut_name;
|
|
unsigned cart_number;
|
|
unsigned cut_number;
|
|
};
|
|
|
|
|
|
#endif
|