Buggy code:
public class DLNAMediaInfo implements Cloneable { private static final Logger logger = LoggerFactory . getLogger ( DLNAMediaInfo . class ) ; public static final long ENDFILE_POS = 99999475712L ; public static final long TRANS_SIZE = 100000000000L ; private Double durationSec ; @ Deprecated public int bitrate ; @ Deprecated public int width ; @ Deprecated public int height ; @ Deprecated public long size ; @ Deprecated public String codecV ; @ Deprecated public String frameRate ; @ Deprecated public String aspect ; @ Deprecated public byte [ ] thumb ; @ Deprecated public String mimeType ; @ Deprecated public int bitsPerPixel ; @ Deprecated public ArrayList < DLNAMediaAudio > audioCodes = new ArrayList < DLNAMediaAudio > ( ) ; @ Deprecated public ArrayList < DLNAMediaSubtitle > subtitlesCodes = new ArrayList < DLNAMediaSubtitle > ( ) ; @ Deprecated public String model ; @ Deprecated public int exposure ; @ Deprecated public int orientation ; @ Deprecated public int iso ; @ Deprecated public String muxingMode ; @ Deprecated public String muxingModeAudio ; @ Deprecated public String container ; @ Deprecated public byte [ ] h264_annexB ; @ Deprecated public boolean mediaparsed ; @ Deprecated public boolean thumbready ; @ Deprecated public int dvdtrack ; @ Deprecated public boolean secondaryFormatValid = true ; @ Deprecated public boolean parsing = false ; private boolean ffmpeg_failure ; private boolean ffmpeg_annexb_failure ; private boolean muxable ; private Map < String , String > extras ; @ Deprecated public boolean encrypted ; public boolean isMuxable ( RendererConfiguration mediaRenderer ) { } public Map < String , String > getExtras ( ) { } public void putExtra ( String key , String value ) { } public String getExtrasAsString ( ) { } public void setExtrasAsString ( String value ) { } public DLNAMediaInfo ( ) { } public void generateThumbnail ( InputFile input , Format ext , int type ) { } private ProcessWrapperImpl getFFMpegThumbnail ( InputFile media ) { } private ProcessWrapperImpl getMplayerThumbnail ( InputFile media ) throws IOException { } private ProcessWrapperImpl getImageMagickThumbnail ( InputFile media ) throws IOException { } private String getFfmpegPath ( ) { } public void parse ( InputFile f , Format ext , int type , boolean thumbOnly ) { } public boolean isH264 ( ) { } public int getFrameNumbers ( ) { } public void setDuration ( Double d ) { } public Double getDuration ( ) { } public double getDurationInSeconds ( ) { } public String getDurationString ( ) { } public static String getDurationString ( double d ) { } public static Double parseDurationString ( String duration ) { } public void finalize ( int type , InputFile f ) { } private boolean h264_parsed ; public boolean isVideoPS3Compatible ( InputFile f ) { } public boolean isMuxable ( String filename , String codecA ) { } public boolean isLossless ( String codecA ) { } public String toString ( ) { } public InputStream getThumbnailInputStream ( ) { } public String getValidFps ( boolean ratios ) { String validFrameRate = null ; if ( ( ( getFrameRate ( ) ) != null ) && ( ( getFrameRate ( ) . length ( ) ) > 0 ) ) { try { <START_BUG> double fr = Double . parseDouble ( getFrameRate ( ) ) ; <END_BUG> if ( ( fr > 23.9 ) && ( fr < 23.99 ) ) { validFrameRate = ( ratios ) ? "24000//1001" : "23.976" ; } else if ( ( fr > 23.99 ) && ( fr < 24.1 ) ) { validFrameRate = "24" ; } else if ( ( fr >= 24.99 ) && ( fr < 25.1 ) ) { validFrameRate = "25" ; } else if ( ( fr > 29.9 ) && ( fr < 29.99 ) ) { validFrameRate = ( ratios ) ? "30000//1001" : "29.97" ; } else if ( ( fr >= 29.99 ) && ( fr < 30.1 ) ) { validFrameRate = "30" ; } else if ( ( fr > 47.9 ) && ( fr < 47.99 ) ) { validFrameRate = ( ratios ) ? "48000//1001" : "47.952" ; } else if ( ( fr > 49.9 ) && ( fr < 50.1 ) ) { validFrameRate = "50" ; } else if ( ( fr > 59.9 ) && ( fr < 59.99 ) ) { validFrameRate = ( ratios ) ? "60000//1001" : "59.94" ; } else if ( ( fr >= 59.99 ) && ( fr < 60.1 ) ) { validFrameRate = "60" ; } } catch ( NumberFormatException nfe ) { DLNAMediaInfo . logger . error ( null , nfe ) ; } } return validFrameRate ; } public DLNAMediaAudio getFirstAudioTrack ( ) { } public String getValidAspect ( boolean ratios ) { } public String getResolution ( ) { } public int getRealVideoBitrate ( ) { } public boolean isHDVideo ( ) { } public boolean isMpegTS ( ) { } public byte [ ] [ ] getAnnexBFrameHeader ( InputFile f ) { } @ Override protected Object clone ( ) throws CloneNotSupportedException { } public int getBitrate ( ) { } public void setBitrate ( int bitrate ) { } public int getWidth ( ) { } public void setWidth ( int width ) { } public int getHeight ( ) { } public void setHeight ( int height ) { } public long getSize ( ) { } public void setSize ( long size ) { } public String getCodecV ( ) { } public void setCodecV ( String codecV ) { } public String getFrameRate ( ) { } public void setFrameRate ( String frameRate ) { } public String getAspect ( ) { } public void setAspect ( String aspect ) { } public byte [ ] getThumb ( ) { } public void setThumb ( byte [ ] thumb ) { } public String getMimeType ( ) { }

Fix:
double fr = Double . parseDouble ( getFrameRate ( ) . replace ( ',' , '.' ) ) ;