package us.sosia.video.stream.channel; import java.awt.Dimension; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.Channels; import org.jboss.netty.handler.codec.frame.LengthFieldPrepender; import us.sosia.video.stream.handler.StreamServerHandler; import us.sosia.video.stream.handler.StreamServerListener; public class StreamServerChannelPipelineFactory implements ChannelPipelineFactory{ protected final StreamServerListener streamServerListener; protected final Dimension dimension; public StreamServerChannelPipelineFactory( StreamServerListener streamServerListener, Dimension dimension) { super(); this.streamServerListener = streamServerListener; this.dimension = dimension; } @Override public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = Channels.pipeline(); //comment the netty's frame encoder ,if want to use the build in h264 encoder pipeline.addLast("frame encoder", new LengthFieldPrepender(4,false)); pipeline.addLast("stream server handler", new StreamServerHandler(streamServerListener)); //add the stream h264 encoder //for that we may need to server so many client,so we need to move this out of the pipe line //so that we only need to encode only once //pipeline.addLast("stream h264 encoder", new H264StreamEncoder(dimension,false)); return pipeline; } }