diff --git a/ChangeLog b/ChangeLog index dc658a2b44..5c99f362e4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-04-19 Sebastian Dröge + + * ext/ffmpeg/gstffmpegcodecmap.c: (gst_ffmpeg_codecid_to_caps), + (gst_ffmpeg_caps_with_codecid), (gst_ffmpeg_formatid_to_caps), + (gst_ffmpeg_caps_to_codecid), (gst_ffmpeg_get_codecid_longname): + * ext/ffmpeg/gstffmpegdemux.c: (gst_ffmpegdemux_register): + Add support for Monkey's Audio (APE). Fixes bug #518033. + 2008-04-15 Andy Wingo * ext/libpostproc/gstpostproc.c (gst_post_proc_transform_ip): Fix diff --git a/common b/common index f88ff852da..3bb6edfe92 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit f88ff852da7631ad2d0be835763da6d551a63883 +Subproject commit 3bb6edfe927d6d3020d2f2a4604f54caa61cd104 diff --git a/ext/ffmpeg/gstffmpegcodecmap.c b/ext/ffmpeg/gstffmpegcodecmap.c index 6ac9536d80..9815294673 100644 --- a/ext/ffmpeg/gstffmpegcodecmap.c +++ b/ext/ffmpeg/gstffmpegcodecmap.c @@ -317,6 +317,16 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id, caps = gst_ff_aud_caps_new (context, codec_id, "audio/x-dts", NULL); break; + case CODEC_ID_APE: + caps = + gst_ff_aud_caps_new (context, codec_id, "audio/x-ffmpeg-parsed-ape", + NULL); + if (context) { + gst_caps_set_simple (caps, + "depth", G_TYPE_INT, context->bits_per_sample, NULL); + } + break; + /* MJPEG is normal JPEG, Motion-JPEG and Quicktime MJPEG-A. MJPEGB * is Quicktime's MJPEG-B. LJPEG is lossless JPEG. I don't know what * sp5x is, but it's apparently something JPEG... We don't separate @@ -1620,6 +1630,7 @@ gst_ffmpeg_caps_with_codecid (enum CodecID codec_id, case CODEC_ID_MSRLE: case CODEC_ID_QTRLE: case CODEC_ID_TSCC: + case CODEC_ID_APE: { gint depth; @@ -1739,6 +1750,8 @@ gst_ffmpeg_formatid_to_caps (const gchar * format_name) caps = gst_caps_new_simple ("video/x-msvideo", NULL); } else if (!strcmp (format_name, "wav")) { caps = gst_caps_new_simple ("audio/x-wav", NULL); + } else if (!strcmp (format_name, "ape")) { + caps = gst_caps_new_simple ("application/x-ape", NULL); } else if (!strcmp (format_name, "swf")) { caps = gst_caps_new_simple ("application/x-shockwave-flash", NULL); } else if (!strcmp (format_name, "au")) { @@ -2135,6 +2148,9 @@ gst_ffmpeg_caps_to_codecid (const GstCaps * caps, AVCodecContext * context) } else if (!strcmp (mimetype, "audio/x-dts")) { id = CODEC_ID_DTS; audio = TRUE; + } else if (!strcmp (mimetype, "application/x-ape")) { + id = CODEC_ID_APE; + audio = TRUE; } else if (!strcmp (mimetype, "video/x-msmpeg")) { gint msmpegversion = 0; @@ -2506,6 +2522,9 @@ gst_ffmpeg_get_codecid_longname (enum CodecID codec_id) case CODEC_ID_MP3: name = "MPEG-1 layer 3 audio"; break; + case CODEC_ID_APE: + name = "Monkey's Audio"; + break; case CODEC_ID_VORBIS: name = "Vorbis audio"; break; diff --git a/ext/ffmpeg/gstffmpegdemux.c b/ext/ffmpeg/gstffmpegdemux.c index 8494920d87..a81ac83b78 100644 --- a/ext/ffmpeg/gstffmpegdemux.c +++ b/ext/ffmpeg/gstffmpegdemux.c @@ -1577,6 +1577,7 @@ gst_ffmpegdemux_register (GstPlugin * plugin) !strcmp (in_plugin->name, "mmf") || !strcmp (in_plugin->name, "mm") || !strcmp (in_plugin->name, "ipmovie") || + !strcmp (in_plugin->name, "ape") || !strcmp (in_plugin->name, "RoQ") || !strcmp (in_plugin->name, "idcin") || !strcmp (in_plugin->name, "gxf") ||