int RDLogLine::segueLength(RDLogLine::TransType next_trans) { switch(type()) { case RDLogLine::Cart: switch(next_trans) { case RDLogLine::Stop: case RDLogLine::Play: return log_effective_length; case RDLogLine::Segue: if(segueStartPoint(RDLogLine::AutoPointer)<0) { return log_effective_length; } return segueStartPoint(RDLogLine::AutoPointer)- startPoint(RDLogLine::AutoPointer); default: break; } break; case RDLogLine::Macro: return log_effective_length; case RDLogLine::Marker: return 0; default: break; } return 0; }
void __RDRenderLogLine::setRamp(RDLogLine::TransType next_trans) { if((next_trans==RDLogLine::Segue)&&(segueStartPoint()>=0)) { ll_ramp_rate=((double)RD_FADE_DEPTH)/ ((double)FramesFromMsec(segueEndPoint()-segueStartPoint())); } }
int RDLogLine::segueTail(RDLogLine::TransType next_trans) { switch(type()) { case RDLogLine::Cart: switch(next_trans) { case RDLogLine::Stop: case RDLogLine::Play: return 0; case RDLogLine::Segue: return segueEndPoint(RDLogLine::AutoPointer)- segueStartPoint(RDLogLine::AutoPointer); default: break; } break; default: return 0; } return 0; }
RDLogLine::State RDLogLine::setEvent(int mach,RDLogLine::TransType next_type, bool timescale,int len) { RDCart *cart; RDMacroEvent *rml_event; QString sql; RDSqlQuery *q; double time_ratio=1.0; switch(log_type) { case RDLogLine::Cart: cart=new RDCart(log_cart_number); if(!cart->exists()) { delete cart; #ifndef WIN32 syslog(LOG_USER|LOG_WARNING,"RDLogLine::setEvent(): no such cart, CART=%06u",log_cart_number); #endif // WIN32 log_state=RDLogLine::NoCart; return RDLogLine::NoCart; } cart->selectCut(&log_cut_name); if(log_cut_name.isEmpty()) { delete cart; #ifndef WIN32 // syslog(LOG_USER|LOG_WARNING,"RDLogLine::setEvent(): RDCut::selectCut() failed, CART=%06u",log_cart_number); #endif // WIN32 log_state=RDLogLine::NoCut; return RDLogLine::NoCut; } log_cut_number=log_cut_name.right(3).toInt(); sql=QString().sprintf("select LENGTH,START_POINT,END_POINT,\ SEGUE_START_POINT,SEGUE_END_POINT,\ SEGUE_GAIN,\ TALK_START_POINT,TALK_END_POINT,\ HOOK_START_POINT,HOOK_END_POINT,\ OUTCUE,ISRC,ISCI,DESCRIPTION from CUTS\ where CUT_NAME=\"%s\"", (const char *)log_cut_name); q=new RDSqlQuery(sql); if(!q->first()) { delete q; delete cart; #ifndef WIN32 syslog(LOG_USER|LOG_WARNING,"RDLogLine::setEvent(): no cut record found, SQL=%s",(const char *)sql); #endif // WIN32 log_state=RDLogLine::NoCut; return RDLogLine::NoCut; } if(q->value(0).toInt()==0) { delete q; delete cart; #ifndef WIN32 syslog(LOG_USER|LOG_WARNING,"RDLogLine::setEvent(): zero length cut audio, SQL=%s",(const char *)sql); #endif // WIN32 log_state=RDLogLine::NoCut; return RDLogLine::NoCut; } if(timescale) { if(len>0) { log_effective_length=len; log_forced_length=len; } else { if(log_hook_mode&& (q->value(8).toInt()>=0)&&(q->value(9).toInt()>=0)) { log_effective_length=q->value(9).toInt()-q->value(8).toInt(); log_forced_length=log_effective_length; time_ratio=1.0; timescale=false; } else { log_effective_length=cart->forcedLength(); time_ratio=(double)log_forced_length/ (q->value(2).toDouble()-q->value(1).toDouble()); if(((1.0/time_ratio)<RD_TIMESCALE_MIN)|| ((1.0/time_ratio)>RD_TIMESCALE_MAX)) { timescale=false; } } } } if(timescale) { log_start_point[0]=(int)(q->value(1).toDouble()*time_ratio); log_end_point[0]=(int)(q->value(2).toDouble()*time_ratio); if(q->value(3).toInt()>=0) { log_segue_start_point[0]=(int)(q->value(3).toDouble()*time_ratio); log_segue_end_point[0]=(int)(q->value(4).toDouble()*time_ratio); } else { log_segue_start_point[0]=-1; log_segue_end_point[0]=-1; } if(log_talk_start>=0) { log_talk_start=(int)((double)log_talk_start*time_ratio); log_talk_end=(int)(q->value(7).toDouble()*time_ratio); } else { log_talk_start=-1; log_talk_end=-1; } log_talk_length=log_talk_end-log_talk_start; } else { if(log_hook_mode&& (q->value(8).toInt()>=0)&&(q->value(9).toInt()>=0)) { log_start_point[0]=q->value(8).toInt(); log_end_point[0]=q->value(9).toInt(); log_segue_start_point[0]=-1; log_segue_end_point[0]=-1; log_talk_start=-1; log_talk_end=-1; } else { log_start_point[0]=q->value(1).toInt(); log_end_point[0]=q->value(2).toInt(); if(log_start_point[RDLogLine::LogPointer]>=0 || log_end_point[RDLogLine::LogPointer]>=0) { log_effective_length=log_end_point[RDLogLine::LogPointer]- log_start_point[RDLogLine::LogPointer]; } else { log_effective_length=q->value(0).toUInt(); } log_segue_start_point[0]=q->value(3).toInt(); log_segue_end_point[0]=q->value(4).toInt(); log_talk_start=q->value(6).toInt(); log_talk_end=q->value(7).toInt(); } log_hook_start=q->value(8).toInt(); log_hook_end=q->value(9).toInt(); if(log_talk_end>log_end_point[RDLogLine::LogPointer] && log_end_point[RDLogLine::LogPointer]>=0) { log_talk_end=log_end_point[RDLogLine::LogPointer]; } if(log_talk_end<log_start_point[RDLogLine::LogPointer]) { log_talk_end=0; log_talk_start=0; } else { if(log_talk_start<log_start_point[RDLogLine::LogPointer]) { log_talk_start=0; log_talk_end-=log_start_point[RDLogLine::LogPointer]; } if(log_talk_start>log_end_point[RDLogLine::LogPointer] && log_end_point[RDLogLine::LogPointer]>=0) { log_talk_start=0; log_talk_end=0; } } log_talk_length=log_talk_end-log_talk_start; } if(segueStartPoint(RDLogLine::AutoPointer)<0) { log_average_segue_length=cart->averageSegueLength(); } else { log_average_segue_length=segueStartPoint(RDLogLine::AutoPointer)- startPoint(RDLogLine::AutoPointer); } log_outcue=q->value(10).toString(); log_isrc=q->value(11).toString(); log_isci=q->value(12).toString(); log_description=q->value(13).toString(); log_segue_gain_cut=q->value(5).toInt(); delete q; delete cart; break; case RDLogLine::Macro: cart=new RDCart(log_cart_number); log_effective_length=cart->forcedLength(); log_average_segue_length=log_effective_length; log_forced_stop=false; rml_event=new RDMacroEvent(); rml_event->load(cart->number()); for(int i=0;i<rml_event->size();i++) { if(rml_event->command(i)->command()==RDMacro::LL) { if(rml_event->command(i)->arg(0).toInt()==mach) { log_forced_stop=true; } } } log_start_point[0]=-1; log_end_point[0]=-1; log_segue_start_point[0]=-1; log_segue_end_point[0]=-1; log_talk_length=0; log_talk_start=-1; log_talk_end=-1; log_segue_gain_cut=0; delete rml_event; delete cart; break; case RDLogLine::Marker: case RDLogLine::Track: log_cut_number=0; log_cut_name=""; log_effective_length=0; log_average_segue_length=0; log_forced_stop=false; log_start_point[0]=-1; log_end_point[0]=-1; log_segue_start_point[0]=-1; log_segue_end_point[0]=-1; log_talk_length=0; log_talk_start=-1; log_talk_end=-1; log_segue_gain_cut=0; break; default: break; } return RDLogLine::Ok; }
QString RDLogLine::xml(int line) const { QString ret; #ifndef WIN32 ret+=" <logLine>\n"; ret+=" "+RDXmlField("line",line); ret+=" "+RDXmlField("id",id()); ret+=" "+RDXmlField("type",RDLogLine::typeText(type())); ret+=" "+RDXmlField("cartType",RDCart::typeText(cartType())); ret+=" "+RDXmlField("cartNumber",cartNumber()); ret+=" "+RDXmlField("cutNumber",cutNumber()); ret+=" "+RDXmlField("groupName",groupName()); ret+=" "+RDXmlField("groupColor",groupColor().name()); ret+=" "+RDXmlField("title",title()); ret+=" "+RDXmlField("artist",artist()); ret+=" "+RDXmlField("publisher",publisher()); ret+=" "+RDXmlField("composer",composer()); ret+=" "+RDXmlField("album",album()); ret+=" "+RDXmlField("label",label()); if(year().isValid()) { ret+=" "+RDXmlField("year",year().year()); } else { ret+=" "+RDXmlField("year"); } ret+=" "+RDXmlField("client",client()); ret+=" "+RDXmlField("agency",agency()); ret+=" "+RDXmlField("userDefined",userDefined()); ret+=" "+RDXmlField("usageCode",usageCode()); ret+=" "+RDXmlField("enforceLength",enforceLength()); ret+=" "+RDXmlField("forcedLength",RDGetTimeLength(forcedLength(),true)); ret+=" "+RDXmlField("evergreen",evergreen()); ret+=" "+RDXmlField("source",RDLogLine::sourceText(source())); ret+=" "+RDXmlField("timeType",RDLogLine::timeTypeText(timeType())); if(startTime(RDLogLine::Logged).isValid()&& (!startTime(RDLogLine::Logged).isNull())) { ret+=" "+RDXmlField("startTime",startTime(RDLogLine::Logged). toString("hh:mm:ss.zzz")); } else { ret+=" "+RDXmlField("startTime"); } ret+=" "+RDXmlField("transitionType",RDLogLine::transText(transType())); ret+=" "+RDXmlField("cutQuantity",cutQuantity()); ret+=" "+RDXmlField("lastCutPlayed",lastCutPlayed()); ret+=" "+RDXmlField("markerComment",markerComment()); ret+=" "+RDXmlField("markerLabel",markerLabel()); ret+=" "+RDXmlField("originUser",originUser()); ret+=" "+RDXmlField("originDateTime",originDateTime()); ret+=" "+RDXmlField("startPoint",startPoint(RDLogLine::CartPointer), "src=\"cart\""); ret+=" "+RDXmlField("startPoint",startPoint(RDLogLine::LogPointer), "src=\"log\""); ret+=" "+RDXmlField("endPoint",endPoint(RDLogLine::CartPointer), "src=\"cart\""); ret+=" "+RDXmlField("endPoint",endPoint(RDLogLine::LogPointer), "src=\"log\""); ret+=" "+RDXmlField("segueStartPoint", segueStartPoint(RDLogLine::CartPointer), "src=\"cart\""); ret+=" "+RDXmlField("segueStartPoint", segueStartPoint(RDLogLine::LogPointer),"src=\"log\""); ret+=" "+RDXmlField("segueEndPoint", segueEndPoint(RDLogLine::CartPointer), "src=\"cart\""); ret+=" "+RDXmlField("segueEndPoint", segueEndPoint(RDLogLine::LogPointer),"src=\"log\""); ret+=" "+RDXmlField("segueGain",segueGain()); ret+=" "+RDXmlField("fadeupPoint", fadeupPoint(RDLogLine::CartPointer),"src=\"cart\""); ret+=" "+RDXmlField("fadeupPoint", fadeupPoint(RDLogLine::LogPointer),"src=\"log\""); ret+=" "+RDXmlField("fadeupGain",fadeupGain()); ret+=" "+RDXmlField("fadedownPoint", fadedownPoint(RDLogLine::CartPointer),"src=\"cart\""); ret+=" "+RDXmlField("fadedownPoint", fadedownPoint(RDLogLine::LogPointer),"src=\"log\""); ret+=" "+RDXmlField("duckUpGain",duckUpGain()); ret+=" "+RDXmlField("duckDownGain",duckDownGain()); ret+=" "+RDXmlField("talkStartPoint",talkStartPoint()); ret+=" "+RDXmlField("talkEndPoint",talkEndPoint()); ret+=" "+RDXmlField("hookMode",hookMode()); ret+=" "+RDXmlField("hookStartPoint",hookStartPoint()); ret+=" "+RDXmlField("hookEndPoint",hookEndPoint()); ret+=" </logLine>\n"; #endif // WIN32 return ret; }