From e949e207e020b561ca206b02880113745252d3c5 Mon Sep 17 00:00:00 2001 From: qiaohaijiao1 Date: Tue, 31 Jan 2023 11:36:02 +0800 Subject: [PATCH] nxplayer: add support which mp3 file which has no ID3 header Signed-off-by: qiaohaijiao1 --- system/nxplayer/nxplayer.c | 9 +++++++++ system/nxplayer/nxplayer_mp3.c | 21 ++++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/system/nxplayer/nxplayer.c b/system/nxplayer/nxplayer.c index 09b0a17d9..0a4d4c580 100644 --- a/system/nxplayer/nxplayer.c +++ b/system/nxplayer/nxplayer.c @@ -520,10 +520,19 @@ int nxplayer_getmidisubformat(int fd) } #endif +/**************************************************************************** + * Name: nxplayer_getmp3subformat + * + * nxplayer_getmp3subformat() just return AUDIO_SUBFMT_PCM_MP3 + * + ****************************************************************************/ + +#ifdef CONFIG_AUDIO_FORMAT_MP3 int nxplayer_getmp3subformat(int fd) { return AUDIO_SUBFMT_PCM_MP3; } +#endif /**************************************************************************** * Name: nxplayer_fmtfromextension diff --git a/system/nxplayer/nxplayer_mp3.c b/system/nxplayer/nxplayer_mp3.c index f5445ec02..a1b94cc1d 100644 --- a/system/nxplayer/nxplayer_mp3.c +++ b/system/nxplayer/nxplayer_mp3.c @@ -235,15 +235,22 @@ int nxplayer_parse_mp3(int fd, FAR uint32_t *samplerate, return -ENODATA; } - position = (buffer[6] & ID3V2_BIT_MASK) * 0x200000 + - (buffer[7] & ID3V2_BIT_MASK) * 0x4000 + - (buffer[8] & ID3V2_BIT_MASK) * 0x80 + - (buffer[9] & ID3V2_BIT_MASK) + - sizeof(buffer); + if (!memcmp(buffer, "ID3", 3)) + { + position = (buffer[6] & ID3V2_BIT_MASK) * 0x200000 + + (buffer[7] & ID3V2_BIT_MASK) * 0x4000 + + (buffer[8] & ID3V2_BIT_MASK) * 0x80 + + (buffer[9] & ID3V2_BIT_MASK) + + sizeof(buffer); - lseek(fd, position, SEEK_SET); + lseek(fd, position, SEEK_SET); + read(fd, buffer, 4); + } + else + { + position = 0; + } - read(fd, buffer, 4); mpa_header = buffer[0] << 24 | buffer[1] << 16 | buffer[2] << 8 |