summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2008-12-16 12:59:43 +0100
committerBenjamin Otte <otte@gnome.org>2008-12-16 12:59:43 +0100
commit590499c32c60e27f3a84d4bb61e9c79827023ed3 (patch)
treeff6679b472b7e4d0b1c37c97a290fc7caeb4b698
parent07b2fd4007020759e6ff2ad9a0086e245a14e544 (diff)
implement AAC support
-rw-r--r--swfdec/swfdec_audio_decoder_gst.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/swfdec/swfdec_audio_decoder_gst.c b/swfdec/swfdec_audio_decoder_gst.c
index 9b29957f..7354d72e 100644
--- a/swfdec/swfdec_audio_decoder_gst.c
+++ b/swfdec/swfdec_audio_decoder_gst.c
@@ -47,6 +47,9 @@ swfdec_audio_decoder_get_caps (guint codec, SwfdecAudioFormat format)
swfdec_audio_format_get_rate (format),
swfdec_audio_format_get_channels (format));
break;
+ case SWFDEC_AUDIO_CODEC_AAC:
+ s = g_strdup_printf ("audio/mpeg, mpegversion=4");
+ break;
default:
return NULL;
}
@@ -142,6 +145,20 @@ error:
}
static void
+swfdec_audio_decoder_gst_set_codec_data (SwfdecAudioDecoder *dec, SwfdecBuffer *buffer)
+{
+ SwfdecAudioDecoderGst *player = SWFDEC_AUDIO_DECODER_GST (dec);
+
+ if (buffer) {
+ GstBuffer *buf = swfdec_gst_buffer_new (swfdec_buffer_ref (buffer));
+ swfdec_gst_decoder_set_codec_data (&player->dec, buf);
+ gst_buffer_unref (buf);
+ } else {
+ swfdec_gst_decoder_set_codec_data (&player->dec, NULL);
+ }
+}
+
+static void
swfdec_audio_decoder_gst_push (SwfdecAudioDecoder *dec, SwfdecBuffer *buffer)
{
SwfdecAudioDecoderGst *player = SWFDEC_AUDIO_DECODER_GST (dec);
@@ -189,6 +206,7 @@ swfdec_audio_decoder_gst_class_init (SwfdecAudioDecoderGstClass *klass)
decoder_class->prepare = swfdec_audio_decoder_gst_prepare;
decoder_class->create = swfdec_audio_decoder_gst_create;
+ decoder_class->set_codec_data = swfdec_audio_decoder_gst_set_codec_data;
decoder_class->pull = swfdec_audio_decoder_gst_pull;
decoder_class->push = swfdec_audio_decoder_gst_push;
}