icydemux

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

Synopsis




                    GstICYDemux;

Description

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.

Example launch line

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;