icydemux

icydemux — reads tag information from an Icy (Icecast/Shoutcast) stream, outputting them as tag messages, and forwarding the enclosed data.

Synopsis




                    GstICYDemux;

Description

Example launch line

icydemux accepts data streams with ICY metadata at known intervals, as transmitted from an upstream element (usually read as response headers from an HTTP stream). The mime type of the data between the tag blocks is detected using typefind functions, and the appropriate output mime type set on outgoing buffers.

gst-launch gnomevfssrc location=http://some.server/ ! icydemux ! fakesink -t

This pipeline should read any available ICY tag information and output it. The contents of the stream should be detected, and the appropriate mime type set on buffers produced from icydemux.

Element Information

plugin

icydemux

author

Jan Schmidt <thaytan@mad.scientist.com> Michael Smith <msmith@fluendo.com>

class

Codec/Demuxer/Metadata

Details

GstICYDemux

typedef struct {
  GstElement element;

  GstPad *sinkpad, *srcpad;

  /* Interval between metadata updates */
  gint meta_interval;

  /* Remaining bytes until the next metadata update */
  gint remaining;

  /* When 'remaining' is zero, this holds the number of bytes of metadata we
   * still need to read, or zero if we don't yet know (which means we need to
   * read one byte, after which we can initialise this properly) */
  gint meta_remaining;

  /* Caps for the data enclosed */
  GstCaps *src_caps;

  /* True if we're still typefinding */
  gboolean typefinding;

  GstTagList *cached_tags;
  GList *cached_events;

  GstAdapter *meta_adapter;

  GstBuffer *typefind_buf;
} GstICYDemux;