diff -r 29ecd5cb86b3 -r d43ce56a1534 gst_plugins_good/gst/avi/gstavidemux.h --- a/gst_plugins_good/gst/avi/gstavidemux.h Tue Jul 06 14:35:10 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/* GStreamer - * Copyright (C) <1999> Erik Walthinsen - * Copyright (C) <2006> Nokia Corporation (contact ) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef __GST_AVI_DEMUX_H__ -#define __GST_AVI_DEMUX_H__ - -#include - -#include "avi-ids.h" -#include "gst/riff/riff-ids.h" -#include "gst/riff/riff-read.h" -#include - -G_BEGIN_DECLS - -#define GST_TYPE_AVI_DEMUX \ - (gst_avi_demux_get_type ()) -#define GST_AVI_DEMUX(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_AVI_DEMUX, GstAviDemux)) -#define GST_AVI_DEMUX_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_AVI_DEMUX, GstAviDemuxClass)) -#define GST_IS_AVI_DEMUX(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_AVI_DEMUX)) -#define GST_IS_AVI_DEMUX_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_AVI_DEMUX)) - -#define GST_AVI_DEMUX_MAX_STREAMS 16 - -#define CHUNKID_TO_STREAMNR(chunkid) \ - ((((chunkid) & 0xff) - '0') * 10 + \ - (((chunkid) >> 8) & 0xff) - '0') - -#define GST_AVI_INDEX_ENTRY_FLAG_KEYFRAME 1 - -/* 48 bytes */ -typedef struct { - guint index_nr; /* = (entry-index_entries)/sizeof(gst_avi_index_entry); */ - guchar stream_nr; - guchar flags; - guint64 ts; - guint64 dur; /* =entry[1].ts-entry->ts */ - guint64 offset; - guint64 bytes_before; /* calculated */ - guint32 frames_before; /* calculated */ - guint32 size; /* could be read from the chunk (if we don't split) */ -} gst_avi_index_entry; - -typedef struct { - /* index of this streamcontext */ - guint num; - - /* pad*/ - GstPad *pad; - - /* stream info and headers */ - gst_riff_strh *strh; - union { - gst_riff_strf_vids *vids; - gst_riff_strf_auds *auds; - gst_riff_strf_iavs *iavs; - gpointer data; - } strf; - GstBuffer *extradata, *initdata; - gchar *name; - - /* current position (byte, frame, time) and other status vars */ - guint current_frame; - guint64 current_byte; - GstFlowReturn last_flow; - gboolean discont; - - /* stream length */ - guint64 total_bytes; - guint32 total_frames; - guint32 total_blocks; - /* stream length according to index */ - GstClockTime idx_duration; - /* stream length according to header */ - GstClockTime hdr_duration; - /* stream length based on header/index */ - GstClockTime duration; - - /* VBR indicator */ - gboolean is_vbr; - - /* openDML support (for files >4GB) */ - gboolean superindex; - guint64 *indexes; - - GstTagList *taglist; -} avi_stream_context; - -typedef enum { - GST_AVI_DEMUX_START, - GST_AVI_DEMUX_HEADER, - GST_AVI_DEMUX_MOVI, -} GstAviDemuxState; - -typedef enum { - GST_AVI_DEMUX_HEADER_TAG_LIST, - GST_AVI_DEMUX_HEADER_AVIH, - GST_AVI_DEMUX_HEADER_ELEMENTS, - GST_AVI_DEMUX_HEADER_INFO, - GST_AVI_DEMUX_HEADER_JUNK, - GST_AVI_DEMUX_HEADER_DATA -} GstAviDemuxHeaderState; - -typedef struct _GstAviDemux { - GstElement parent; - - /* pads */ - GstPad *sinkpad; - - /* AVI decoding state */ - GstAviDemuxState state; - GstAviDemuxHeaderState header_state; - guint64 offset; - - /* index */ - gst_avi_index_entry *index_entries; - guint index_size; - guint64 index_offset; - guint current_entry; - guint reverse_start_index; - guint reverse_stop_index; - - /* streams */ - guint num_streams; - guint num_v_streams; - guint num_a_streams; - guint num_t_streams; /* subtitle text streams */ - - avi_stream_context stream[GST_AVI_DEMUX_MAX_STREAMS]; - - /* for streaming mode */ - gboolean streaming; - gboolean have_eos; - GstAdapter *adapter; - - /* some stream info for length */ - gst_riff_avih *avih; - - /* segment in TIME */ - GstSegment segment; - gboolean segment_running; - - /* pending tags/events */ - GstEvent *seek_event; - GstTagList *globaltags; - gboolean got_tags; - -} GstAviDemux; - -typedef struct _GstAviDemuxClass { - GstElementClass parent_class; -} GstAviDemuxClass; - -GType gst_avi_demux_get_type (void); - -G_END_DECLS - -#endif /* __GST_AVI_DEMUX_H__ */