**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",