|
|
|
@ -266,7 +266,7 @@ static int asf_read_metadata(AVFormatContext *s, const char *title, uint16_t len |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int asf_read_value(AVFormatContext *s, const uint8_t *name, uint16_t name_len, |
|
|
|
|
static int asf_read_value(AVFormatContext *s, const uint8_t *name, |
|
|
|
|
uint16_t val_len, int type, AVDictionary **met) |
|
|
|
|
{ |
|
|
|
|
int ret; |
|
|
|
@ -331,7 +331,7 @@ static int asf_read_generic_value(AVIOContext *pb, int type, uint64_t *value) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int asf_set_metadata(AVFormatContext *s, const uint8_t *name, |
|
|
|
|
uint16_t name_len, int type, AVDictionary **met) |
|
|
|
|
int type, AVDictionary **met) |
|
|
|
|
{ |
|
|
|
|
AVIOContext *pb = s->pb; |
|
|
|
|
uint64_t value; |
|
|
|
@ -451,7 +451,7 @@ fail: |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void get_id3_tag(AVFormatContext *s, int len) |
|
|
|
|
static void get_id3_tag(AVFormatContext *s) |
|
|
|
|
{ |
|
|
|
|
ID3v2ExtraMeta *id3v2_extra_meta = NULL; |
|
|
|
|
|
|
|
|
@ -470,21 +470,21 @@ static int process_metadata(AVFormatContext *s, const uint8_t *name, uint16_t na |
|
|
|
|
if (val_len) { |
|
|
|
|
switch (type) { |
|
|
|
|
case ASF_UNICODE: |
|
|
|
|
asf_read_value(s, name, name_len, val_len, type, met); |
|
|
|
|
asf_read_value(s, name, val_len, type, met); |
|
|
|
|
break; |
|
|
|
|
case ASF_BYTE_ARRAY: |
|
|
|
|
if (!strcmp(name, "WM/Picture")) // handle cover art
|
|
|
|
|
asf_read_picture(s, val_len); |
|
|
|
|
else if (!strcmp(name, "ID3")) // handle ID3 tag
|
|
|
|
|
get_id3_tag(s, val_len); |
|
|
|
|
get_id3_tag(s); |
|
|
|
|
else |
|
|
|
|
asf_read_value(s, name, name_len, val_len, type, met); |
|
|
|
|
asf_read_value(s, name, val_len, type, met); |
|
|
|
|
break; |
|
|
|
|
case ASF_GUID: |
|
|
|
|
ff_get_guid(s->pb, &guid); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
if ((ret = asf_set_metadata(s, name, name_len, type, met)) < 0) |
|
|
|
|
if ((ret = asf_set_metadata(s, name, type, met)) < 0) |
|
|
|
|
return ret; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
@ -1208,8 +1208,7 @@ static int asf_read_multiple_payload(AVFormatContext *s, AVPacket *pkt, |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int asf_read_single_payload(AVFormatContext *s, AVPacket *pkt, |
|
|
|
|
ASFPacket *asf_pkt) |
|
|
|
|
static int asf_read_single_payload(AVFormatContext *s, ASFPacket *asf_pkt) |
|
|
|
|
{ |
|
|
|
|
ASFContext *asf = s->priv_data; |
|
|
|
|
AVIOContext *pb = s->pb; |
|
|
|
@ -1315,7 +1314,7 @@ static int asf_read_payload(AVFormatContext *s, AVPacket *pkt) |
|
|
|
|
if ((ret = asf_read_subpayload(s, pkt, 1)) < 0) |
|
|
|
|
return ret; |
|
|
|
|
} else { |
|
|
|
|
if ((ret = asf_read_single_payload(s, pkt, asf_pkt)) < 0) |
|
|
|
|
if ((ret = asf_read_single_payload(s, asf_pkt)) < 0) |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|