예제 #1
0
int detect_discontinuity(LTCFrameExt *frame, LTCFrameExt *prev, int fps, int use_date, int fuzzyfps) {
    int discontinuity_detected = 0;

    if (fuzzyfps && (
	  (frame->reverse  && prev->ltc.frame_units == 0)
	||(!frame->reverse && frame->ltc.frame_units == 0)
	)){
      memcpy(prev, frame, sizeof(LTCFrameExt));
      return 0;
    }

    if (frame->reverse)
      ltc_frame_decrement(&prev->ltc, fps,
	  fps == 25? LTC_TV_625_50 : LTC_TV_525_60, use_date?LTC_USE_DATE:0);
    else
      ltc_frame_increment(&prev->ltc, fps,
	  fps == 25? LTC_TV_625_50 : LTC_TV_525_60, use_date?LTC_USE_DATE:0);
    if (cmp_ltc_frametime(&prev->ltc, &frame->ltc, use_date?1:0))
      discontinuity_detected = 1;
    memcpy(prev, frame, sizeof(LTCFrameExt));
    return discontinuity_detected;
}
예제 #2
0
파일: ltc.c 프로젝트: TheSyncFactory/libltc
int ltc_encoder_inc_timecode(LTCEncoder *e) {
	return ltc_frame_increment (&e->f, rint(e->fps), e->standard, e->flags);
}