public JAudioTagReader(String filename) {
    try {
      MP3File.logger.setLevel(Level.OFF);
      this.filename = filename;
      if (log.isTraceEnabled()) log.trace("JAudioTagReader(): filename=" + filename);
      MP3File mp3file;
      try {
        // mp3file = new MP3File(filename);
        mp3file = new MP3File(new File(filename), MP3File.LOAD_ALL, true);
      } catch (ReadOnlyFileException roe) {
        mp3file = new MP3File(new File(filename), MP3File.LOAD_ALL, true);
      }
      if (log.isTraceEnabled())
        log.trace("JAudioTagReader(): mp3file=" + mp3file.displayStructureAsPlainText());
      id3v1 = mp3file.getID3v1Tag();
      id3v2 = mp3file.getID3v2TagAsv24();
      if (id3v2 != null) {
        String identifier = id3v2.getIdentifier();
        if (log.isTraceEnabled()) log.trace("JAudioTagReader(): id3v2 identifier=" + identifier);
      }
      if (id3v1 instanceof ID3v11Tag) {
        id3v11 = (ID3v11Tag) id3v1;
      }

      // if (log.isDebugEnabled())
      // log.debug("JAudioTagReader(): GEOB frames=" + getFrames(FRAME_GENERAL));

    } catch (java.lang.OutOfMemoryError e) {
      log.error("JAudioTagReader(): error out of memory, filename=" + filename, e);
    } catch (Exception e) {
      log.error("JAudioTagReader(): error Exception, filename=" + filename, e);
    }
  }