func sample_wipe(vsw *libvsw.Vsw, src1, src2 int) { log.Printf("wipeTest src1=%d src2=%d\n", src1, src2) vsw.Cut(src1) for wipe_type := 0; wipe_type < libvsw.WIPE_TYPE_NUM; wipe_type++ { log.Printf("wipe_type=%d\n", wipe_type) vsw.Wipe(rate, src2, wipe_type) time.Sleep((rate + wait) * time.Millisecond) vsw.Wipe(rate, src1, wipe_type) time.Sleep((rate + wait) * time.Millisecond) } }
func loop(vsw *libvsw.Vsw, pa Params, notify chan Params) { index := 0 for { select { case pa = <-notify: log.Printf("got from chan\n") saveParams(pa) if pa.StartLiveBroadcast { vsw.ChangeLiveBroadcastState(1) } else { vsw.ChangeLiveBroadcastState(0) } if pa.UploadStillPicture { vsw.UploadFile(pa.Picture) } case <-time.After(time.Second * time.Duration(pa.Interval)): log.Printf("periodic timer\n") } index = (index + 1) % 4 i := 0 for ; i < 4; i++ { if pa.Input[i] == true { break } } if i == 4 { // no input checked pa.Interval = 1000000 continue } for pa.Input[index] == false { index = (index + 1) % 4 } switch pa.Trans & 0xff { case 0: vsw.Cut(index + 1) case 1: vsw.Mix(pa.Rate, index+1) case 2: vsw.Dip(pa.Rate, index+1, ((pa.Trans>>8)&3)+1) case 255: vsw.Wipe(pa.Rate, index+1, random(0, libvsw.WIPE_TYPE_NUM-1)) default: vsw.Wipe(pa.Rate, index+1, pa.Trans-libvsw.TRANSITION_TYPE_WIPE) } } }