/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.frame.nellymoser; import com.ttProject.frame.AudioFrame; import com.ttProject.frame.CodecType; import com.ttProject.frame.nellymoser.type.Frame; import com.ttProject.nio.channels.ByteReadChannel; import com.ttProject.nio.channels.IReadChannel; import com.ttProject.util.HexUtil; /** * nellymoser frame * @author taktod */ public abstract class NellymoserFrame extends AudioFrame { /** * muted frame sample. * @param sampleRate * @param channels * @param bitSize * @return */ public static Frame getMutedFrame(int sampleRate, int channels, int bitSize) throws Exception { String bufferString = null; if(channels != 1) { throw new RuntimeException("supported for monoral only."); } switch(sampleRate) { case 44100: bufferString = "408A31C618638C31C618638C31C6B8A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFF6FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFFFFFFFFFFFF"; break; case 22050: bufferString = "408A31C618638C31C618638C31C6B8A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFF6FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFFFFFFFFFFFF"; break; case 11025: bufferString = "408A31C618638C31C618638C31C6B8A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFF6FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFFFFFFFFFFFF"; break; case 8000: bufferString = "408A31C618638C31C618638C31C6B8A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFF6FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFFFFFFFFFFFF"; break; case 16000: bufferString = "408A31C618638C31C618638C31C6B8A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFF6FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFFFFFFFFFFFF"; break; default: throw new RuntimeException("unexpected sampleRate:" + sampleRate); } IReadChannel channel = new ByteReadChannel(HexUtil.makeBuffer(bufferString)); Frame frame = new Frame(); frame.minimumLoad(channel); frame.load(channel); frame.setChannel(1); frame.setSampleRate(sampleRate); frame.setBit(16); return frame; } /** * {@inheritDoc} */ @Override public CodecType getCodecType() { return CodecType.NELLYMOSER; } }