This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git
The following commit(s) were added to refs/heads/master by this push:
new e949e207e nxplayer: add support which mp3 file which has no ID3 header
e949e207e is described below
commit e949e207e020b561ca206b02880113745252d3c5
Author: qiaohaijiao1 <[email protected]>
AuthorDate: Tue Jan 31 11:36:02 2023 +0800
nxplayer: add support which mp3 file which has no ID3 header
Signed-off-by: qiaohaijiao1 <[email protected]>
---
system/nxplayer/nxplayer.c | 9 +++++++++
system/nxplayer/nxplayer_mp3.c | 23 +++++++++++++++--------
2 files changed, 24 insertions(+), 8 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);
-
- lseek(fd, position, SEEK_SET);
+ 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);
+ read(fd, buffer, 4);
+ }
+ else
+ {
+ position = 0;
+ }
- read(fd, buffer, 4);
mpa_header = buffer[0] << 24 |
buffer[1] << 16 |
buffer[2] << 8 |