>> +static void update_metadata(HTTPContext *s, char *data)
>> +{
>> +    char *key;
>> +    char *val;
>> +    char *end;
>> +    char *next = data;
>> +
>> +    while (*next) {
>> +        key = next;
>> +        val = strstr(key, "='");
>> +        if (!val)
>> +            break;
>> +        end = strstr(val, "';");
>> +        if (!end)
>> +            break;
>> +
>> +        *val = '\0';
>> +        *end = '\0';
>> +        val += 2;
>> +
>> +        av_dict_set(&s->metadata, key, val, 0);
>> +
>> +        next = end + 2;
>> +    }
>> +}
>
> I'm not sure if this way to parse it always works (I've found ICY
> metadata can be quite inconsistent), but I guess we can give it a try.
> Or did you find anything definitive about the format of this data?

Check out: http://svn.xiph.org/icecast/trunk/icecast/src/format_mp3.c
(function: filter_shoutcast_metadata). They look for a key name
specifically in the metadata, but since we're actually interested in
parsing the key here, it has to be a bit more open-ended.

> Also, your patch is ignoring icy_metadata_headers, which is basically
> per-connection metadata.

Is this data anything that can be shown to a user? IIRC, it's just the
metadata interval, possibly bitrate, and the like.
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to