PeerCastStation.FLV.FLVContentBuffer.OnMetaData C# (CSharp) Method

OnMetaData() private method

private OnMetaData ( DataMessage msg ) : void
msg PeerCastStation.FLV.RTMP.DataMessage
return void
    private void OnMetaData(DataMessage msg)
    {
      this.metadata = msg;
      var info = new AtomCollection();
      info.SetChanInfoType("FLV");
      info.SetChanInfoStreamType("video/x-flv");
      info.SetChanInfoStreamExt(".flv");
      if (metadata.Arguments[0].Type==AMF.AMFValueType.ECMAArray || metadata.Arguments[0].Type==AMF.AMFValueType.Object){
        var bitrate = 0.0;
        var val = metadata.Arguments[0]["maxBitrate"];
        if (!AMF.AMFValue.IsNull(val)) {
          double maxBitrate;
          string maxBitrateStr = System.Text.RegularExpressions.Regex.Replace((string)val, @"([\d]+)k", "$1");
          if (double.TryParse(maxBitrateStr, out maxBitrate)) {
            bitrate += maxBitrate;
          }
        }
        else if (!AMF.AMFValue.IsNull(val = metadata.Arguments[0]["videodatarate"])) {
          bitrate += (double)val;
        }
        if (!AMF.AMFValue.IsNull(val = metadata.Arguments[0]["audiodatarate"])) {
          bitrate += (double)val;
        }
        info.SetChanInfoBitrate((int)bitrate);
      }
      OnChannelInfoChanged(info);
      OnHeaderChanged(msg);
      OnContentChanged(msg);
    }