mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-21 15:19:34 +02:00
2024-08-30 Fred Gleason <fredg@paravelsystems.com>
* Modified log machine logic in rdairplay(1) to properly timescale event transitions. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
17b6048a3f
commit
49a211e1b9
@ -24889,3 +24889,6 @@
|
||||
* Removed the 'RDLogPlay::setSegueLength()' method.
|
||||
* Fixed regressions in rdairplay(1) that could cause the end of
|
||||
play-outs to be clipped.
|
||||
2024-08-30 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Modified log machine logic in rdairplay(1) to properly timescale
|
||||
event transitions.
|
||||
|
@ -183,8 +183,8 @@ bool RDPlayDeck::setCart(RDLogLine *logline,bool rotate)
|
||||
if(play_timescale_active) {
|
||||
play_timescale_speed=
|
||||
(int)(RD_TIMESCALE_DIVISOR*(double)(play_audio_point[1]-
|
||||
play_audio_point[0])/
|
||||
(double)play_forced_length);
|
||||
play_audio_point[0])/
|
||||
(double)play_forced_length);
|
||||
if((((double)play_timescale_speed)<
|
||||
(RD_TIMESCALE_DIVISOR*RD_TIMESCALE_MIN))||
|
||||
(((double)play_timescale_speed)>
|
||||
@ -793,7 +793,32 @@ void RDPlayDeck::duckTimerData()
|
||||
|
||||
void RDPlayDeck::StartTimers(int offset)
|
||||
{
|
||||
int audio_point;
|
||||
//
|
||||
// Calculate Time-Scaled Points
|
||||
//
|
||||
int scaled_audio_point[2];
|
||||
int scaled_fade_point[2];
|
||||
for(int i=0;i<2;i++) {
|
||||
scaled_audio_point[i]=
|
||||
(int)(RD_TIMESCALE_DIVISOR*(double)play_audio_point[i]/
|
||||
(double)play_timescale_speed);
|
||||
scaled_fade_point[i]=
|
||||
(int)(RD_TIMESCALE_DIVISOR*(double)play_fade_point[i]/
|
||||
(double)play_timescale_speed);
|
||||
}
|
||||
|
||||
int scaled_point_value[RDPlayDeck::SizeOf][2];
|
||||
for(int i=0;i<RDPlayDeck::SizeOf;i++) {
|
||||
for(int j=0;j<2;j++) {
|
||||
scaled_point_value[i][j]=
|
||||
(int)(RD_TIMESCALE_DIVISOR*(double)play_point_value[i][j]/
|
||||
(double)play_timescale_speed);
|
||||
}
|
||||
}
|
||||
|
||||
int scaled_duck_up_point=
|
||||
(int)(RD_TIMESCALE_DIVISOR*(double)play_duck_up_point/
|
||||
(double)play_timescale_speed);
|
||||
|
||||
play_end_timer->stop();
|
||||
|
||||
@ -801,23 +826,23 @@ void RDPlayDeck::StartTimers(int offset)
|
||||
// Initialize Segue Timers
|
||||
//
|
||||
play_point_state[RDPlayDeck::Segue]=false;
|
||||
audio_point=(int)
|
||||
(RD_TIMESCALE_DIVISOR*(double)play_audio_point[0]/
|
||||
(double)play_timescale_speed);
|
||||
if((play_point_value[RDPlayDeck::Segue][0]>=0)&&
|
||||
(play_point_value[RDPlayDeck::Segue][1]>=0)&&
|
||||
(play_point_value[RDPlayDeck::Segue][1]>
|
||||
play_point_value[RDPlayDeck::Segue][0])) {
|
||||
// Setup Full Segue
|
||||
if((play_point_value[RDPlayDeck::Segue][0]-audio_point-offset)>=0) {
|
||||
if((play_point_value[RDPlayDeck::Segue][0]-play_audio_point[0]-offset)>=0) {
|
||||
play_point_timer[RDPlayDeck::Segue]->
|
||||
start(play_point_value[RDPlayDeck::Segue][0]-audio_point-offset);
|
||||
start(scaled_point_value[RDPlayDeck::Segue][0]-scaled_audio_point[0]-
|
||||
offset);
|
||||
}
|
||||
else {
|
||||
if((play_point_value[RDPlayDeck::Segue][1]-audio_point-offset)>=0) {
|
||||
if((play_point_value[RDPlayDeck::Segue][1]-play_audio_point[0]-
|
||||
offset)>=0) {
|
||||
play_point_state[RDPlayDeck::Segue]=true;
|
||||
play_point_timer[RDPlayDeck::Segue]->
|
||||
start(play_point_value[RDPlayDeck::Segue][1]-audio_point-offset);
|
||||
start(scaled_point_value[RDPlayDeck::Segue][1]-scaled_audio_point[0]-
|
||||
offset);
|
||||
}
|
||||
}
|
||||
if(rda->config()->padSegueOverlaps()>0) {
|
||||
@ -830,7 +855,7 @@ void RDPlayDeck::StartTimers(int offset)
|
||||
else {
|
||||
// Setup "Play Style" Segue
|
||||
play_point_timer[RDPlayDeck::Segue]->
|
||||
start(play_audio_point[1]-play_audio_point[0]+100);
|
||||
start(scaled_audio_point[1]-scaled_audio_point[0]+100);
|
||||
}
|
||||
|
||||
//
|
||||
@ -840,18 +865,18 @@ void RDPlayDeck::StartTimers(int offset)
|
||||
play_point_state[i]=false;
|
||||
if((play_point_value[i][0]!=-1)&&
|
||||
(play_point_value[i][0]!=play_point_value[i][1])) {
|
||||
audio_point=(int)
|
||||
(RD_TIMESCALE_DIVISOR*(double)play_audio_point[0]/
|
||||
(double)play_timescale_speed);
|
||||
if((play_point_value[i][0]-audio_point-offset)>=0) {
|
||||
// scaled_audio_point[0]=(int)
|
||||
// (RD_TIMESCALE_DIVISOR*(double)play_audio_point[0]/
|
||||
// (double)play_timescale_speed);
|
||||
if((play_point_value[i][0]-play_audio_point[0]-offset)>=0) {
|
||||
play_point_timer[i]->
|
||||
start(play_point_value[i][0]-audio_point-offset);
|
||||
start(scaled_point_value[i][0]-scaled_audio_point[0]-offset);
|
||||
}
|
||||
else {
|
||||
if((play_point_value[i][1]-audio_point-offset)>=0) {
|
||||
if((play_point_value[i][1]-play_audio_point[0]-offset)>=0) {
|
||||
play_point_state[i]=true;
|
||||
play_point_timer[i]->
|
||||
start(play_point_value[i][1]-audio_point-offset);
|
||||
start(scaled_point_value[i][1]-scaled_audio_point[0]-offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -862,10 +887,10 @@ void RDPlayDeck::StartTimers(int offset)
|
||||
//
|
||||
if((play_fade_point[1]!=-1)&&(offset<play_fade_point[1])&&
|
||||
((play_fade_down=play_audio_point[1]-play_fade_point[1])>0)) {
|
||||
play_fade_timer->start(play_fade_point[1]-play_audio_point[0]-offset);
|
||||
play_fade_timer->start(scaled_fade_point[1]-scaled_audio_point[0]-offset);
|
||||
}
|
||||
if(offset<play_duck_up_point){
|
||||
play_duck_timer->start(play_duck_up_point-offset);
|
||||
play_duck_timer->start(scaled_duck_up_point-offset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,7 @@ class RDPlayDeck : public QObject
|
||||
bool play_fade_down_state;
|
||||
int play_segue_interval;
|
||||
bool play_point_state[3];
|
||||
int play_point_value[3][2];
|
||||
int play_point_value[RDPlayDeck::SizeOf][2];
|
||||
int play_point_gain;
|
||||
int play_audio_point[2];
|
||||
int play_audio_length;
|
||||
|
Loading…
x
Reference in New Issue
Block a user