X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fwavparse%2Fgstwavparse.h;h=82838e4cb777938623eab4a18c62eadb3dc2cca9;hb=91a58ccda12011324ca1075a93ab70fa3c2c2f72;hp=dad8e6273a4d1bdcbbb13f57681a78b01b5634c4;hpb=23dab0691ca3eeae2718522d56b70b18c809e813;p=platform%2Fupstream%2Fgst-plugins-good.git diff --git a/gst/wavparse/gstwavparse.h b/gst/wavparse/gstwavparse.h index dad8e62..82838e4 100644 --- a/gst/wavparse/gstwavparse.h +++ b/gst/wavparse/gstwavparse.h @@ -1,5 +1,6 @@ /* GStreamer * Copyright (C) <1999> Erik Walthinsen + * Copyright (C) <2006> Nokia Corporation, Stefan Kost . * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -22,67 +23,101 @@ #define __GST_WAVPARSE_H__ -#include #include -#include - - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +#include "gst/riff/riff-ids.h" +#include "gst/riff/riff-read.h" +#include +G_BEGIN_DECLS #define GST_TYPE_WAVPARSE \ (gst_wavparse_get_type()) #define GST_WAVPARSE(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_WAVPARSE,GstWavParse)) #define GST_WAVPARSE_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_WAVPARSE,GstWavParse)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_WAVPARSE,GstWavParseClass)) #define GST_IS_WAVPARSE(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WAVPARSE)) -#define GST_IS_WAVPARSE_CLASS(obj) \ +#define GST_IS_WAVPARSE_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_WAVPARSE)) - -#define GST_WAVPARSE_UNKNOWN 0 /* initialized state */ -#define GST_WAVPARSE_CHUNK_FMT 1 /* searching for fmt */ -#define GST_WAVPARSE_CHUNK_DATA 2 /* searching for data */ -#define GST_WAVPARSE_DATA 3 /* in data region */ -#define GST_WAVPARSE_OTHER 4 /* in unknown region */ +typedef enum { + GST_WAVPARSE_START, + GST_WAVPARSE_HEADER, + GST_WAVPARSE_DATA +} GstWavParseState; typedef struct _GstWavParse GstWavParse; typedef struct _GstWavParseClass GstWavParseClass; +/** + * GstWavParse: + * + * Opaque data structure. + */ struct _GstWavParse { - GstElement element; + GstElement parent; /* pads */ GstPad *sinkpad,*srcpad; - /* WAVE decoding state */ - gint state; - - /* RIFF decoding state */ - GstRiff *riff; - gulong riff_nextlikely; + /* for delayed source pad creation for when + * we have the first chunk of data and know + * the format for sure */ + GstCaps *caps; + GstTagList *tags; + GstEvent *start_segment; - /* expected length of audio */ - gulong size; + /* WAVE decoding state */ + GstWavParseState state; + gboolean abort_buffering; /* format of audio, see defines below */ gint format; /* useful audio data */ - gint bps; - gint rate; - gint channels; - gint width; - - gint64 offset; - gint64 datastart; - gboolean need_discont; - - GstBuffer *buf; + guint16 depth; + guint32 rate; + guint16 channels; + guint16 blockalign; + guint16 width; + guint32 av_bps; + guint32 fact; + + /* real bps used or 0 when no bitrate is known */ + guint32 bps; + gboolean vbr; + + guint bytes_per_sample; + guint max_buf_size; + + /* position in data part */ + guint64 offset; + guint64 end_offset; + guint64 dataleft; + /* offset/length of data part */ + guint64 datastart; + guint64 datasize; + /* duration in time */ + guint64 duration; + + /* pending seek */ + GstEvent *seek_event; + + /* For streaming */ + GstAdapter *adapter; + gboolean got_fmt; + gboolean streaming; + + /* configured segment, start/stop expressed in time or bytes */ + GstSegment segment; + + /* for late pad configuration */ + gboolean first; + /* discont after seek */ + gboolean discont; + + gboolean ignore_length; }; struct _GstWavParseClass { @@ -91,50 +126,6 @@ struct _GstWavParseClass { GType gst_wavparse_get_type(void); -typedef struct _GstWavParseFormat GstWavParseFormat; - -struct _GstWavParseFormat { - gint16 wFormatTag; - guint16 wChannels; - guint32 dwSamplesPerSec; - guint32 dwAvgBytesPerSec; - guint16 wBlockAlign; - guint16 wBitsPerSample; -}; - -/**** from public Microsoft RIFF docs ******/ -#define GST_RIFF_WAVE_FORMAT_UNKNOWN (0x0000) -#define GST_RIFF_WAVE_FORMAT_PCM (0x0001) -#define GST_RIFF_WAVE_FORMAT_ADPCM (0x0002) -#define GST_RIFF_WAVE_FORMAT_IBM_CVSD (0x0005) -#define GST_RIFF_WAVE_FORMAT_ALAW (0x0006) -#define GST_RIFF_WAVE_FORMAT_MULAW (0x0007) -#define GST_RIFF_WAVE_FORMAT_OKI_ADPCM (0x0010) -#define GST_RIFF_WAVE_FORMAT_DVI_ADPCM (0x0011) -#define GST_RIFF_WAVE_FORMAT_DIGISTD (0x0015) -#define GST_RIFF_WAVE_FORMAT_DIGIFIX (0x0016) -#define GST_RIFF_WAVE_FORMAT_YAMAHA_ADPCM (0x0020) -#define GST_RIFF_WAVE_FORMAT_DSP_TRUESPEECH (0x0022) -#define GST_RIFF_WAVE_FORMAT_GSM610 (0x0031) -#define GST_RIFF_WAVE_FORMAT_MSN (0x0032) -#define GST_RIFF_WAVE_FORMAT_MPEGL12 (0x0050) -#define GST_RIFF_WAVE_FORMAT_MPEGL3 (0x0055) -#define GST_RIFF_IBM_FORMAT_MULAW (0x0101) -#define GST_RIFF_IBM_FORMAT_ALAW (0x0102) -#define GST_RIFF_IBM_FORMAT_ADPCM (0x0103) -#define GST_RIFF_WAVE_FORMAT_DIVX_WMAV1 (0x0160) -#define GST_RIFF_WAVE_FORMAT_DIVX_WMAV2 (0x0161) -#define GST_RIFF_WAVE_FORMAT_WMAV9 (0x0162) -#define GST_RIFF_WAVE_FORMAT_VORBIS1 (0x674f) -#define GST_RIFF_WAVE_FORMAT_VORBIS2 (0x6750) -#define GST_RIFF_WAVE_FORMAT_VORBIS3 (0x6751) -#define GST_RIFF_WAVE_FORMAT_VORBIS1PLUS (0x676f) -#define GST_RIFF_WAVE_FORMAT_VORBIS2PLUS (0x6770) -#define GST_RIFF_WAVE_FORMAT_VORBIS3PLUS (0x6771) - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - +G_END_DECLS #endif /* __GST_WAVPARSE_H__ */