Package org.red5.app.sip.stream

Source Code of org.red5.app.sip.stream.ReceivedRtpPacketProcessor

package org.red5.app.sip.stream;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;

import org.red5.app.sip.trancoders.Transcoder;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import local.net.RtpPacket;


public class ReceivedRtpPacketProcessor {
  final private Logger log = Red5LoggerFactory.getLogger(ReceivedRtpPacketProcessor.class, "sip");
 
  private BlockingQueue<RtpPacket> packets = new LinkedBlockingQueue<RtpPacket>();
  private final Executor exec = Executors.newSingleThreadExecutor();
  private Runnable packetProcessor;
  private volatile boolean processPacket = false;
 
  private final Transcoder transcoder;
 
  public ReceivedRtpPacketProcessor(Transcoder transcoder) {
    this.transcoder = transcoder;
  }
 
  public void start() {
    processPacket = true;
    packetProcessor = new Runnable() {
      public void run() {
        while (processPacket) {
          try {         
            RtpPacket packet = packets.take();
            processPacket(packet);
          } catch (InterruptedException e) {
            log.warn("InterruptedExeption while taking event.");
          }
        }
      }
    };
    exec.execute(packetProcessor);
  }
 
  private void processPacket(RtpPacket packet) {
    byte[] payload = packet.getPayload();
    transcoder.transcode(payload)
  }
 
  public void process(RtpPacket packet) throws InterruptedException {
    packets.put(packet);
  }
 
  public void stop() {
    System.out.println("processPacket stopped");
    processPacket = false;
    clearQueue();
  }
 
  private void clearQueue() {
    packets.clear();
  }
}
TOP

Related Classes of org.red5.app.sip.stream.ReceivedRtpPacketProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.