Skip to content

Commit

Permalink
added support for m4a files encoded with Fraunhofer AAC
Browse files Browse the repository at this point in the history
  • Loading branch information
Ikar Sokolov authored and Ikar Sokolov committed Apr 25, 2013
1 parent 42f0c29 commit b65da10
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 42 deletions.
7 changes: 4 additions & 3 deletions src/main/java/net/pms/dlna/DLNAMediaAudio.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
*/
package net.pms.dlna;

import net.pms.configuration.FormatConfiguration;
import net.pms.formats.v2.AudioProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -182,7 +183,7 @@ public boolean isNonPCMEncodedAudio() {
* @return True if the MP3 audio codec is used.
*/
public boolean isMP3() {
return getCodecA() != null && getCodecA().equalsIgnoreCase("mp3");
return getCodecA() != null && getCodecA().equalsIgnoreCase(FormatConfiguration.MP3);
}

/**
Expand All @@ -191,7 +192,7 @@ public boolean isMP3() {
* @return True if the AAC audio codec is used.
*/
public boolean isAAC() {
return getCodecA() != null && getCodecA().equalsIgnoreCase("aac");
return getCodecA() != null && getCodecA().equalsIgnoreCase(FormatConfiguration.AAC);
}

/**
Expand Down Expand Up @@ -255,7 +256,7 @@ public String getAudioCodec() {
return "LPCM";
} else if (getCodecA() != null && getCodecA().equals("vorbis")) {
return "OGG";
} else if (getCodecA() != null && getCodecA().equals("aac")) {
} else if (getCodecA() != null && getCodecA().equals(FormatConfiguration.AAC)) {
return "AAC";
} else if (getCodecA() != null && getCodecA().equals("mp3")) {
return "MP3";
Expand Down
56 changes: 18 additions & 38 deletions src/main/java/net/pms/dlna/DLNAMediaInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,32 +19,9 @@
package net.pms.dlna;

import com.sun.jna.Platform;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.Locale;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;

import javax.imageio.ImageIO;

import net.coobird.thumbnailator.tasks.UnsupportedFormatException;
import net.coobird.thumbnailator.Thumbnails.Builder;
import net.coobird.thumbnailator.Thumbnails;

import net.coobird.thumbnailator.Thumbnails.Builder;
import net.coobird.thumbnailator.tasks.UnsupportedFormatException;
import net.pms.PMS;
import net.pms.configuration.RendererConfiguration;
import net.pms.formats.AudioAsVideo;
Expand All @@ -53,29 +30,32 @@
import net.pms.io.OutputParams;
import net.pms.io.ProcessWrapperImpl;
import net.pms.network.HTTPResource;
import net.pms.util.AVCHeader;
import net.pms.util.CoverUtil;
import net.pms.util.FileUtil;
import net.pms.util.MpegUtil;
import net.pms.util.ProcessUtil;

import net.pms.util.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.sanselan.ImageInfo;
import org.apache.sanselan.Sanselan;
import org.apache.sanselan.common.IImageMetadata;
import org.apache.sanselan.formats.jpeg.JpegImageMetadata;
import org.apache.sanselan.formats.tiff.TiffField;
import org.apache.sanselan.formats.tiff.constants.TiffConstants;

import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.AudioHeader;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;
import java.util.List;

import static org.apache.commons.lang3.StringUtils.contains;
import static org.apache.commons.lang3.StringUtils.startsWith;

/**
* This class keeps track of media file metadata scanned by the MediaInfo library.
*
Expand Down Expand Up @@ -1085,15 +1065,15 @@ public void finalize(int type, InputFile f) {
setMimeType(HTTPResource.MPEG_TYPEMIME);
} else if (getCodecV() == null && codecA != null && codecA.contains("mp3")) {
setMimeType(HTTPResource.AUDIO_MP3_TYPEMIME);
} else if (getCodecV() == null && codecA != null && codecA.contains("aac")) {
} else if (getCodecV() == null && contains(codecA, "aac")) {
setMimeType(HTTPResource.AUDIO_MP4_TYPEMIME);
} else if (getCodecV() == null && codecA != null && codecA.contains("flac")) {
} else if (getCodecV() == null && contains(codecA, "flac")) {
setMimeType(HTTPResource.AUDIO_FLAC_TYPEMIME);
} else if (getCodecV() == null && codecA != null && codecA.contains("vorbis")) {
} else if (getCodecV() == null && contains(codecA, "vorbis")) {
setMimeType(HTTPResource.AUDIO_OGG_TYPEMIME);
} else if (getCodecV() == null && codecA != null && (codecA.contains("asf") || codecA.startsWith("wm"))) {
} else if (getCodecV() == null && (contains(codecA, "asf") || startsWith(codecA, "wm"))) {
setMimeType(HTTPResource.AUDIO_WMA_TYPEMIME);
} else if (getCodecV() == null && codecA != null && (codecA.startsWith("pcm") || codecA.contains("wav"))) {
} else if (getCodecV() == null && (contains(codecA, "wav") || startsWith(codecA, "pcm"))) {
setMimeType(HTTPResource.AUDIO_WAV_TYPEMIME);
} else {
setMimeType(HTTPResource.getDefaultMimeType(type));
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/net/pms/dlna/LibMediaInfoParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,7 @@ private static void getFormat(MediaInfo.StreamKind streamType, DLNAMediaInfo med
format = FormatConfiguration.TRUEHD;
} else if (value.equals("55") || value.equals("a_mpeg/l3")) {
format = FormatConfiguration.MP3;
} else if (value.equals("m4a") || value.equals("40") || value.equals("a_aac") || value.equals("aac")) {
} else if (value.equals("m4a") || value.equals("40") || value.equals("a_aac") || value.equals("aac") || value.equals("mp42")) {
format = FormatConfiguration.AAC;
} else if (value.equals("pcm") || (value.equals("1") && (audio.getCodecA() == null || !audio.getCodecA().equals(FormatConfiguration.DTS)))) {
format = FormatConfiguration.LPCM;
Expand Down

0 comments on commit b65da10

Please sign in to comment.