getID3Frames = function getID3Frames(id3Data) {
  var offset = 0;
  var frames = [];

  while (isHeader(id3Data, offset)) {
    var size = readSize(id3Data, offset + 6); // skip past ID3 header

    offset += 10;
    var end = offset + size; // loop through frames in the ID3 tag

    while (offset + 8 < end) {
      var frameData = getFrameData(id3Data.subarray(offset));
      var frame = decodeFrame(frameData);

      if (frame) {
        frames.push(frame);
      } // skip frame header and frame data


      offset += frameData.size + 10;
    }

    if (isFooter(id3Data, offset)) {
      offset += 10;
    }
  }

  return frames;
}
Returns an array of ID3 frames found in all the ID3 tags in the id3Data
@param {Uint8Array} id3Data - The ID3 data containing one or more ID3 tags
@return {ID3.Frame[]} - Array of ID3 frame objects