Share via

The remote participant is sending video at 1080p, but it is transmitted as 720p instead of 1080p, and the receiving participant also gets it at 720p despite having a 50 Mbps network speed.

Agre, Harishchandra 40 Reputation points
2025-11-20T07:00:04.72+00:00

**The remote participant is sending video at 1080p, but it is transmitted as 720p instead of 1080p, and the receiving participant also gets it at 720p despite having a 50 Mbps network speed.

Host Participant Video Starts:**

Media stats sample Sent ==> host Video ==> {"id":"171907432","codecName":"H264","bitrate":96856,"packets":78,"packetsPerSecond":24,"frameRateInput":15,"frameWidthInput":1280,"frameHeightInput":720,"framesEncoded":40,"frameRateEncoded":15,"framesSent":40,"frameRateSent":15,"frameWidthSent":1280,"frameHeightSent":720,"keyFramesEncoded":3,"transportId":"T01","streamId":202}

useMediaStats.tsx:31 Media stats sample Sent ==> host Video ==> {"id":"171907432","codecName":"H264","bitrate":1200,"packets":93,"packetsPerSecond":15,"frameRateInput":15,"frameWidthInput":1280,"frameHeightInput":720,"framesEncoded":55,"frameRateEncoded":15,"framesSent":55,"frameRateSent":15,"frameWidthSent":1280,"frameHeightSent":720,"keyFramesEncoded":3,"transportId":"T01","streamId":202}

useMediaStats.tsx:31 Media stats sample Sent ==> host Video ==> {"id":"171907432","codecName":"H264","bitrate":1200,"packets":108,"packetsPerSecond":15,"frameRateInput":15,"frameWidthInput":1280,"frameHeightInput":720,"framesEncoded":70,"frameRateEncoded":15,"framesSent":70,"frameRateSent":15,"frameWidthSent":1280,"frameHeightSent":720,"keyFramesEncoded":3,"transportId":"T01","streamId":202}

useMediaStats.tsx:31 Media stats sample Sent ==> host Video ==> {"id":"171907432","codecName":"H264","bitrate":76840,"packets":135,"packetsPerSecond":27,"frameRateInput":15,"frameWidthInput":1280,"frameHeightInput":720,"framesEncoded":85,"frameRateEncoded":15,"framesSent":85,"frameRateSent":15,"frameWidthSent":1280,"frameHeightSent":720,"keyFramesEncoded":4,"transportId":"T01","streamId":202}

useMediaStats.tsx:31 Media stats sample Sent ==> host Video ==> {"id":"171907432","codecName":"H264","bitrate":1200,"packets":150,"packetsPerSecond":15,"frameRateInput":15,"frameWidthInput":1280,"frameHeightInput":720,"framesEncoded":100,"frameRateEncoded":15,"framesSent":100,"frameRateSent":15,"frameWidthSent":1280,"frameHeightSent":720,"keyFramesEncoded":4,"transportId":"T01","streamId":202}

useMediaStats.tsx:31 Media stats sample Sent ==> host Video ==> {"id":"171907432","codecName":"H264","bitrate":1200,"packets":165,"packetsPerSecond":15,"frameRateInput":15,"frameWidthInput":1280,"frameHeightInput":720,"framesEncoded":115,"frameRateEncoded":15,"framesSent":115,"frameRateSent":15,"frameWidthSent":1280,"frameHeightSent":720,"keyFramesEncoded":4,"transportId":"T01","streamId":202}

useMediaStats.tsx:31 Media stats sample Sent ==> host Video ==> {"id":"171907432","codecName":"H264","bitrate":1200,"packets":180,"packetsPerSecond":15,"frameRateInput":15,"frameWidthInput":1280,"frameHeightInput":720,"framesEncoded":130,"frameRateEncoded":15,"framesSent":130,"frameRateSent":15,"frameWidthSent":1280,"frameHeightSent":720,"keyFramesEncoded":4,"transportId":"T01","streamId":202}

useMediaStats.tsx:31 Media stats sample Sent ==> host Video ==> {"id":"171907432","codecName":"H264","bitrate":1200,"packets":195,"packetsPerSecond":15,"frameRateInput":15,"frameWidthInput":1280,"frameHeightInput":720,"framesEncoded":145,"frameRateEncoded":15,"framesSent":145,"frameRateSent":15,"frameWidthSent":1280,"frameHeightSent":720,"keyFramesEncoded":4,"transportId":"T01","streamId":202}

useMediaStats.tsx:31 Media stats sample Sent ==> host Video ==> {"id":"171907432","codecName":"H264","bitrate":1200,"packets":210,"packetsPerSecond":15,"frameRateInput":15,"frameWidthInput":1280,"frameHeightInput":720,"framesEncoded":160,"frameRateEncoded":15,"framesSent":160,"frameRateSent":15,"frameWidthSent":1280,"frameHeightSent":720,"keyFramesEncoded":4,"transportId":"T01","streamId":202}

**
Remot participants Receive video starts:**

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1120,"packets":1848,"packetsPerSecond":38,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":761,"framesDropped":0,"framesDecoded":761,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":4,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

2LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1264,"packets":1880,"packetsPerSecond":32,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":16,"frameRateReceived":16,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":777,"framesDropped":0,"framesDecoded":777,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":3,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1216,"packets":1919,"packetsPerSecond":40,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":14,"frameRateReceived":14,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":791,"framesDropped":0,"framesDecoded":791,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":2,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

2LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1120,"packets":1957,"packetsPerSecond":38,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":806,"framesDropped":0,"framesDecoded":806,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":3,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1200,"packets":1988,"packetsPerSecond":31,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":821,"framesDropped":0,"framesDecoded":821,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":9,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1288,"packets":2028,"packetsPerSecond":40,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":836,"framesDropped":0,"framesDecoded":836,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":5,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1120,"packets":2066,"packetsPerSecond":38,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":851,"framesDropped":0,"framesDecoded":851,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":4,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1280,"packets":2098,"packetsPerSecond":32,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":16,"frameRateReceived":16,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":867,"framesDropped":0,"framesDecoded":867,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":3,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

useMediaStats.tsx:48 Media stats summary Receive ==> remote_user Video ==> {"id":"22102","codecName":{"raw":["H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264","H264"],"timestamp":"2025-11-20T06:02:46.894Z"},"bitrate":{"raw":[0,19456,96816,1200,1200,58392,1200,1200,1200,1192,1216,1200,1200,1200,1200,1200,1120,1280,1200,1200,1120,1280,1200,1200,1200,1200,1184,1216,1184,1216,1200,1120,1280,1200,1200,1120,1280,1200,1120,1200,1272,1208,1192,1144,1200,1280,1120,1200,1200,1280,1120,1264,1216,1120,1200,1288,1120,1280],"timestamp":"2025-11-20T06:02:46.894Z","aggregation":{"count":[8,10,10,10,10,10],"sum":[179464,12008,12000,12000,11936,12088],"max":[96816,1280,1280,1280,1280,1288],"min":[0,1120,1120,1120,1120,1120]}},"packets":{"raw":[35,67,115,154,185,230,269,300,339,378,409,448,479,518,549,588,618,658,697,728,766,806,845,884,915,954,985,1024,1063,1094,1133,1163,1203,1242,1273,1311,1343,1382,1412,1451,1491,1522,1561,1591,1630,1670,1700,1739,1770,1810,1848,1880,1919,1957,1988,2028,2066,2098],"timestamp":"2025-11-20T06:02:46.894Z"},"packetsLost":{"raw":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"timestamp":"2025-11-20T06:02:46.894Z"},"frameWidthReceived":{"raw":[960,960,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280,1280],"timestamp":"2025-11-20T06:02:46.894Z","aggregation":{"count":[8,10,10,10,10,10],"sum":[9600,12800,12800,12800,12800,12800],"max":[1280,1280,1280,1280,1280,1280],"min":[960,1280,1280,1280,1280,1280]}},"frameHeightReceived":{"raw":[540,540,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720,720],"timestamp":"2025-11-20T06:02:46.894Z","aggregation":{"count":[8,10,10,10,10,10],"sum":[5400,7200,7200,7200,7200,7200],"max":[720,720,720,720,720,720],"min":[540,720,720,720,720,720]}},"framesReceived":{"raw":[12,27,42,56,71,87,102,117,132,147,162,177,192,207,222,237,251,267,282,297,311,327,342,357,372,387,402,417,432,446,462,476,492,507,521,536,552,566,581,596,611,626,642,656,671,687,701,716,731,746,761,777,791,806,821,836,851,867],"timestamp":"2025-11-20T06:02:46.894Z"},"framesDropped":{"raw":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"timestamp":"2025-11-20T06:02:46.894Z"},"framesDecoded":{"raw":[12,27,42,56,71,87,102,117,132,147,162,177,192,207,222,237,251,267,282,297,311,327,342,357,372,387,402,417,432,446,462,476,492,507,521,536,552,566,581,596,611,626,642,656,671,687,701,716,731,746,761,777,791,806,821,836,851,867],"timestamp":"2025-11-20T06:02:46.894Z"},"keyFramesDecoded":{"raw":[2,2,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4],"timestamp":"2025-11-20T06:02:46.894Z"},"transportId":{"raw":["T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01","T01"],"timestamp":"2025-11-20T06:02:46.894Z"},"jitterInMs":{"raw":[1,2,2,2,2,3,4,2,3,3,4,4,4,3,3,3,5,4,3,3,3,3,4,4,3,3,3,7,5,4,3,3,4,4,3,3,4,4,4,5,3,4,3,9,7,4,4,4,3,7,4,3,2,3,9,5,4,3],"timestamp":"2025-11-20T06:02:46.894Z","aggregation":{"count":[8,10,10,10,10,10],"sum":[18,36,36,37,47,43],"max":[4,5,7,5,9,9],"min":[1,3,3,3,3,2]}},"jitterBufferDelayInMs":{"raw":[4,4,4,8,13,14,13,13,13,12,12,12,12,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,9,10,9,9,9,9,9,9,9,9,9,9,9,9,9,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9],"timestamp":"2025-11-20T06:02:46.894Z","aggregation":{"count":[8,10,10,10,10,10],"sum":[73,115,100,91,91,90],"max":[14,13,10,10,10,9],"min":[4,10,10,9,9,9]}},"streamId":{"raw":[202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,202],"timestamp":"2025-11-20T06:02:46.894Z"},"longestFreezeDurationInMs":{"raw":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"timestamp":"2025-11-20T06:02:46.894Z"},"totalFreezeDurationInMs":{"raw":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"timestamp":"2025-11-20T06:02:46.894Z"},"packetsPerSecond":{"raw":[32,48,39,31,45,39,31,39,39,31,39,31,39,31,39,30,40,39,31,38,40,39,39,31,39,31,39,38,31,39,30,40,39,31,38,32,39,30,39,40,31,39,30,39,40,30,39,31,40,38,32,40,38,31,40,38,32],"timestamp":"2025-11-20T06:02:47.908Z","aggregation":{"count":[7,10,10,10,10,10],"sum":[265,358,366,357,357,360],"max":[48,40,40,40,40,40],"min":[31,30,31,30,30,31]}},"packetsLostPerSecond":{"raw":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"timestamp":"2025-11-20T06:02:47.908Z","aggregation":{"count":[7,10,10,10,10,10],"sum":[0,0,0,0,1,0],"max":[0,0,0,0,1,0],"min":[0,0,0,0,0,0]}},"frameRateDecoded":{"raw":[15,15,14,15,16,15,15,15,15,15,15,15,15,15,15,14,16,15,15,14,16,15,15,15,15,15,15,15,14,16,14,16,15,14,15,16,14,15,15,15,15,16,14,15,16,14,15,15,15,15,16,14,15,15,15,15,16],"timestamp":"2025-11-20T06:02:47.908Z","aggregation":{"count":[7,10,10,10,10,10],"sum":[105,150,150,149,150,151],"max":[16,16,16,16,16,16],"min":[14,14,14,14,14,14]}},"frameRateReceived":{"raw":[15,15,14,15,16,15,15,15,15,15,15,15,15,15,15,14,16,15,15,14,16,15,15,15,15,15,15,15,14,16,14,16,15,14,15,16,14,15,15,15,15,16,14,15,16,14,15,15,15,15,16,14,15,15,15,15,16],"timestamp":"2025-11-20T06:02:47.908Z","aggregation":{"count":[7,10,10,10,10,10],"sum":[105,150,150,149,150,151],"max":[16,16,16,16,16,16],"min":[14,14,14,14,14,14]}}}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1120,"packets":2136,"packetsPerSecond":38,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":14,"frameRateReceived":14,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":881,"framesDropped":0,"framesDecoded":881,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":4,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1280,"packets":2168,"packetsPerSecond":32,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":896,"framesDropped":0,"framesDecoded":896,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":3,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1120,"packets":2206,"packetsPerSecond":38,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":911,"framesDropped":0,"framesDecoded":911,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":2,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1200,"packets":2245,"packetsPerSecond":39,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":926,"framesDropped":0,"framesDecoded":926,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":8,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1200,"packets":2284,"packetsPerSecond":39,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":941,"framesDropped":0,"framesDecoded":941,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":5,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1200,"packets":2315,"packetsPerSecond":31,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":956,"framesDropped":0,"framesDecoded":956,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":4,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

2LoggerService.ts:59 [bOe] : {"isHostVideoLoading":false,"hasHostVideoIssue":false,"isHostReceivingVideoData":true,"hasHostNetworkIssue":false,"hostVideoElement":{},"isHostInCall":true,"isOnline":true,"hasLocalNetworkIssue":false}

useMediaStats.tsx:31 Media stats sample Receive ==> remote_user Video ==> {"id":"22102","codecName":"H264","bitrate":1200,"packets":2354,"packetsPerSecond":39,"packetsLost":1,"packetsLostPerSecond":0,"frameRateDecoded":15,"frameRateReceived":15,"frameWidthReceived":1280,"frameHeightReceived":720,"framesReceived":971,"framesDropped":0,"framesDecoded":971,"keyFramesDecoded":4,"transportId":"T01","jitterInMs":3,"jitterBufferDelayInMs":9,"streamId":202,"longestFreezeDurationInMs":0,"totalFreezeDurationInMs":0}

**

Constraints set before call starting:** 

/**

 * Initializes a call using Azure Communication Services.

 * @param callAgent - The CallAgent instance used to manage the call.

 */

const initializeCall = async (callAgent: CallAgent): Promise<void> => {

  const isHost = user.role === USER_ROLES.hostUserRole;

  const constraints = {
    send: {
      frameHeight: {
        max: 1080 // Full HD resolution
      },
      frameRate: {
        max: 30 // 30 fps is a common upper limit for smooth video
      },
      bitrate: {
        max: 2500000
      }
    }

  };
  const videoOptions: VideoOptions = {
    localVideoStreams: selectedCamera && isHost ? [new LocalVideoStream(selectedCamera)] : undefined,
    constraints
  };
  const audioOptions = selectedMicrophone ? [new LocalAudioStream(selectedMicrophone)] : undefined;
  try {
    const callJoin = callAgent.join(
      { roomId: user.acsRoomId },
      {
        audioOptions: {
          muted: !user.micToggle,
          localAudioStreams: audioOptions
        },
        videoOptions
      }
    );
    if (isHost && !fetchHostDetails) {
      setCookies(COOKIES_VARIABLE.hostDetail, JSON.stringify(user), 12);
    }
    stats(callJoin);
    setCall(callJoin);
  } catch (error: any) {
    logger.error(JSON.stringify(error), `${StartCallProvider.name}:${initializeCall.name}`);
  }
};

 

  Constraints set after call starting: 


const applyVideoQualityConstraints = async (call: Call, isHost: boolean): Promise<void> => {
  if (call.state !== CallState.connected || !isHost) {
    return;
  }

  const videoQualityConstraints = {
    send: {
      frameHeight: { max: 1080 }, // Full HD
      frameRate: { max: 30 }, // Smooth video
      bitrate: { max: 2500000 } // ~2.5 Mbps
    }
  };

  try {
    // Apply constraints
    await call.setConstraints({ video: videoQualityConstraints });

    // Fetch actual video stats
    const stats = call.localVideoStreams[0];

    // eslint-disable-next-line no-console
    console.log(stats, 'StartCallProvider: video');
  } catch (error) {
    // eslint-disable-next-line no-console
    console.error('❌ Failed to apply video constraints:', error);
  }
};
// Maintaining the call state
React.useEffect(() => {
  if (call?.state === CallState.connected) {
    applyVideoQualityConstraints(call, user.role === Role.Host);
  }
}, [call?.state]);


Library version:

    "@azure/communication-calling": "^1.38.1",
    "@azure/communication-calling-effects": "^1.3.1",
    "@azure/communication-chat": "^1.6.0",
    "@azure/communication-react": "^1.30.0",
    "@azure/communication-rooms": "^1.2.0",
Azure Communication Services
0 comments No comments

Answer accepted by question author

Jerald Felix 12,460 Reputation points Volunteer Moderator
2025-11-20T11:53:56.48+00:00

Hello Agre, Harishchandra,

Thanks for raising this question in Q&A forum.

I have analyzed the logs you provided, and the key to the issue lies in the specific media stats for the sender.

Root Cause Analysis

In your sender logs, please observe the frameHeightInput value:


"frameHeightInput": 720,

"frameHeightSent": 720

This indicates that the source camera itself is capturing at 720p, not 1080p. The max: 1080 constraint you applied acts as a ceiling, not a floor. Since 720p satisfies the condition "maximum 1080p," the browser is defaulting to the standard 720p capture resolution (which is common behavior to save CPU/Bandwidth) rather than forcing an upscale to 1080p.

Troubleshooting & Resolution

To achieve a true 1080p stream, you need to address why the input capture is defaulting to 720p.

1. Check Receiver's Rendered Size (Most Likely Cause)

Azure Communication Services uses intelligent adaptive streaming. Even if the sender can send 1080p, the SDK will often downgrade the capture/send resolution if the Remote Participant is not displaying the video in a container large enough to warrant 1080p.

  • Check: Ensure the receiver's video HTML element is actually rendered at a size close to 1920x1080 pixels on the screen.
  • Test: If the receiver is viewing the video in a small grid tile or a 720p window, the sender will automatically cap at 720p to save resources.

2. Browser & CPU Constraints

1080p encoding is CPU-intensive. If the sender's CPU usage is high, the browser (Chrome/Edge) may restrict the capture resolution to 720p regardless of your bandwidth.

  • Verify: Check the Task Manager on the sender machine. If CPU is spiking, the browser will throttle the resolution.

3. Camera Hardware Capabilities

Ensure the specific camera hardware being used supports 1080p capture in the browser. You can verify this by running a vanilla WebRTC test (like https://webrtc.github.io/samples/src/content/getusermedia/resolution/) to see if the camera can indeed provide 1920x1080 to the browser.

4. Constraint "Ideal" vs "Max"

The ACS SDK setConstraints method with { max: 1080 } effectively says "Do not exceed 1080p". It does not strictly say "You MUST use 1080p". Currently, the SDK optimizes for stability.

  • Try: Ensure you are using the latest version of the Calling SDK, as 1080p support has had several improvements in recent updates.

If helps, approve the answer.

Best Regards,

Jerald Felix

Was this answer helpful?

0 comments No comments

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.