gst/avi/gstavidemux.*: Initial streaming support for avidemux (fixes #336465)

Original commit message from CVS:
* gst/avi/gstavidemux.c: (gst_avi_demux_class_init),
(gst_avi_demux_init), (gst_avi_demux_dispose),
(gst_avi_demux_reset), (gst_avi_demux_index_next),
(gst_avi_demux_index_entry_for_time), (gst_avi_demux_src_convert),
(gst_avi_demux_handle_src_query), (gst_avi_demux_handle_src_event),
(gst_avi_demux_peek_chunk_info), (gst_avi_demux_peek_chunk),
(gst_avi_demux_stream_init_push), (gst_avi_demux_stream_init_pull),
(gst_avi_demux_parse_subindex),
(gst_avi_demux_read_subindexes_push),
(gst_avi_demux_read_subindexes_pull), (gst_avi_demux_parse_stream),
(sort), (gst_avi_demux_parse_index), (gst_avi_demux_stream_index),
(gst_avi_demux_sync), (gst_avi_demux_peek_tag),
(gst_avi_demux_massage_index), (gst_avi_demux_stream_header_push),
(gst_avi_demux_stream_header_pull),
(gst_avi_demux_process_next_entry), (gst_avi_demux_stream_data),
(push_tag_lists), (gst_avi_demux_loop), (gst_avi_demux_chain),
(gst_avi_demux_sink_activate), (gst_avi_demux_activate_push),
(gst_avi_demux_change_state):
* gst/avi/gstavidemux.h:
Initial streaming support for avidemux (fixes #336465)
This commit is contained in:
Stefan Kost 2006-08-23 15:33:47 +00:00
parent 03733a2d28
commit e91b76790c
3 changed files with 948 additions and 131 deletions

View file

@ -1,3 +1,26 @@
2006-08-23 Stefan Kost <ensonic@users.sf.net>
* gst/avi/gstavidemux.c: (gst_avi_demux_class_init),
(gst_avi_demux_init), (gst_avi_demux_dispose),
(gst_avi_demux_reset), (gst_avi_demux_index_next),
(gst_avi_demux_index_entry_for_time), (gst_avi_demux_src_convert),
(gst_avi_demux_handle_src_query), (gst_avi_demux_handle_src_event),
(gst_avi_demux_peek_chunk_info), (gst_avi_demux_peek_chunk),
(gst_avi_demux_stream_init_push), (gst_avi_demux_stream_init_pull),
(gst_avi_demux_parse_subindex),
(gst_avi_demux_read_subindexes_push),
(gst_avi_demux_read_subindexes_pull), (gst_avi_demux_parse_stream),
(sort), (gst_avi_demux_parse_index), (gst_avi_demux_stream_index),
(gst_avi_demux_sync), (gst_avi_demux_peek_tag),
(gst_avi_demux_massage_index), (gst_avi_demux_stream_header_push),
(gst_avi_demux_stream_header_pull),
(gst_avi_demux_process_next_entry), (gst_avi_demux_stream_data),
(push_tag_lists), (gst_avi_demux_loop), (gst_avi_demux_chain),
(gst_avi_demux_sink_activate), (gst_avi_demux_activate_push),
(gst_avi_demux_change_state):
* gst/avi/gstavidemux.h:
Initial streaming support for avidemux (fixes #336465)
2006-08-22 Tim-Philipp Müller <tim at centricular dot net> 2006-08-22 Tim-Philipp Müller <tim at centricular dot net>
* docs/plugins/gst-plugins-good-plugins-docs.sgml: * docs/plugins/gst-plugins-good-plugins-docs.sgml:

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,6 @@
/* GStreamer /* GStreamer
* Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu> * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
* Copyright (C) <2006> Nokia Corporation (contact <stefan.kost@nokia.com>)
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public * modify it under the terms of the GNU Library General Public
@ -25,6 +26,7 @@
#include "avi-ids.h" #include "avi-ids.h"
#include "gst/riff/riff-ids.h" #include "gst/riff/riff-ids.h"
#include "gst/riff/riff-read.h" #include "gst/riff/riff-read.h"
#include <gst/base/gstadapter.h>
G_BEGIN_DECLS G_BEGIN_DECLS
@ -102,6 +104,15 @@ typedef enum {
GST_AVI_DEMUX_MOVI, GST_AVI_DEMUX_MOVI,
} GstAviDemuxState; } 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 { typedef struct _GstAviDemux {
GstElement parent; GstElement parent;
@ -110,6 +121,7 @@ typedef struct _GstAviDemux {
/* AVI decoding state */ /* AVI decoding state */
GstAviDemuxState state; GstAviDemuxState state;
GstAviDemuxHeaderState header_state;
guint64 offset; guint64 offset;
/* index */ /* index */
@ -122,15 +134,20 @@ typedef struct _GstAviDemux {
guint num_streams; guint num_streams;
guint num_v_streams; guint num_v_streams;
guint num_a_streams; guint num_a_streams;
avi_stream_context stream[GST_AVI_DEMUX_MAX_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 */ /* some stream info for length */
gst_riff_avih *avih; gst_riff_avih *avih;
/* segment in TIME */ /* segment in TIME */
GstSegment segment; GstSegment segment;
gboolean segment_running; gboolean segment_running;
gboolean streaming;
/* pending tags/events */ /* pending tags/events */
GstEvent *seek_event; GstEvent *seek_event;