use of org.red5.app.sip.AudioStream in project bigbluebutton by bigbluebutton.
the class ListenStream method startPublishing.
private void startPublishing(IScope aScope) {
System.out.println("started publishing stream in " + aScope.getName());
broadcastStream = new AudioStream(listenStreamName);
broadcastStream.setPublishedName(listenStreamName);
broadcastStream.setScope(aScope);
IContext context = aScope.getContext();
IProviderService providerService = (IProviderService) context.getBean(IProviderService.BEAN_NAME);
if (providerService.registerBroadcastStream(aScope, listenStreamName, broadcastStream)) {
// Do nothing.
} else {
log.error("could not register broadcast stream");
throw new RuntimeException("could not register broadcast stream");
}
broadcastStream.start();
}
use of org.red5.app.sip.AudioStream in project bigbluebutton by bigbluebutton.
the class NellyToPcmTranscoder method fillRtpPacketBuffer.
private int fillRtpPacketBuffer(byte[] asaoBuffer, byte[] transcodedData, int dataOffset) {
int copyingSize = 0;
int finalCopySize = 0;
byte[] codedBuffer = new byte[sipCodec.getOutgoingEncodedFrameSize()];
try {
if ((tempBufferRemaining + encodingOffset) >= sipCodec.getOutgoingDecodedFrameSize()) {
copyingSize = encodingBuffer.length - encodingOffset;
System.arraycopy(tempBuffer, tempBuffer.length - tempBufferRemaining, encodingBuffer, encodingOffset, copyingSize);
encodingOffset = sipCodec.getOutgoingDecodedFrameSize();
tempBufferRemaining -= copyingSize;
finalCopySize = sipCodec.getOutgoingDecodedFrameSize();
} else {
if (tempBufferRemaining > 0) {
System.arraycopy(tempBuffer, tempBuffer.length - tempBufferRemaining, encodingBuffer, encodingOffset, tempBufferRemaining);
encodingOffset += tempBufferRemaining;
finalCopySize += tempBufferRemaining;
tempBufferRemaining = 0;
}
// Decode new asao packet.
asao_buffer_processed = true;
ByteStream audioStream = new ByteStream(asaoBuffer, 1, NELLYMOSER_ENCODED_PACKET_SIZE);
decoderMap = decoder.decode(decoderMap, audioStream.bytes, 1, tempBuffer, 0);
//tempBuffer = ResampleUtils.normalize(tempBuffer, 256); // normalise volume
tempBufferRemaining = tempBuffer.length;
if (tempBuffer.length <= 0) {
log.error("Asao decoder Error.");
}
// Try to complete the encodingBuffer with necessary data.
if ((encodingOffset + tempBufferRemaining) > sipCodec.getOutgoingDecodedFrameSize()) {
copyingSize = encodingBuffer.length - encodingOffset;
} else {
copyingSize = tempBufferRemaining;
}
System.arraycopy(tempBuffer, 0, encodingBuffer, encodingOffset, copyingSize);
encodingOffset += copyingSize;
tempBufferRemaining -= copyingSize;
finalCopySize += copyingSize;
}
if (encodingOffset == encodingBuffer.length) {
int encodedBytes = sipCodec.pcmToCodec(encodingBuffer, codedBuffer);
if (encodedBytes == sipCodec.getOutgoingEncodedFrameSize()) {
System.arraycopy(codedBuffer, 0, transcodedData, dataOffset, codedBuffer.length);
} else {
//println( "fillRtpPacketBuffer", "Failure encoding buffer." );
}
}
} catch (Exception e) {
log.error("Exception - " + e.toString());
e.printStackTrace();
}
return finalCopySize;
}
Aggregations