Chrome encoding bitrate control at H.264

1,129 views
Skip to first unread message

Alexander Abagian

unread,
Oct 18, 2017, 6:37:09 PM10/18/17
to discuss-webrtc
Hi,


I have a case with CFU and two WebRTC Chrome 62.0.3202.62 clients. Both are set to use H.264 and bitrate settings at remote SDP :

b=AS:500
a=fmtp:103 profile-level-id=42c01f;packetization-mode=0;level-asymmetry-allowed=1;x-google-start-bitrate=500;x-google-min-bitrate=128;x-google-max-bitrate=500
a=rtpmap:104 H264/90000

First Chrome client encoding bitrate corresponds to the settings, but the second one shows dramatically low one - about 2-3 kbps.
As I see from Chrome statistics, both of the receives RTCP packets one per second. The bad-bitrate Chrome is getting SR only as I see in Wireshark; not sure what kind of RTCP receives another one.

Here's some statistics from webrtc-internals :




GOOD BITRATE CONTROL :
====================

Statistics bweforvideo
----------------------
timestamp	10/19/2017, 1:02:46 AM
googActualEncBitrate		509376
googAvailableReceiveBandwidth	19207
googAvailableSendBandwidth	500000
googBucketDelay			0
googRetransmitBitrate		0
googTargetEncBitrate		500000
googTransmitBitrate		523234


Statistics Conn-video-1-0
-------------------------
timestamp	10/19/2017, 1:06:03 AM
googActiveConnection	true
bytesReceived		170435
bytesSent		21551199
packetsSent		21955
googReadable		true
requestsSent		162
consentRequestsSent	13
responsesSent		2
requestsReceived	2
responsesReceived	150
googChannelId		Channel-video-1
googLocalAddress	192.168.0.109:57330
localCandidateId	Cand-du50G3Qf
googLocalCandidateType	local
googRemoteAddress	192.168.0.116:9000
remoteCandidateId	Cand-FuLaoI/B
googRemoteCandidateType	local
googRtt			0
packetsDiscardedOnSend	0
googTransportType	udp
googWritable		true


BAD BITRATE CONTROL :
=====================

Statistics bweforvideo
----------------------
timestamp	19.10.2017, 0:58:28
googActualEncBitrate		1568
googAvailableReceiveBandwidth	931488
googAvailableSendBandwidth	500000
googBucketDelay			0
googRetransmitBitrate		0
googTargetEncBitrate		500000
googTransmitBitrate		2440

Statistics Conn-video-1-0
----------------------------------
timestamp	19.10.2017, 1:02:18
googActiveConnection	true
bytesReceived		52512163
bytesSent		984367
packetsSent		12849
googReadable		true
requestsSent		389
consentRequestsSent	9
responsesSent		2
requestsReceived	2
responsesReceived	381
googChannelId		Channel-video-1
googLocalAddress	192.168.0.103:51540
localCandidateId	Cand-6PvkQem6
googLocalCandidateType	local
googRemoteAddress	192.168.0.116:9000
remoteCandidateId	Cand-YmWY3ioP
googRemoteCandidateType	local
googRtt			0
packetsDiscardedOnSend	0
googTransportType	udp
googWritable		true


I also encovered difference between remote and local h.264 profile levels : 42c01f vs 42e01f, not sure if is it important 'cause it works.

Could someone make an advice for the encoding bitrate problem ?

Thank you,
Alexander



bra...@webrtc.org

unread,
Oct 20, 2017, 2:56:00 AM10/20/17
to discuss-webrtc
Probably you are using different encoder implementations on the two machines. I would guess that one is HW and one is SW, but you can check this in chrome://webrtc-internals. You can experiment with turning off HW acceleration using the flags in chrome://flags, and see if that makes a difference.

If the problem is with the SW encoder, you are most probably hitting this problem: https://bugs.chromium.org/p/webrtc/issues/detail?id=8070, which is fixed in M63. If that is the case, a workaround is to use packetization-mode=1 in the SDP.

Thanks,

Rasmus
Reply all
Reply to author
Forward
0 new messages