|
|
|
@ -271,7 +271,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; |
|
|
|
@ -336,7 +336,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; |
|
|
|
@ -475,7 +475,7 @@ 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
|
|
|
|
@ -483,13 +483,13 @@ static int process_metadata(AVFormatContext *s, const uint8_t *name, uint16_t na |
|
|
|
|
else if (!strcmp(name, "ID3")) // handle ID3 tag
|
|
|
|
|
get_id3_tag(s, val_len); |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
@ -1217,8 +1217,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; |
|
|
|
@ -1328,7 +1327,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 { |
|
|
|
|