Mercurial > libavformat.hg
comparison asf.c @ 2538:0d837f926052 libavformat
Improve track number decoding for some WMA files
patch by Patrice Bensoussan %patrice P bensoussan A free P fr%
Original thread:
Date: Sep 9, 2007 12:33 PM
Subject: [FFmpeg-devel] [PATCH] Improve track number decoding for some WMA files
author | gpoirier |
---|---|
date | Sun, 09 Sep 2007 17:54:26 +0000 |
parents | 1a2f353ac291 |
children | bef7b30c2969 |
comparison
equal
deleted
inserted
replaced
2537:46fc89be5b52 | 2538:0d837f926052 |
---|---|
388 value_len = get_le16(pb); | 388 value_len = get_le16(pb); |
389 if ((value_type == 0) || (value_type == 1)) // unicode or byte | 389 if ((value_type == 0) || (value_type == 1)) // unicode or byte |
390 { | 390 { |
391 if (!strcmp(name,"WM/AlbumTitle")) get_str16_nolen(pb, value_len, s->album, sizeof(s->album)); | 391 if (!strcmp(name,"WM/AlbumTitle")) get_str16_nolen(pb, value_len, s->album, sizeof(s->album)); |
392 else if(!strcmp(name,"WM/Genre" )) get_str16_nolen(pb, value_len, s->genre, sizeof(s->genre)); | 392 else if(!strcmp(name,"WM/Genre" )) get_str16_nolen(pb, value_len, s->genre, sizeof(s->genre)); |
393 else if(!strcmp(name,"WM/Track")) { | 393 else if(!strcmp(name,"WM/Track") && s->track == 0) { |
394 char track[8]; | 394 char track[8]; |
395 get_str16_nolen(pb, value_len, track, sizeof(track)); | 395 get_str16_nolen(pb, value_len, track, sizeof(track)); |
396 s->track = strtol(track, NULL, 10) + 1; | 396 s->track = strtol(track, NULL, 10) + 1; |
397 } | 397 } |
398 else if(!strcmp(name,"WM/TrackNumber")) { | 398 else if(!strcmp(name,"WM/TrackNumber")) { |
403 else url_fskip(pb, value_len); | 403 else url_fskip(pb, value_len); |
404 } | 404 } |
405 if ((value_type >= 2) && (value_type <= 5)) // boolean or DWORD or QWORD or WORD | 405 if ((value_type >= 2) && (value_type <= 5)) // boolean or DWORD or QWORD or WORD |
406 { | 406 { |
407 value_num= get_value(pb, value_type); | 407 value_num= get_value(pb, value_type); |
408 if (!strcmp(name,"WM/Track" )) s->track = value_num + 1; | 408 if (!strcmp(name,"WM/Track" ) && s->track == 0) s->track = value_num + 1; |
409 if (!strcmp(name,"WM/TrackNumber")) s->track = value_num; | 409 if (!strcmp(name,"WM/TrackNumber")) s->track = value_num; |
410 } | 410 } |
411 } | 411 } |
412 } else if (!memcmp(&g, &metadata_header, sizeof(GUID))) { | 412 } else if (!memcmp(&g, &metadata_header, sizeof(GUID))) { |
413 int n, stream_num, name_len, value_len, value_type, value_num; | 413 int n, stream_num, name_len, value_len, value_type, value_num; |