Revert "WIP: Revert "Revert "timecodestamper: Modify ltc-add to tc-add"""
[platform/upstream/gstreamer.git] / gst / timecode / gsttimecodestamper.h
index e521538..0aa6ea4 100644 (file)
 
 #include <gst/gst.h>
 #include <gst/video/video.h>
+#include <gst/audio/audio.h>
+
+#if HAVE_LTC
+#include <ltc.h>
+#endif
 
 #define GST_TYPE_TIME_CODE_STAMPER            (gst_timecodestamper_get_type())
 #define GST_TIME_CODE_STAMPER(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TIME_CODE_STAMPER,GstTimeCodeStamper))
 #define GST_IS_TIME_CODE_STAMPER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TIME_CODE_STAMPER))
 #define GST_IS_TIME_CODE_STAMPER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_TIME_CODE_STAMPER))
 
+#define GST_TYPE_TIME_CODE_STAMPER_SOURCE (gst_timecodestamper_source_get_type())
+
 typedef struct _GstTimeCodeStamper GstTimeCodeStamper;
 typedef struct _GstTimeCodeStamperClass GstTimeCodeStamperClass;
 
+typedef enum GstTimeCodeStamperSource
+{
+  GST_TIME_CODE_STAMPER_NOREPLACE,
+  GST_TIME_CODE_STAMPER_INTERN,
+  GST_TIME_CODE_STAMPER_EXISTING,
+  GST_TIME_CODE_STAMPER_LTC,
+  GST_TIME_CODE_STAMPER_NRZERO
+} GstTimeCodeStamperSource;
+
 /**
  * GstTimeCodeStamper:
  *
@@ -45,15 +61,34 @@ struct _GstTimeCodeStamper
 {
   GstBaseTransform videofilter;
 
+  GstPad *ltcpad;
+
   /* < private > */
-  gboolean override_existing;
+  GstTimeCodeStamperSource tc_source;
   gboolean drop_frame;
   GstVideoTimeCode *current_tc;
   GstVideoTimeCode *first_tc;
+  GstVideoTimeCode *ltc_current_tc;
+  GstVideoTimeCode *ltc_intern_tc;
+  GstClockTime ltc_max_offset;
+  gint ltc_add;
+  GstSegment ltc_segment;
   GstVideoInfo vinfo;
-  GstClock *source_clock;
   gboolean post_messages;
   gboolean first_tc_now;
+  gboolean is_flushing;
+  gboolean no_wait;
+  GMutex mutex;
+
+#if HAVE_LTC
+  LTCDecoder *ltc_dec;
+  ltc_off_t ltc_total;
+  GstAudioInfo audio_info;
+  GstClockTime ltc_first_runtime;
+  GstClockTime ltc_audio_endtime;
+  GCond ltc_cond_video;
+  GCond ltc_cond_audio;
+#endif
 };
 
 struct _GstTimeCodeStamperClass
@@ -63,5 +98,7 @@ struct _GstTimeCodeStamperClass
 
 GType gst_timecodestamper_get_type (void);
 
+GType gst_timecodestamper_source_get_type (void);
+
 G_END_DECLS
 #endif /* __GST_TIME_CODE_STAMPER_H__ */