summaryrefslogtreecommitdiffstats
path: root/ext/jpeg/gstjpegdec.h
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2005-08-08 12:13:08 +0000
committerTim-Philipp Müller <tim@centricular.net>2005-08-08 12:13:08 +0000
commit7cc1cf7dbba5bdab0475c97dc7aeb2e036c77980 (patch)
treee5929eb0f201fd21d4db4a7c15e8ebe8a031d2b2 /ext/jpeg/gstjpegdec.h
parent284327da55e36fcda8e9665b4e01f7d5a198d738 (diff)
Port jpegdec to 0.9; handles 'progressive loading' now, ie. input does no longer need to be one single buffer.
Original commit message from CVS: * configure.ac: * ext/Makefile.am: * ext/jpeg/Makefile.am: * ext/jpeg/gstjpeg.c: (plugin_init): * ext/jpeg/gstjpegdec.c: (gst_jpeg_dec_get_type), (gst_jpeg_dec_finalize), (gst_jpeg_dec_base_init), (gst_jpeg_dec_class_init), (gst_jpeg_dec_fill_input_buffer), (gst_jpeg_dec_init_source), (gst_jpeg_dec_skip_input_data), (gst_jpeg_dec_resync_to_restart), (gst_jpeg_dec_term_source), (gst_jpeg_dec_my_output_message), (gst_jpeg_dec_my_emit_message), (gst_jpeg_dec_my_error_exit), (gst_jpeg_dec_init), (is_jpeg_start_marker), (is_jpeg_end_marker), (gst_jpeg_dec_find_jpeg_header), (gst_jpeg_dec_ensure_header), (gst_jpeg_dec_have_end_marker), (gst_jpeg_dec_parse_tag_has_entropy_segment), (gst_jpeg_dec_parse_image_data), (gst_jpeg_dec_chain), (gst_jpeg_dec_change_state): * ext/jpeg/gstjpegdec.h: Port jpegdec to 0.9; handles 'progressive loading' now, ie. input does no longer need to be one single buffer.
Diffstat (limited to 'ext/jpeg/gstjpegdec.h')
-rw-r--r--ext/jpeg/gstjpegdec.h86
1 files changed, 47 insertions, 39 deletions
diff --git a/ext/jpeg/gstjpegdec.h b/ext/jpeg/gstjpegdec.h
index 05187873..d52efcf8 100644
--- a/ext/jpeg/gstjpegdec.h
+++ b/ext/jpeg/gstjpegdec.h
@@ -18,73 +18,81 @@
*/
-#ifndef __GST_JPEGDEC_H__
-#define __GST_JPEGDEC_H__
+#ifndef __GST_JPEG_DEC_H__
+#define __GST_JPEG_DEC_H__
-#include <gst/gst.h>
+#include <setjmp.h>
+#include <gst/gstelement.h>
+
/* this is a hack hack hack to get around jpeglib header bugs... */
#ifdef HAVE_STDLIB_H
# undef HAVE_STDLIB_H
#endif
#include <jpeglib.h>
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define GST_TYPE_JPEGDEC \
- (gst_jpegdec_get_type())
-#define GST_JPEGDEC(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_JPEGDEC,GstJpegDec))
-#define GST_JPEGDEC_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_JPEGDEC,GstJpegDec))
-#define GST_IS_JPEGDEC(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_JPEGDEC))
-#define GST_IS_JPEGDEC_CLASS(obj) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_JPEGDEC))
+G_BEGIN_DECLS
+
+#define GST_TYPE_JPEG_DEC \
+ (gst_jpeg_dec_get_type())
+#define GST_JPEG_DEC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_JPEG_DEC,GstJpegDec))
+#define GST_JPEG_DEC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_JPEG_DEC,GstJpegDec))
+#define GST_IS_JPEG_DEC(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_JPEG_DEC))
+#define GST_IS_JPEG_DEC_CLASS(obj) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_JPEG_DEC))
+
+typedef struct _GstJpegDec GstJpegDec;
+typedef struct _GstJpegDecClass GstJpegDecClass;
+
+struct GstJpegDecErrorMgr {
+ struct jpeg_error_mgr pub; /* public fields */
+ jmp_buf setjmp_buffer;
+};
-typedef struct _GstJpegDec GstJpegDec;
-typedef struct _GstJpegDecClass GstJpegDecClass;
+struct GstJpegDecSourceMgr {
+ struct jpeg_source_mgr pub; /* public fields */
+ GstJpegDec *dec;
+};
+/* Can't use GstBaseTransform, because GstBaseTransform
+ * doesn't handle the N buffers in, 1 buffer out case,
+ * but only the 1-in 1-out case */
struct _GstJpegDec {
GstElement element;
/* pads */
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad;
+ GstPad *srcpad;
+
+ GstBuffer *tempbuf;
- int parse_state;
/* the timestamp of the next frame */
- guint64 next_time;
- /* the interval between frames */
- guint64 time_interval;
+ guint64 next_ts;
/* video state */
- gint format;
- gint width;
- gint height;
- gdouble fps;
- /* the size of the output buffer */
- gint outsize;
+ guint width;
+ guint height;
+ gdouble fps;
+
/* the jpeg line buffer */
guchar **line[3];
struct jpeg_decompress_struct cinfo;
- struct jpeg_error_mgr jerr;
- struct jpeg_source_mgr jsrc;
+ struct GstJpegDecErrorMgr jerr;
+ struct GstJpegDecSourceMgr jsrc;
};
struct _GstJpegDecClass {
- GstElementClass parent_class;
+ GstElementClass parent_class;
};
-GType gst_jpegdec_get_type(void);
+GType gst_jpeg_dec_get_type(void);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
-#endif /* __GST_JPEGDEC_H__ */
+#endif /* __GST_JPEG_DEC_H__ */