1 /* GStreamer MPEG audio parser 2 * Copyright (C) 2006-2007 Jan Schmidt <thaytan@mad.scientist.com> 3 * Copyright (C) 2010 Mark Nauwelaerts <mnauw users sf net> 4 * Copyright (C) 2010 Nokia Corporation. All rights reserved. 5 * Contact: Stefan Kost <stefan.kost@nokia.com> 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Library General Public 9 * License as published by the Free Software Foundation; either 10 * version 2 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Library General Public License for more details. 16 * 17 * You should have received a copy of the GNU Library General Public 18 * License along with this library; if not, write to the 19 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 20 * Boston, MA 02110-1301, USA. 21 */ 22 23 #ifndef __GST_MPEG_AUDIO_PARSE_H__ 24 #define __GST_MPEG_AUDIO_PARSE_H__ 25 26 #include <gst/gst.h> 27 #include <gst/base/gstbaseparse.h> 28 29 G_BEGIN_DECLS 30 31 #define GST_TYPE_MPEG_AUDIO_PARSE \ 32 (gst_mpeg_audio_parse_get_type()) 33 #define GST_MPEG_AUDIO_PARSE(obj) \ 34 (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_MPEG_AUDIO_PARSE, GstMpegAudioParse)) 35 #define GST_MPEG_AUDIO_PARSE_CLASS(klass) \ 36 (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_MPEG_AUDIO_PARSE, GstMpegAudioParseClass)) 37 #define GST_IS_MPEG_AUDIO_PARSE(obj) \ 38 (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_MPEG_AUDIO_PARSE)) 39 #define GST_IS_MPEG_AUDIO_PARSE_CLASS(klass) \ 40 (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_MPEG_AUDIO_PARSE)) 41 42 typedef struct _GstMpegAudioParse GstMpegAudioParse; 43 typedef struct _GstMpegAudioParseClass GstMpegAudioParseClass; 44 45 /** 46 * GstMpegAudioParse: 47 * 48 * The opaque GstMpegAudioParse object 49 */ 50 struct _GstMpegAudioParse { 51 GstBaseParse baseparse; 52 53 /*< private >*/ 54 gint rate; 55 gint channels; 56 gint layer; 57 gint version; 58 59 GstClockTime max_bitreservoir; 60 /* samples per frame */ 61 gint spf; 62 63 gint freerate; 64 65 gboolean sent_codec_tag; 66 guint last_posted_bitrate; 67 gint last_posted_crc, last_crc; 68 guint last_posted_channel_mode, last_mode; 69 70 /* Bitrate from non-vbr headers */ 71 guint32 hdr_bitrate; 72 gboolean bitrate_is_constant; 73 74 /* Xing info */ 75 guint32 xing_flags; 76 guint32 xing_frames; 77 GstClockTime xing_total_time; 78 guint32 xing_bytes; 79 /* percent -> filepos mapping */ 80 guchar xing_seek_table[100]; 81 /* filepos -> percent mapping */ 82 guint16 xing_seek_table_inverse[256]; 83 guint32 xing_vbr_scale; 84 guint xing_bitrate; 85 86 /* VBRI info */ 87 guint32 vbri_frames; 88 GstClockTime vbri_total_time; 89 guint32 vbri_bytes; 90 guint vbri_bitrate; 91 guint vbri_seek_points; 92 guint32 *vbri_seek_table; 93 gboolean vbri_valid; 94 95 /* LAME info */ 96 guint32 encoder_delay; 97 guint32 encoder_padding; 98 }; 99 100 /** 101 * GstMpegAudioParseClass: 102 * @parent_class: Element parent class. 103 * 104 * The opaque GstMpegAudioParseClass data structure. 105 */ 106 struct _GstMpegAudioParseClass { 107 GstBaseParseClass baseparse_class; 108 }; 109 110 GType gst_mpeg_audio_parse_get_type (void); 111 112 G_END_DECLS 113 114 #endif /* __GST_MPEG_AUDIO_PARSE_H__ */ 115