From 4fde7001133603e541111747e2d6f09daa133421 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Sun, 24 Oct 2010 15:20:27 +0200 Subject: [PATCH] flvdemux: Use pbutils for codec descriptions --- gst/flv/Makefile.am | 5 +++-- gst/flv/gstflvdemux.c | 24 +++++++++--------------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/gst/flv/Makefile.am b/gst/flv/Makefile.am index 178a5ef..b2d37eb 100644 --- a/gst/flv/Makefile.am +++ b/gst/flv/Makefile.am @@ -1,7 +1,8 @@ plugin_LTLIBRARIES = libgstflv.la -libgstflv_la_CFLAGS = $(GST_BASE_CFLAGS) $(GST_CFLAGS) -libgstflv_la_LIBADD = $(GST_BASE_LIBS) $(GST_LIBS) +libgstflv_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) +libgstflv_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) \ + -lgstpbutils-@GST_MAJORMINOR@ libgstflv_la_LDFLAGS = ${GST_PLUGIN_LDFLAGS} libgstflv_la_SOURCES = gstflvdemux.c gstflvmux.c libgstflv_la_LIBTOOLFLAGS = --tag=disable-static diff --git a/gst/flv/gstflvdemux.c b/gst/flv/gstflvdemux.c index e22eca7..4300ba2 100644 --- a/gst/flv/gstflvdemux.c +++ b/gst/flv/gstflvdemux.c @@ -39,6 +39,7 @@ #include #include +#include static GstStaticPadTemplate flv_sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, @@ -572,21 +573,19 @@ gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, guint32 rate, guint32 channels, guint32 width) { GstCaps *caps = NULL; - const gchar *codec_name = NULL; + gchar *codec_name = NULL; gboolean ret = FALSE; switch (codec_tag) { case 1: caps = gst_caps_new_simple ("audio/x-adpcm", "layout", G_TYPE_STRING, "swf", NULL); - codec_name = "Shockwave ADPCM"; break; case 2: case 14: caps = gst_caps_new_simple ("audio/mpeg", "mpegversion", G_TYPE_INT, 1, "layer", G_TYPE_INT, 3, "parsed", G_TYPE_BOOLEAN, TRUE, NULL); - codec_name = "MPEG 1 Audio, Layer 3 (MP3)"; break; case 0: case 3: @@ -597,30 +596,24 @@ gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, "endianness", G_TYPE_INT, G_LITTLE_ENDIAN, "signed", G_TYPE_BOOLEAN, (width == 8) ? FALSE : TRUE, "width", G_TYPE_INT, width, "depth", G_TYPE_INT, width, NULL); - codec_name = "Raw Audio"; break; case 4: case 5: case 6: caps = gst_caps_new_simple ("audio/x-nellymoser", NULL); - codec_name = "Nellymoser ASAO"; break; case 10: caps = gst_caps_new_simple ("audio/mpeg", "mpegversion", G_TYPE_INT, 4, "framed", G_TYPE_BOOLEAN, TRUE, NULL); - codec_name = "AAC"; break; case 7: caps = gst_caps_new_simple ("audio/x-alaw", NULL); - codec_name = "A-Law"; break; case 8: caps = gst_caps_new_simple ("audio/x-mulaw", NULL); - codec_name = "Mu-Law"; break; case 11: caps = gst_caps_new_simple ("audio/x-speex", NULL); - codec_name = "Speex"; break; default: GST_WARNING_OBJECT (demux, "unsupported audio codec tag %u", codec_tag); @@ -648,11 +641,14 @@ gst_flv_demux_audio_negotiate (GstFlvDemux * demux, guint32 codec_tag, demux->channels = channels; demux->width = width; + codec_name = gst_pb_utils_get_codec_description (caps); + if (codec_name) { if (demux->taglist == NULL) demux->taglist = gst_tag_list_new (); gst_tag_list_add (demux->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_AUDIO_CODEC, codec_name, NULL); + g_free (codec_name); } GST_DEBUG_OBJECT (demux->audio_pad, "successfully negotiated caps %" @@ -968,29 +964,24 @@ gst_flv_demux_video_negotiate (GstFlvDemux * demux, guint32 codec_tag) { gboolean ret = FALSE; GstCaps *caps = NULL; - const gchar *codec_name = NULL; + gchar *codec_name = NULL; /* Generate caps for that pad */ switch (codec_tag) { case 2: caps = gst_caps_new_simple ("video/x-flash-video", NULL); - codec_name = "Sorenson Video"; break; case 3: caps = gst_caps_new_simple ("video/x-flash-screen", NULL); - codec_name = "Flash Screen Video"; break; case 4: caps = gst_caps_new_simple ("video/x-vp6-flash", NULL); - codec_name = "On2 VP6 Video"; break; case 5: caps = gst_caps_new_simple ("video/x-vp6-alpha", NULL); - codec_name = "On2 VP6 Video with alpha channel"; break; case 7: caps = gst_caps_new_simple ("video/x-h264", NULL); - codec_name = "H.264/AVC Video"; break; default: GST_WARNING_OBJECT (demux, "unsupported video codec tag %u", codec_tag); @@ -1015,11 +1006,14 @@ gst_flv_demux_video_negotiate (GstFlvDemux * demux, guint32 codec_tag) /* Store the caps we have set */ demux->video_codec_tag = codec_tag; + codec_name = gst_pb_utils_get_codec_description (caps); + if (codec_name) { if (demux->taglist == NULL) demux->taglist = gst_tag_list_new (); gst_tag_list_add (demux->taglist, GST_TAG_MERGE_REPLACE, GST_TAG_VIDEO_CODEC, codec_name, NULL); + g_free (codec_name); } GST_DEBUG_OBJECT (demux->video_pad, "successfully negotiated caps %" -- 2.7.4