/* Must be called with object lock */ static void gst_timecodestamper_reset_timecode (GstTimeCodeStamper * timecodestamper) { GDateTime *jam = NULL; if (timecodestamper->first_tc && timecodestamper->first_tc->config.latest_daily_jam) jam = g_date_time_ref (timecodestamper->first_tc->config.latest_daily_jam); else if (timecodestamper->current_tc->config.latest_daily_jam) jam = g_date_time_ref (timecodestamper->current_tc->config.latest_daily_jam); gst_video_time_code_clear (timecodestamper->current_tc); /* FIXME: What if the buffer doesn't contain both top and bottom fields? */ gst_video_time_code_init (timecodestamper->current_tc, timecodestamper->vinfo.fps_n, timecodestamper->vinfo.fps_d, jam, timecodestamper->vinfo.interlace_mode == GST_VIDEO_INTERLACE_MODE_PROGRESSIVE ? 0 : GST_VIDEO_TIME_CODE_FLAGS_INTERLACED, 0, 0, 0, 0, 0); if (jam) g_date_time_unref (jam); if (timecodestamper->first_tc) { timecodestamper->current_tc->hours = timecodestamper->first_tc->hours; timecodestamper->current_tc->minutes = timecodestamper->first_tc->minutes; timecodestamper->current_tc->seconds = timecodestamper->first_tc->seconds; timecodestamper->current_tc->frames = timecodestamper->first_tc->frames; timecodestamper->current_tc->field_count = timecodestamper->first_tc->field_count; } gst_timecodestamper_set_drop_frame (timecodestamper); }
/** * gst_video_time_code_new_empty: * * Returns: a new empty #GstVideoTimeCode * * Since: 1.10 */ GstVideoTimeCode * gst_video_time_code_new_empty (void) { GstVideoTimeCode *tc; tc = g_new0 (GstVideoTimeCode, 1); gst_video_time_code_clear (tc); return tc; }