Example #1
0
        private void OnHeaderChanged(RTMPMessage msg)
        {
            var s = new MemoryStream();

            using (s) {
                using (var writer = new RTMPBinaryWriter(s, true)) {
                    writer.Write((byte)'F');
                    writer.Write((byte)'L');
                    writer.Write((byte)'V');
                    writer.Write((byte)1);
                    writer.Write((byte)5);
                    writer.WriteUInt32(9);
                    writer.WriteUInt32(0);
                }
                if (metadata != null)
                {
                    WriteMessage(s, metadata, 0xFFFFFFFF);
                }
                if (audioHeader != null)
                {
                    WriteMessage(s, audioHeader, 0xFFFFFFFF);
                }
                if (videoHeader != null)
                {
                    WriteMessage(s, videoHeader, 0xFFFFFFFF);
                }
            }
            streamIndex     = TargetChannel.GenerateStreamID();
            streamOrigin    = DateTime.Now;
            timestampOrigin = msg.Timestamp;
            var bytes = s.ToArray();

            ContentSink.OnContentHeader(new Content(streamIndex, TimeSpan.Zero, position, bytes, PCPChanPacketContinuation.None));
            position += bytes.Length;
        }
Example #2
0
 public void DisconnectTargetChannel()
 {
     if (HasTargetConnection)
     {
         TargetChannel.Dispose();
     }
 }
Example #3
0
        public virtual void SendData(EventInfo eventInfo)
        {
            switch (eventInfo.Direction)
            {
            case Messages.DataDirection.Target:
                if (eventInfo.ProxyConnection.HasTargetConnection)
                {
                    TargetChannel.SendData(new Buffer <byte>(eventInfo.Message.RawBytes));
                }
                break;

            case DataDirection.Origin:
                if (eventInfo.ProxyConnection.HasOriginConnection)
                {
                    OriginChannel.SendData(new Buffer <byte>(eventInfo.Message.RawBytes));
                }
                break;
            }
        }
Example #4
0
 // utilities
 private string GetChannelId()
 {
     return(Heard.GetChannelId(TargetChannel.ToLower()));
 }