diff --git a/src/gstducatividdec.h b/src/gstducatividdec.h
index 0b5e2a536541ce8c1a1c996e55b24c1b8a6e1c25..19a9b335249d680e7d86d8170a9d100f8705c1b7 100644 (file)
--- a/src/gstducatividdec.h
+++ b/src/gstducatividdec.h
typedef struct _GstDucatiVidDec GstDucatiVidDec;
typedef struct _GstDucatiVidDecClass GstDucatiVidDecClass;
+#define MAX_BACKLOG_FRAMES 16
+
struct _GstDucatiVidDec
{
GstElement parent;
gboolean needs_flushing;
+ GHashTable *passed_in_bufs;
+
#define NDTS 32
GstClockTime dts_queue[NDTS];
gint dts_ridx, dts_widx;
XDAS_Int16 pageMemType;
struct omap_device *device;
+
+ /* Frames waiting to be reordered */
+ GstBuffer *backlog_frames[MAX_BACKLOG_FRAMES + 1];
+ gint backlog_maxframes;
+ gint backlog_nframes;
+ gint backlog_max_maxframes;
};
struct _GstDucatiVidDecClass
/**
* Called to check whether it's a good idea to drop buf or not.
*/
- gboolean (*drop_frame) (GstDucatiVidDec * self, GstBuffer * buf, gint64 diff);
+ gboolean (*can_drop_frame) (GstDucatiVidDec * self, GstBuffer * buf, gint64 diff);
gboolean (*query) (GstDucatiVidDec * self, GstPad * pad, GstQuery * query,
gboolean * forward);
+
+ /**
+ * Called to push a decoder buffer. Consumes reference to 'buf'.
+ */
+ GstFlowReturn (*push_output) (GstDucatiVidDec * self, GstBuffer * buf);
+
+ /**
+ * Called before a flush happens.
+ */
+ void (*on_flush) (GstDucatiVidDec * self, gboolean eos);
+
+ /**
+ * Called to set new caps on the sink pad.
+ */
+ gboolean (*set_sink_caps) (GstDucatiVidDec * self, GstCaps *caps);
};
GType gst_ducati_viddec_get_type (void);