<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    On 04/12/2012 06:23 AM, Sree Gowri wrote:
    <blockquote
cite="mid:CAHHUHfEtR4vWR7UhjFUL_eFKOUMxCtAHjH9j8sGjBZsBnNgewg@mail.gmail.com"
      type="cite"><font face="Default Sans
        Serif,Verdana,Arial,Helvetica,sans-serif">Hi,<br>
        <br>
        I am trying to extract audio metadata like
        streamurl,streamtitle,artist,genre,album.However I am not able
        to extract the metadata using GstTagList. Below is the snippet
        of the code. Does anyone suggest what are the additions to be
        done in order to extract the metadata?<br>
        <br>
        Only the following data has been extracted.<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; layer: 3<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode: joint<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emphasis: none<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; audio codec: MPEG-1 layer 3<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bitrate: 128000<br>
        <br>
        Pipeline is as follows:<br>
        <br>
        [code]<br>
        app-&gt;pipeline= gst_parse_launch("appsrc name=mysource !
        audio/mpeg&nbsp; ! mad !&nbsp; alsasink", NULL);<br>
        [/code]<br>
      </font></blockquote>
    <font face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif">"appsrc
      name=mysource ! audio/mpeg&nbsp; ! </font>mp3parse <font
      face="Default Sans Serif,Verdana,Arial,Helvetica,sans-serif">! mad
      !&nbsp; alsasink"<br>
      or even better<br>
    </font><font face="Default Sans
      Serif,Verdana,Arial,Helvetica,sans-serif">"appsrc name=mysource !
      audio/mpeg&nbsp; ! decodebin2</font><font face="Default Sans
      Serif,Verdana,Arial,Helvetica,sans-serif"> !&nbsp; alsasink"</font><br>
    <br>
    Stefan<br>
    <br>
    <blockquote
cite="mid:CAHHUHfEtR4vWR7UhjFUL_eFKOUMxCtAHjH9j8sGjBZsBnNgewg@mail.gmail.com"
      type="cite"><font face="Default Sans
        Serif,Verdana,Arial,Helvetica,sans-serif"><br>
        Audio data fed to the appsrc element<br>
        <br>
        [code]<br>
        buf =( GstBuffer *) gst_app_buffer_new (data, READBUF, g_free,
        data);<br>
        g_signal_emit_by_name (GST_APP_SRC (app-&gt;appsrc),
        "push-buffer", buf, &amp;ret);<br>
        [/code]<br>
        <br>
        Bus message<br>
        <br>
        [code]<br>
        case GST_MESSAGE_TAG:<br>
        {<br>
        &nbsp;&nbsp;&nbsp; GstTagList *tags = NULL;<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *artist;<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gst_message_parse_tag (message, &amp;tags);<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_print ("Got tags from element %s:\n", GST_OBJECT_NAME
        (message-&gt;src));<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (gst_tag_list_get_string (tags, GST_TAG_ARTIST,
        &amp;artist))<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("got artist: %s\n",artist);<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("no artist!! \n");<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gst_tag_list_foreach (tags, print_tag, NULL);<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_print ("\n");<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gst_tag_list_free (tags);<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
        [/code]<br>
        <br>
        print_tag function code<br>
        [code]<br>
        static void print_tag (const GstTagList * list, const gchar *
        tag, gpointer unused)<br>
        {<br>
        &nbsp; gint i, count;<br>
        &nbsp; count = gst_tag_list_get_tag_size (list, tag);<br>
        &nbsp; for (i = 0; i &lt; count; i++) {<br>
        &nbsp;&nbsp;&nbsp; gchar *str;<br>
        &nbsp;&nbsp;&nbsp; if (gst_tag_get_type (tag) == G_TYPE_STRING) {<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!gst_tag_list_get_string_index (list, tag, i,
        &amp;str))<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_assert_not_reached ();<br>
        &nbsp;<br>
        &nbsp;&nbsp;&nbsp; } else {<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str =<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_strdup_value_contents (gst_tag_list_get_value_index
        (list, tag, i));<br>
        &nbsp;&nbsp;&nbsp; }<br>
        &nbsp;&nbsp;&nbsp; if (i == 0) {<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_print ("&nbsp; %15s: %s\n", gst_tag_get_nick (tag), str);<br>
        &nbsp;&nbsp;&nbsp; } else {<br>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_print ("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : %s\n", str);<br>
        &nbsp;&nbsp;&nbsp; }<br>
        &nbsp;&nbsp;&nbsp; g_free (str); <br>
        &nbsp; }<br>
        }<br>
        [/code]<br>
        <br>
        Thanks and Regards,<br>
        Sree Gowri<br>
      </font>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
gstreamer-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>