Package entagged.audioformats.asf

Source Code of entagged.audioformats.asf.AsfFileReader

/*
* Entagged Audio Tag library
* Copyright (c) 2004-2005 Christian Laireiter <liree@web.de>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
package entagged.audioformats.asf;

import java.io.IOException;
import java.io.RandomAccessFile;

import entagged.audioformats.EncodingInfo;
import entagged.audioformats.Tag;
import entagged.audioformats.asf.data.AsfHeader;
import entagged.audioformats.asf.io.AsfHeaderReader;
import entagged.audioformats.asf.util.TagConverter;
import entagged.audioformats.exceptions.CannotReadException;
import entagged.audioformats.generic.AudioFileReader;

/**
* This reader can read asf files containing any content (stream type). <br>
*
* @author Christian Laireiter
*/
public class AsfFileReader extends AudioFileReader {

  /**
   * (overridden)
   *
   * @see entagged.audioformats.generic.AudioFileReader#getEncodingInfo(java.io.RandomAccessFile)
   */
  protected EncodingInfo getEncodingInfo(RandomAccessFile raf)
      throws CannotReadException, IOException {
    raf.seek(0);
    EncodingInfo info = new EncodingInfo();
    try {
      AsfHeader header = AsfHeaderReader.readHeader(raf);
      if (header == null) {
        throw new CannotReadException(
            "Some values must have been "
                + "incorrect for interpretation as asf with wma content.");
      }
      info.setBitrate(header.getAudioStreamChunk().getKbps());
      info.setChannelNumber((int) header.getAudioStreamChunk()
          .getChannelCount());
      info.setEncodingType("ASF (audio): "
          + header.getAudioStreamChunk().getCodecDescription());
      info.setPreciseLength(header.getFileHeader().getPreciseDuration());
      info.setSamplingRate((int) header.getAudioStreamChunk()
          .getSamplingRate());
    } catch (Exception e) {
      if (e instanceof IOException)
        throw (IOException) e;
      else if (e instanceof CannotReadException)
        throw (CannotReadException) e;
      else {
        throw new CannotReadException("Failed to read. Cause: "
            + e.getMessage());
      }
    }
    return info;
  }

  /**
   * (overridden)
   *
   * @see entagged.audioformats.generic.AudioFileReader#getTag(java.io.RandomAccessFile)
   */
  protected Tag getTag(RandomAccessFile raf) throws CannotReadException,
      IOException {
    raf.seek(0);
    Tag tag = null;
    try {
      AsfHeader header = AsfHeaderReader.readHeader(raf);
      if (header == null) {
        throw new CannotReadException(
            "Some values must have been "
                + "incorrect for interpretation as asf with wma content.");
      }

      tag = TagConverter.createTagOf(header);

    } catch (Exception e) {
      if (e instanceof IOException)
        throw (IOException) e;
      else if (e instanceof CannotReadException)
        throw (CannotReadException) e;
      else {
        throw new CannotReadException("Failed to read. Cause: "
            + e.getMessage());
      }
    }
    return tag;
  }

}
TOP

Related Classes of entagged.audioformats.asf.AsfFileReader

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.