Search in sources :

Example 1 with AudioStream

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();
}
Also used : AudioStream(org.red5.app.sip.AudioStream) IContext(org.red5.server.api.IContext) IProviderService(org.red5.server.stream.IProviderService)

Example 2 with AudioStream

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;
}
Also used : ByteStream(org.red5.app.sip.codecs.asao.ByteStream)

Aggregations

AudioStream (org.red5.app.sip.AudioStream)1 ByteStream (org.red5.app.sip.codecs.asao.ByteStream)1 IContext (org.red5.server.api.IContext)1 IProviderService (org.red5.server.stream.IProviderService)1