diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2005-08-08 12:13:08 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2005-08-08 12:13:08 +0000 |
commit | 7cc1cf7dbba5bdab0475c97dc7aeb2e036c77980 (patch) | |
tree | e5929eb0f201fd21d4db4a7c15e8ebe8a031d2b2 /ext/jpeg/gstjpegdec.h | |
parent | 284327da55e36fcda8e9665b4e01f7d5a198d738 (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.h | 86 |
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__ */ |