function RTCRTPStreamStats(rTCRTPStreamStatsDict){
  if(!(this instanceof RTCRTPStreamStats))
    return new RTCRTPStreamStats(rTCRTPStreamStatsDict)

  rTCRTPStreamStatsDict = rTCRTPStreamStatsDict || {}

  // Check rTCRTPStreamStatsDict has the required fields
  // 
  // checkType('String', 'rTCRTPStreamStatsDict.ssrc', rTCRTPStreamStatsDict.ssrc, {required: true});
  //  
  // checkType('String', 'rTCRTPStreamStatsDict.associateStatsId', rTCRTPStreamStatsDict.associateStatsId, {required: true});
  //  
  // checkType('boolean', 'rTCRTPStreamStatsDict.isRemote', rTCRTPStreamStatsDict.isRemote, {required: true});
  //  
  // checkType('String', 'rTCRTPStreamStatsDict.mediaTrackId', rTCRTPStreamStatsDict.mediaTrackId, {required: true});
  //  
  // checkType('String', 'rTCRTPStreamStatsDict.transportId', rTCRTPStreamStatsDict.transportId, {required: true});
  //  
  // checkType('String', 'rTCRTPStreamStatsDict.codecId', rTCRTPStreamStatsDict.codecId, {required: true});
  //  
  // checkType('int64', 'rTCRTPStreamStatsDict.firCount', rTCRTPStreamStatsDict.firCount, {required: true});
  //  
  // checkType('int64', 'rTCRTPStreamStatsDict.pliCount', rTCRTPStreamStatsDict.pliCount, {required: true});
  //  
  // checkType('int64', 'rTCRTPStreamStatsDict.nackCount', rTCRTPStreamStatsDict.nackCount, {required: true});
  //  
  // checkType('int64', 'rTCRTPStreamStatsDict.sliCount', rTCRTPStreamStatsDict.sliCount, {required: true});
  //  
  // checkType('int64', 'rTCRTPStreamStatsDict.remb', rTCRTPStreamStatsDict.remb, {required: true});
  //  
  // checkType('int64', 'rTCRTPStreamStatsDict.packetsLost', rTCRTPStreamStatsDict.packetsLost, {required: true});
  //  
  // checkType('double', 'rTCRTPStreamStatsDict.fractionLost', rTCRTPStreamStatsDict.fractionLost, {required: true});
  //  

  // Init parent class
  RTCRTPStreamStats.super_.call(this, rTCRTPStreamStatsDict)

  // Set object properties
  Object.defineProperties(this, {
    ssrc: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.ssrc
    },
    associateStatsId: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.associateStatsId
    },
    isRemote: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.isRemote
    },
    mediaTrackId: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.mediaTrackId
    },
    transportId: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.transportId
    },
    codecId: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.codecId
    },
    firCount: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.firCount
    },
    pliCount: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.pliCount
    },
    nackCount: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.nackCount
    },
    sliCount: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.sliCount
    },
    remb: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.remb
    },
    packetsLost: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.packetsLost
    },
    fractionLost: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.fractionLost
    }
  })
}
/**
 * Statistics for the RTP stream
 *
 * @constructor module:core/complexTypes.RTCRTPStreamStats
 *
 * @property {external:String} ssrc
 *  The synchronized source SSRC
 * @property {external:String} associateStatsId
 *  The associateStatsId is used for looking up the corresponding (local/remote)
 * @property {external:Boolean} isRemote
 *  false indicates that the statistics are measured locally, while true 
 *  indicates that the measurements were done at the remote endpoint and 
 *  reported in an RTCP RR/XR.
 * @property {external:String} mediaTrackId
 *  Track identifier.
 * @property {external:String} transportId
 *  It is a unique identifier that is associated to the object that was 
 *  inspected to produce the RTCTransportStats associated with this RTP stream.
 * @property {external:String} codecId
 *  The codec identifier
 * @property {external:int64} firCount
 *  Count the total number of Full Intra Request (FIR) packets received by the 
 *  sender. This metric is only valid for video and is sent by receiver.
 * @property {external:int64} pliCount
 *  Count the total number of Packet Loss Indication (PLI) packets received by 
 *  the sender and is sent by receiver.
 * @property {external:int64} nackCount
 *  Count the total number of Negative ACKnowledgement (NACK) packets received 
 *  by the sender and is sent by receiver.
 * @property {external:int64} sliCount
 *  Count the total number of Slice Loss Indication (SLI) packets received by 
 *  the sender. This metric is only valid for video and is sent by receiver.
 * @property {external:int64} remb
 *  The Receiver Estimated Maximum Bitrate (REMB). This metric is only valid for
 * @property {external:int64} packetsLost
 *  Total number of RTP packets lost for this SSRC.
 * @property {external:double} fractionLost
 *  The fraction packet loss reported for this SSRC.

 * @extends module:core.RTCStats
 */
Statistics for the RTP stream
@constructor module:core/complexTypes.RTCRTPStreamStats

@property {external:String} ssrc
The synchronized source SSRC
@property {external:String} associateStatsId
The associateStatsId is used for looking up the corresponding (local/remote)
@property {external:Boolean} isRemote
false indicates that the statistics are measured locally, while true
indicates that the measurements were done at the remote endpoint and
reported in an RTCP RR/XR.
@property {external:String} mediaTrackId
Track identifier.
@property {external:String} transportId
It is a unique identifier that is associated to the object that was
inspected to produce the RTCTransportStats associated with this RTP stream.
@property {external:String} codecId
The codec identifier
@property {external:int64} firCount
Count the total number of Full Intra Request (FIR) packets received by the
sender. This metric is only valid for video and is sent by receiver.
@property {external:int64} pliCount
Count the total number of Packet Loss Indication (PLI) packets received by
the sender and is sent by receiver.
@property {external:int64} nackCount
Count the total number of Negative ACKnowledgement (NACK) packets received
by the sender and is sent by receiver.
@property {external:int64} sliCount
Count the total number of Slice Loss Indication (SLI) packets received by
the sender. This metric is only valid for video and is sent by receiver.
@property {external:int64} remb
The Receiver Estimated Maximum Bitrate (REMB). This metric is only valid for
@property {external:int64} packetsLost
Total number of RTP packets lost for this SSRC.
@property {external:double} fractionLost
The fraction packet loss reported for this SSRC.


Statistics for the RTP stream @constructor module : core / complexTypes . RTCRTPStreamStats @property { external : String } ssrc The synchronized source SSRC @property { external : String } associateStatsId The associateStatsId is used for looking up the corresponding ( local / remote ) @property { external : Boolean } isRemote false indicates that the statistics are measured locally while true indicates that the measurements were done at the remote endpoint and reported in an RTCP RR / XR . @property { external : String } mediaTrackId Track identifier . @property { external : String } transportId It is a unique identifier that is associated to the object that was inspected to produce the RTCTransportStats associated with this RTP stream . @property { external : String } codecId The codec identifier @property { external : int64 } firCount Count the total number of Full Intra Request ( FIR ) packets received by the sender . This metric is only valid for video and is sent by receiver . @property { external : int64 } pliCount Count the total number of Packet Loss Indication ( PLI ) packets received by the sender and is sent by receiver . @property { external : int64 } nackCount Count the total number of Negative ACKnowledgement ( NACK ) packets received by the sender and is sent by receiver . @property { external : int64 } sliCount Count the total number of Slice Loss Indication ( SLI ) packets received by the sender . This metric is only valid for video and is sent by receiver . @property { external : int64 } remb The Receiver Estimated Maximum Bitrate ( REMB ) . This metric is only valid for @property { external : int64 } packetsLost Total number of RTP packets lost for this SSRC . @property { external : double } fractionLost The fraction packet loss reported for this SSRC .
function RTCRTPStreamStats(rTCRTPStreamStatsDict){
  if(!(this instanceof RTCRTPStreamStats))
    return new RTCRTPStreamStats(rTCRTPStreamStatsDict)
  rTCRTPStreamStatsDict = rTCRTPStreamStatsDict || {}
  checkType('String', 'rTCRTPStreamStatsDict.ssrc', rTCRTPStreamStatsDict.ssrc, {required: true});
  checkType('String', 'rTCRTPStreamStatsDict.associateStatsId', rTCRTPStreamStatsDict.associateStatsId, {required: true});
  checkType('boolean', 'rTCRTPStreamStatsDict.isRemote', rTCRTPStreamStatsDict.isRemote, {required: true});
  checkType('String', 'rTCRTPStreamStatsDict.mediaTrackId', rTCRTPStreamStatsDict.mediaTrackId, {required: true});
  checkType('String', 'rTCRTPStreamStatsDict.transportId', rTCRTPStreamStatsDict.transportId, {required: true});
  checkType('String', 'rTCRTPStreamStatsDict.codecId', rTCRTPStreamStatsDict.codecId, {required: true});
  checkType('int64', 'rTCRTPStreamStatsDict.firCount', rTCRTPStreamStatsDict.firCount, {required: true});
  checkType('int64', 'rTCRTPStreamStatsDict.pliCount', rTCRTPStreamStatsDict.pliCount, {required: true});
  checkType('int64', 'rTCRTPStreamStatsDict.nackCount', rTCRTPStreamStatsDict.nackCount, {required: true});
  checkType('int64', 'rTCRTPStreamStatsDict.sliCount', rTCRTPStreamStatsDict.sliCount, {required: true});
  checkType('int64', 'rTCRTPStreamStatsDict.remb', rTCRTPStreamStatsDict.remb, {required: true});
  checkType('int64', 'rTCRTPStreamStatsDict.packetsLost', rTCRTPStreamStatsDict.packetsLost, {required: true});
  checkType('double', 'rTCRTPStreamStatsDict.fractionLost', rTCRTPStreamStatsDict.fractionLost, {required: true});
  Init parent class
  RTCRTPStreamStats.super_.call(this, rTCRTPStreamStatsDict)
  Set object properties
  Object.defineProperties(this, {
    ssrc: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.ssrc
    },
    associateStatsId: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.associateStatsId
    },
    isRemote: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.isRemote
    },
    mediaTrackId: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.mediaTrackId
    },
    transportId: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.transportId
    },
    codecId: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.codecId
    },
    firCount: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.firCount
    },
    pliCount: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.pliCount
    },
    nackCount: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.nackCount
    },
    sliCount: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.sliCount
    },
    remb: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.remb
    },
    packetsLost: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.packetsLost
    },
    fractionLost: {
      writable: true,
      enumerable: true,
      value: rTCRTPStreamStatsDict.fractionLost
    }
  })
}
function RTCRTPStreamStats ( rTCRTPStreamStatsDict ) { if ( ! ( this instanceof RTCRTPStreamStats ) ) return new RTCRTPStreamStats ( rTCRTPStreamStatsDict ) rTCRTPStreamStatsDict = rTCRTPStreamStatsDict || { } RTCRTPStreamStats . super_ . call ( this , rTCRTPStreamStatsDict ) Object . defineProperties ( this , { ssrc : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . ssrc } , associateStatsId : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . associateStatsId } , isRemote : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . isRemote } , mediaTrackId : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . mediaTrackId } , transportId : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . transportId } , codecId : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . codecId } , firCount : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . firCount } , pliCount : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . pliCount } , nackCount : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . nackCount } , sliCount : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . sliCount } , remb : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . remb } , packetsLost : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . packetsLost } , fractionLost : { writable : true , enumerable : true , value : rTCRTPStreamStatsDict . fractionLost } } ) }
Statistics for the RTP stream
 @constructor module:core/complexTypes.RTCRTPStreamStats
Statistics for the RTP stream @constructor module : core / complexTypes . RTCRTPStreamStats
// Check rTCRTPStreamStatsDict has the required fields //  // checkType('String', 'rTCRTPStreamStatsDict.ssrc', rTCRTPStreamStatsDict.ssrc, {required: true}); //   // checkType('String', 'rTCRTPStreamStatsDict.associateStatsId', rTCRTPStreamStatsDict.associateStatsId, {required: true}); //   // checkType('boolean', 'rTCRTPStreamStatsDict.isRemote', rTCRTPStreamStatsDict.isRemote, {required: true}); //   // checkType('String', 'rTCRTPStreamStatsDict.mediaTrackId', rTCRTPStreamStatsDict.mediaTrackId, {required: true}); //   // checkType('String', 'rTCRTPStreamStatsDict.transportId', rTCRTPStreamStatsDict.transportId, {required: true}); //   // checkType('String', 'rTCRTPStreamStatsDict.codecId', rTCRTPStreamStatsDict.codecId, {required: true}); //   // checkType('int64', 'rTCRTPStreamStatsDict.firCount', rTCRTPStreamStatsDict.firCount, {required: true}); //   // checkType('int64', 'rTCRTPStreamStatsDict.pliCount', rTCRTPStreamStatsDict.pliCount, {required: true}); //   // checkType('int64', 'rTCRTPStreamStatsDict.nackCount', rTCRTPStreamStatsDict.nackCount, {required: true}); //   // checkType('int64', 'rTCRTPStreamStatsDict.sliCount', rTCRTPStreamStatsDict.sliCount, {required: true}); //   // checkType('int64', 'rTCRTPStreamStatsDict.remb', rTCRTPStreamStatsDict.remb, {required: true}); //   // checkType('int64', 'rTCRTPStreamStatsDict.packetsLost', rTCRTPStreamStatsDict.packetsLost, {required: true}); //   // checkType('double', 'rTCRTPStreamStatsDict.fractionLost', rTCRTPStreamStatsDict.fractionLost, {required: true}); //   // Init parent class // Set object properties