Skip to content

Commit 83172f0

Browse files
committed
ID3 use Vector to support PSRAM
1 parent 309bac8 commit 83172f0

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

src/AudioTools/CoreAudio/AudioMetaData/MetaDataID3.h

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ class MetaDataID3V2 : public MetaDataID3Base {
390390
const char* actual_tag;
391391
ID3v2FrameString frame_header;
392392
int use_bytes_of_next_write = 0;
393-
char result[256];
393+
Vector<char> result{256};
394394
uint64_t total_len = 0;
395395
uint64_t end_len = 0;
396396

@@ -440,9 +440,9 @@ class MetaDataID3V2 : public MetaDataID3Base {
440440

441441
// get tag content
442442
if(calcSize(frame_header.size) <= len){
443-
int l = min(calcSize(frame_header.size)-1, (uint32_t) 256);
444-
memset(result,0,256);
445-
strncpy((char*)result, (char*) data+tag_pos+ID3FrameSize, l);
443+
int l = min(calcSize(frame_header.size)-1, (uint32_t) result.size());
444+
memset(result.data(), 0, result.size());
445+
strncpy((char*)result.data(), (char*) data+tag_pos+ID3FrameSize, l);
446446
int checkLen = min(l, 10);
447447
if (isAscii(checkLen)){
448448
processnotifyAudioChange();
@@ -461,7 +461,7 @@ class MetaDataID3V2 : public MetaDataID3Base {
461461
int tag_pos = findTag(partial_tag, (const char*) data, len);
462462
memmove(&frame_header, data+tag_pos, sizeof(ID3v2FrameString));
463463
int size = min(len - tag_pos, (size_t) calcSize(frame_header.size)-1);
464-
strncpy((char*)result, (char*)data+tag_pos+ID3FrameSize, size);
464+
strncpy((char*)result.data(), (char*)data+tag_pos+ID3FrameSize, size);
465465
use_bytes_of_next_write = size;
466466
status = PartialTagAtTail;
467467
}
@@ -488,7 +488,7 @@ class MetaDataID3V2 : public MetaDataID3Base {
488488
/// We have the beginning of the metadata and need to process the remainder
489489
void processPartialTagAtTail(const uint8_t* data, size_t len) {
490490
int remainder = calcSize(frame_header.size) - use_bytes_of_next_write;
491-
memcpy(result+use_bytes_of_next_write, data, remainder);
491+
memcpy(result.data()+use_bytes_of_next_write, data, remainder);
492492
processnotifyAudioChange();
493493

494494
status = TagNotFound;
@@ -511,27 +511,27 @@ class MetaDataID3V2 : public MetaDataID3Base {
511511
if (callback!=nullptr && actual_tag!=nullptr && encodingIsSupported()){
512512
LOGI("callback %s",actual_tag);
513513
if (memcmp(actual_tag,"TALB",4)==0)
514-
callback(Album, result,strnlength(result, 256));
514+
callback(Album, result.data(), strnlength(result.data(), result.size()));
515515
else if (memcmp(actual_tag,"TPE1",4)==0)
516-
callback(Artist, result,strnlength(result, 256));
516+
callback(Artist, result.data(),strnlength(result.data(), result.size()));
517517
else if (memcmp(actual_tag,"TOPE",4)==0)
518-
callback(Artist, result,strnlength(result, 256));
518+
callback(Artist, result.data(),strnlength(result.data(), result.size()));
519519
else if (memcmp(actual_tag,"TIT2",4)==0)
520-
callback(Title, result,strnlength(result, 256));
520+
callback(Title, result.data(),strnlength(result.data(), result.size()));
521521
else if (memcmp(actual_tag,"TCON",4)==0) {
522522
if (result[0]=='('){
523523
// convert genre id to string
524-
int end_pos = strpos((char*)result, ")");
524+
int end_pos = strpos((char*)result.data(), ")");
525525
if (end_pos>0){
526526
// we just use the first entry
527527
result[end_pos]=0;
528-
int idx = atoi(result+1);
528+
int idx = atoi(result.data()+1);
529529
if (idx>=0 && idx< (int)sizeof(genres)){
530-
strncpy((char*)result,genres[idx],256);
530+
strncpy((char*)result.data(), genres[idx], result.size());
531531
}
532532
}
533533
}
534-
callback(Genre, result,strnlength(result, 256));
534+
callback(Genre, result.data(),strnlength(result.data(), result.size()));
535535
}
536536
}
537537
}

0 commit comments

Comments
 (0)