QString CPlayer::replace_tokens(QString str, bool hidePlayingState) { QString status_text = ""; switch(GetState()) { case PLAYER_STOPPED: if(GetPlayer()=="") status_text = ""; else status_text = "Stopped"; break; case PLAYER_PAUSED: status_text = "Paused"; break; case PLAYER_PLAYING: status_text = (hidePlayingState? "" : "Playing"); break; } replace_token(str,"title" ,GetTitle()); replace_token(str,"artist" ,GetArtist()); replace_token(str,"album" ,GetAlbum()); replace_token(str,"duration" ,GetDuration(),GetDuration()); replace_token(str,"played" ,GetPosition(),GetDuration()); replace_token(str,"remaining",GetDuration() - GetPosition(),GetDuration()); replace_token(str,"status" ,status_text); replace_token(str,"player" ,GetPlayer()); replace_token(str,"file" ,GetFilePath()); replace_token(str,"shuffle" ,(GetShuffle() ? "Shuffle" : "")); replace_token(str,"repeat" ,(GetRepeat() ? "Repeat" : "")); replace_token(str,"rating" ,QString::number(GetRating())); replace_token(str,"lyrics" ,GetLyrics()); return str; }
//同步计算视频时间戳 double SynVideo(AvManager *manager,double pts) { double delay = manager->videoTimeBase;; if(pts != 0) manager->videoClock = pts; else pts = manager->videoClock; delay += GetRepeat()*(delay * 0.5); manager->videoClock += delay; return pts; }
static int ReadRepsPass2(FILE *f, RepData *Reps) { rewind(f); GFFLineNr = 0; int RepCount = 0; GFFRecord Rec; while (GetNextGFFRecord(f, Rec)) { if (0 != strcmp(Rec.Feature, "repeat")) continue; static char *Repeat = GetRepeat(Rec); RepData &Rep = Reps[RepCount]; ParseRepeat(Repeat, Rep); if (Rec.Start <= 0 || Rec.End <= 0 || Rec.Start > Rec.End) Warning("GFF line %d: invalid start %d / end %d", GFFLineNr, Rec.Start, Rec.End); const int Length = Rec.End - Rec.Start + 1; Rep.ContigLabel = strsave(Rec.SeqName); Rep.ContigFrom = Rec.Start - 1; Rep.ContigTo = Rep.ContigFrom + Length - 1; if (Rec.Strand == '+') Rep.Rev = false; else if (Rec.Strand == '-') Rep.Rev = true; else Quit("GFF line %d, Invalid strand %c", GFFLineNr, Rec.Strand); ++RepCount; } return RepCount; }
void dng_image::GetEdge (dng_pixel_buffer &buffer, edge_option edgeOption, const dng_rect &srcArea, const dng_rect &dstArea) const { switch (edgeOption) { case edge_zero: { buffer.SetZero (dstArea, buffer.fPlane, buffer.fPlanes); break; } case edge_repeat: { GetRepeat (buffer, srcArea, dstArea); break; } case edge_repeat_zero_last: { if (buffer.fPlanes > 1) { dng_pixel_buffer buffer1 (buffer); buffer1.fPlanes--; GetEdge (buffer1, edge_repeat, srcArea, dstArea); } dng_pixel_buffer buffer2 (buffer); buffer2.fPlane = buffer.fPlanes - 1; buffer2.fPlanes = 1; buffer2.fData = buffer.DirtyPixel (buffer2.fArea.t, buffer2.fArea.l, buffer2.fPlane); GetEdge (buffer2, edge_zero, srcArea, dstArea); break; } default: { ThrowProgramError (); } } }