@svta/common-media-library
Version:
A common library for media playback in JavaScript
46 lines • 1.63 kB
JavaScript
import { utf8ArrayToStr } from '../../utils/utf8ArrayToStr.js';
import { toArrayBuffer } from './toArrayBuffer.js';
import { toUint8 } from './utf8.js';
export function decodeId3ImageFrame(frame) {
const metadataFrame = {
key: frame.type,
description: '',
data: '',
mimeType: null,
pictureType: null,
};
const utf8Encoding = 0x03;
if (frame.size < 2) {
return undefined;
}
if (frame.data[0] !== utf8Encoding) {
console.log('Ignore frame with unrecognized character ' + 'encoding');
return undefined;
}
const mimeTypeEndIndex = frame.data.subarray(1).indexOf(0);
if (mimeTypeEndIndex === -1) {
return undefined;
}
const mimeType = utf8ArrayToStr(toUint8(frame.data, 1, mimeTypeEndIndex));
const pictureType = frame.data[2 + mimeTypeEndIndex];
const descriptionEndIndex = frame.data
.subarray(3 + mimeTypeEndIndex)
.indexOf(0);
if (descriptionEndIndex === -1) {
return undefined;
}
const description = utf8ArrayToStr(toUint8(frame.data, 3 + mimeTypeEndIndex, descriptionEndIndex));
let data;
if (mimeType === '-->') {
data = utf8ArrayToStr(toUint8(frame.data, 4 + mimeTypeEndIndex + descriptionEndIndex));
}
else {
data = toArrayBuffer(frame.data.subarray(4 + mimeTypeEndIndex + descriptionEndIndex));
}
metadataFrame.mimeType = mimeType;
metadataFrame.pictureType = pictureType;
metadataFrame.description = description;
metadataFrame.data = data;
return metadataFrame;
}
//# sourceMappingURL=decodeId3ImageFrame.js.map