diff options
author | Benjamin Otte <otte@gnome.org> | 2008-12-16 12:59:13 +0100 |
---|---|---|
committer | Benjamin Otte <otte@gnome.org> | 2008-12-16 12:59:13 +0100 |
commit | 07b2fd4007020759e6ff2ad9a0086e245a14e544 (patch) | |
tree | 3b677ef588fe3bb342094e5913a1aa4cfe6c16cd | |
parent | 65f9f907d95568fe4d2e108b40912d6bed5ee7a9 (diff) |
add codec data API to the audio decoder, too
-rw-r--r-- | swfdec/swfdec_audio_decoder.c | 31 | ||||
-rw-r--r-- | swfdec/swfdec_audio_decoder.h | 12 |
2 files changed, 43 insertions, 0 deletions
diff --git a/swfdec/swfdec_audio_decoder.c b/swfdec/swfdec_audio_decoder.c index 72be7326..c1dbf605 100644 --- a/swfdec/swfdec_audio_decoder.c +++ b/swfdec/swfdec_audio_decoder.c @@ -28,8 +28,17 @@ G_DEFINE_TYPE (SwfdecAudioDecoder, swfdec_audio_decoder, G_TYPE_OBJECT) static void +swfdec_audio_decoder_do_set_codec_data (SwfdecAudioDecoder *decoder, + SwfdecBuffer *buffer) +{ + SWFDEC_WARNING ("%s does not implement codec data", + G_OBJECT_TYPE_NAME (decoder)); +} + +static void swfdec_audio_decoder_class_init (SwfdecAudioDecoderClass *klass) { + klass->set_codec_data = swfdec_audio_decoder_do_set_codec_data; } static void @@ -117,6 +126,28 @@ swfdec_audio_decoder_new (guint codec, SwfdecAudioFormat format) } /** + * swfdec_audio_decoder_set_codec_data: + * @decoder: an audio decoder + * @buffer: setup data for the decoder. May be %NULL + * + * Provides setup data for the audio decoder. This function is usually called + * on initialization, but can be called at any time. Currently this + * functionality is only used for AAC audio. + **/ +void +swfdec_audio_decoder_set_codec_data (SwfdecAudioDecoder *decoder, SwfdecBuffer *buffer) +{ + SwfdecAudioDecoderClass *klass; + + g_return_if_fail (SWFDEC_IS_AUDIO_DECODER (decoder)); + + if (decoder->error) + return; + klass = SWFDEC_AUDIO_DECODER_GET_CLASS (decoder); + klass->set_codec_data (decoder, buffer); +} + +/** * swfdec_audio_decoder_push: * @decoder: a #SwfdecAudioDecoder * @buffer: a #SwfdecBuffer to process or %NULL to flush diff --git a/swfdec/swfdec_audio_decoder.h b/swfdec/swfdec_audio_decoder.h index e0e2960b..ee72d3ed 100644 --- a/swfdec/swfdec_audio_decoder.h +++ b/swfdec/swfdec_audio_decoder.h @@ -30,8 +30,14 @@ G_BEGIN_DECLS #define SWFDEC_AUDIO_CODEC_ADPCM 1 #define SWFDEC_AUDIO_CODEC_MP3 2 #define SWFDEC_AUDIO_CODEC_UNCOMPRESSED 3 +#define SWFDEC_AUDIO_CODEC_NELLYMOSER_16KHZ 4 #define SWFDEC_AUDIO_CODEC_NELLYMOSER_8KHZ 5 #define SWFDEC_AUDIO_CODEC_NELLYMOSER 6 +#define SWFDEC_AUDIO_CODEC_ALAW 7 +#define SWFDEC_AUDIO_CODEC_MULAW 8 +#define SWFDEC_AUDIO_CODEC_AAC 10 +#define SWFDEC_AUDIO_CODEC_SPEEX 11 +#define SWFDEC_AUDIO_CODEC_MP3_8KHZ 14 typedef struct _SwfdecAudioDecoder SwfdecAudioDecoder; @@ -66,6 +72,9 @@ struct _SwfdecAudioDecoderClass SwfdecAudioDecoder * (* create) (guint codec, SwfdecAudioFormat format); + void (* set_codec_data) + (SwfdecAudioDecoder * decoder, + SwfdecBuffer * buffer); void (* push) (SwfdecAudioDecoder * decoder, SwfdecBuffer * buffer); SwfdecBuffer * (* pull) (SwfdecAudioDecoder * decoder); @@ -81,6 +90,9 @@ gboolean swfdec_audio_decoder_prepare (guint codec, SwfdecAudioDecoder * swfdec_audio_decoder_new (guint codec, SwfdecAudioFormat format); +void swfdec_audio_decoder_set_codec_data + (SwfdecAudioDecoder * decoder, + SwfdecBuffer * buffer); void swfdec_audio_decoder_push (SwfdecAudioDecoder * decoder, SwfdecBuffer * buffer); SwfdecBuffer * swfdec_audio_decoder_pull (SwfdecAudioDecoder * decoder); |