1 /*
2 * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
545 .getChannels())
546 sourceStream = new AudioFloatInputStreamChannelMixer(sourceStream,
547 targetFormat.getChannels());
548 if (Math.abs(targetFormat.getSampleRate()
549 - sourceStream.getFormat().getSampleRate()) > 0.000001)
550 sourceStream = new AudioFloatInputStreamResampler(sourceStream,
551 targetFormat);
552 return new AudioInputStream(new AudioFloatFormatConverterInputStream(
553 targetFormat, sourceStream), targetFormat, sourceStream
554 .getFrameLength());
555 }
556
557 @Override
558 public Encoding[] getSourceEncodings() {
559 return new Encoding[] { Encoding.PCM_SIGNED, Encoding.PCM_UNSIGNED,
560 Encoding.PCM_FLOAT };
561 }
562
563 @Override
564 public Encoding[] getTargetEncodings() {
565 return new Encoding[] { Encoding.PCM_SIGNED, Encoding.PCM_UNSIGNED,
566 Encoding.PCM_FLOAT };
567 }
568
569 @Override
570 public Encoding[] getTargetEncodings(AudioFormat sourceFormat) {
571 if (AudioFloatConverter.getConverter(sourceFormat) == null)
572 return new Encoding[0];
573 return new Encoding[] { Encoding.PCM_SIGNED, Encoding.PCM_UNSIGNED,
574 Encoding.PCM_FLOAT };
575 }
576
577 @Override
578 public AudioFormat[] getTargetFormats(Encoding targetEncoding,
579 AudioFormat sourceFormat) {
580 Objects.requireNonNull(targetEncoding);
581 if (AudioFloatConverter.getConverter(sourceFormat) == null)
582 return new AudioFormat[0];
583 int channels = sourceFormat.getChannels();
584
585 ArrayList<AudioFormat> formats = new ArrayList<>();
586
|
1 /*
2 * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
545 .getChannels())
546 sourceStream = new AudioFloatInputStreamChannelMixer(sourceStream,
547 targetFormat.getChannels());
548 if (Math.abs(targetFormat.getSampleRate()
549 - sourceStream.getFormat().getSampleRate()) > 0.000001)
550 sourceStream = new AudioFloatInputStreamResampler(sourceStream,
551 targetFormat);
552 return new AudioInputStream(new AudioFloatFormatConverterInputStream(
553 targetFormat, sourceStream), targetFormat, sourceStream
554 .getFrameLength());
555 }
556
557 @Override
558 public Encoding[] getSourceEncodings() {
559 return new Encoding[] { Encoding.PCM_SIGNED, Encoding.PCM_UNSIGNED,
560 Encoding.PCM_FLOAT };
561 }
562
563 @Override
564 public Encoding[] getTargetEncodings() {
565 return getSourceEncodings();
566 }
567
568 @Override
569 public Encoding[] getTargetEncodings(AudioFormat sourceFormat) {
570 if (AudioFloatConverter.getConverter(sourceFormat) == null)
571 return new Encoding[0];
572 return new Encoding[] { Encoding.PCM_SIGNED, Encoding.PCM_UNSIGNED,
573 Encoding.PCM_FLOAT };
574 }
575
576 @Override
577 public AudioFormat[] getTargetFormats(Encoding targetEncoding,
578 AudioFormat sourceFormat) {
579 Objects.requireNonNull(targetEncoding);
580 if (AudioFloatConverter.getConverter(sourceFormat) == null)
581 return new AudioFormat[0];
582 int channels = sourceFormat.getChannels();
583
584 ArrayList<AudioFormat> formats = new ArrayList<>();
585
|