diff options
author | Solomon Peachy <pizza@shaftnet.org> | 2018-12-22 20:18:06 -0500 |
---|---|---|
committer | Solomon Peachy <pizza@shaftnet.org> | 2021-02-28 16:11:54 +0000 |
commit | 670812a44a3aed7f142548c2cfa5a5b36381b1a8 (patch) | |
tree | 2973316f3618520ad721ff8cec751bffdb264e3a /lib/rbcodec/metadata | |
parent | 13c7f482ce9614012312e8189b91be0fee65f2d9 (diff) | |
download | rockbox-670812a44a3aed7f142548c2cfa5a5b36381b1a8.tar.gz rockbox-670812a44a3aed7f142548c2cfa5a5b36381b1a8.zip |
Support MP3 audiostreams embedded in ASF containers.
Full credit to Igor Poretsky
Change-Id: I54769e33665cada1e1e0ef3a5511b56c8e1b859a
Diffstat (limited to 'lib/rbcodec/metadata')
-rw-r--r-- | lib/rbcodec/metadata/asf.c | 5 | ||||
-rw-r--r-- | lib/rbcodec/metadata/metadata.h | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/rbcodec/metadata/asf.c b/lib/rbcodec/metadata/asf.c index 0d115099ec..9a74ada453 100644 --- a/lib/rbcodec/metadata/asf.c +++ b/lib/rbcodec/metadata/asf.c | |||
@@ -375,6 +375,11 @@ static int asf_parse_header(int fd, struct mp3entry* id3, | |||
375 | lseek(fd,current.size - 24 - 72 - wfx->datalen,SEEK_CUR); | 375 | lseek(fd,current.size - 24 - 72 - wfx->datalen,SEEK_CUR); |
376 | wfx->audiostream = flags&0x7f; | 376 | wfx->audiostream = flags&0x7f; |
377 | id3->codectype = AFMT_WMAVOICE; | 377 | id3->codectype = AFMT_WMAVOICE; |
378 | } else if (wfx->codec_id == ASF_CODEC_ID_MP3) { | ||
379 | lseek(fd,current.size - 24 - 72,SEEK_CUR); | ||
380 | wfx->audiostream = flags&0x7f; | ||
381 | id3->codectype = AFMT_MPA_L3; | ||
382 | id3->is_asf_stream = true; | ||
378 | } else { | 383 | } else { |
379 | DEBUGF("Unsupported WMA codec (Lossless, Voice, etc)\n"); | 384 | DEBUGF("Unsupported WMA codec (Lossless, Voice, etc)\n"); |
380 | lseek(fd,current.size - 24 - 72,SEEK_CUR); | 385 | lseek(fd,current.size - 24 - 72,SEEK_CUR); |
diff --git a/lib/rbcodec/metadata/metadata.h b/lib/rbcodec/metadata/metadata.h index fc9c1d062c..768e62d3b0 100644 --- a/lib/rbcodec/metadata/metadata.h +++ b/lib/rbcodec/metadata/metadata.h | |||
@@ -316,6 +316,9 @@ struct mp3entry { | |||
316 | 316 | ||
317 | /* Musicbrainz Track ID */ | 317 | /* Musicbrainz Track ID */ |
318 | char* mb_track_id; | 318 | char* mb_track_id; |
319 | |||
320 | /* For ASF files with MP3 audio stream */ | ||
321 | bool is_asf_stream; | ||
319 | }; | 322 | }; |
320 | 323 | ||
321 | unsigned int probe_file_format(const char *filename); | 324 | unsigned int probe_file_format(const char *filename); |