diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-01-31 10:58:23 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-10-25 14:05:48 +0200 |
commit | 5af8f82ecd89f06e2d7c314386c0bcfbe6efa29a (patch) | |
tree | 4a7369b0c3394be099bd20e4e34810c962dcf329 /gst/videoparsers/gstvc1parse.h | |
parent | 5bb52ac98c69a1146d010ee42102d0ebf80587ca (diff) | |
download | gstreamer-plugins-bad-5af8f82ecd89f06e2d7c314386c0bcfbe6efa29a.tar.gz |
vc1parse: Add VC1 parser plugin
Diffstat (limited to 'gst/videoparsers/gstvc1parse.h')
-rw-r--r-- | gst/videoparsers/gstvc1parse.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/gst/videoparsers/gstvc1parse.h b/gst/videoparsers/gstvc1parse.h new file mode 100644 index 000000000..73e3b3f8a --- /dev/null +++ b/gst/videoparsers/gstvc1parse.h @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2011, Hewlett-Packard Development Company, L.P. + * Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>, Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __GST_VC1_PARSE_H__ +#define __GST_VC1_PARSE_H__ + +#include <gst/gst.h> +#include <gst/base/gstbaseparse.h> +#include <gst/codecparsers/gstvc1parser.h> + +G_BEGIN_DECLS + +#define GST_TYPE_VC1_PARSE \ + (gst_vc1_parse_get_type()) +#define GST_VC1_PARSE(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VC1_PARSE,GstVC1Parse)) +#define GST_VC1_PARSE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VC1_PARSE,GstVC1ParseClass)) +#define GST_IS_VC1_PARSE(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VC1_PARSE)) +#define GST_IS_VC1_PARSE_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VC1_PARSE)) + +typedef enum { + VC1_HEADER_FORMAT_NONE = 0, + VC1_HEADER_FORMAT_ASF, + VC1_HEADER_FORMAT_SEQUENCE_LAYER +} VC1HeaderFormat; + +typedef enum { + VC1_STREAM_FORMAT_BDU = 0, + VC1_STREAM_FORMAT_BDU_FRAME, + VC1_STREAM_FORMAT_SEQUENCE_LAYER_BDU, + VC1_STREAM_FORMAT_SEQUENCE_LAYER_BDU_FRAME, + VC1_STREAM_FORMAT_SEQUENCE_LAYER_RAW_FRAME, + VC1_STREAM_FORMAT_SEQUENCE_LAYER_FRAME_LAYER, + VC1_STREAM_FORMAT_ASF, + VC1_STREAM_FORMAT_FRAME_LAYER +} VC1StreamFormat; + +/* FIXME move into baseparse, or anything equivalent; + * see https://bugzilla.gnome.org/show_bug.cgi?id=650093 */ +#define GST_BASE_PARSE_FRAME_FLAG_PARSING 0x10000 + +typedef struct _GstVC1Parse GstVC1Parse; +typedef struct _GstVC1ParseClass GstVC1ParseClass; + +struct _GstVC1Parse +{ + GstBaseParse baseparse; + + /* Caps */ + GstVC1Profile profile; + GstVC1Level level; + guint32 fourcc; + gint width, height; + + gint fps_n, fps_d; + gboolean fps_from_caps; + gint par_n, par_d; + gboolean par_from_caps; + + /* TRUE if we should negotiate with downstream */ + gboolean renegotiate; + /* TRUE if the srcpads should be updated */ + gboolean update_caps; + + VC1HeaderFormat input_header_format; + VC1HeaderFormat output_header_format; + VC1StreamFormat input_stream_format; + VC1StreamFormat output_stream_format; + gboolean detecting_stream_format; + + GstVC1SeqHdr seq_hdr; + GstBuffer *seq_hdr_buffer; + GstBuffer *entrypoint_buffer; + + GstVC1SeqLayer seq_layer; + GstBuffer *seq_layer_buffer; + + /* Metadata about the currently parsed frame, only + * valid if the GstBaseParseFrame has the + * GST_BASE_PARSE_FRAME_FLAG_PARSING flag */ + GstVC1StartCode startcode; +}; + +struct _GstVC1ParseClass +{ + GstBaseParseClass parent_class; +}; + +G_END_DECLS + +GType gst_vc1_parse_get_type (void); + +#endif /* __GST_VC1_PARSE_H__ */ |