diff --git a/ui3/ui3.js b/ui3/ui3.js index c6fdec8..a8a1f37 100644 --- a/ui3/ui3.js +++ b/ui3/ui3.js @@ -17638,6 +17638,15 @@ function FetchH264VideoModule() nativeRes = '' + nativeRes + ''; } var digitalZoom = ' \uD83D\uDD0D' + imageRenderer.zoomHandler.GetZoomFactor().toFixed(2) + 'x'; + var playerName = self.GetPlayerName(); + if (playerName) + { + var hwva = self.IsUsingHardwareAcceleration(); + if (hwva == 0) + playerName += " (no Hardware Accel)"; + else if (hwva == 1) + playerName += " (Hardware Accel)"; + } nerdStats.BeginUpdate(); nerdStats.UpdateStat("Viewport", null, $layoutbody.width() + "x" + $layoutbody.height() + GetDevicePixelRatioTag() + digitalZoom); @@ -17652,6 +17661,8 @@ function FetchH264VideoModule() nerdStats.UpdateStat("Seek Position", (frame.pos / 100).toFixed() + "%"); nerdStats.UpdateStat("Frame Time", GetDateStr(new Date(frame.utc + GetServerTimeOffset()), true)); nerdStats.UpdateStat("Stream Timestamp", frame.timestamp + "ms"); + if (playerName) + nerdStats.UpdateStat("Video Player", playerName); nerdStats.UpdateStat("Codecs", codecs); nerdStats.UpdateStat("Video Bit Rate", bitRate_Video, formatBitsPerSecond(bitRate_Video, 1), true); nerdStats.UpdateStat("Audio Bit Rate", bitRate_Audio, formatBitsPerSecond(bitRate_Audio, 1), true); @@ -17773,6 +17784,21 @@ function FetchH264VideoModule() } return false; } + this.GetPlayerName = function () + { + return typeof h264_player.GetPlayerName === "function" ? h264_player.GetPlayerName() : ""; + } + this.GetPlayerNameShort = function () + { + return typeof h264_player.GetPlayerNameShort === "function" ? h264_player.GetPlayerNameShort() : ""; + } + /** + * -1: unknown, 0: false, 1: true + */ + this.IsUsingHardwareAcceleration = function () + { + return typeof h264_player.IsUsingHardwareAcceleration === "function" ? h264_player.IsUsingHardwareAcceleration() : -1; + } Initialize(); perfMonInterval = setInterval(MeasurePerformance, 2500); } @@ -18021,6 +18047,21 @@ function OpenH264_Player(frameRendered, PlaybackReachedNaturalEndCB) allFramesAccepted = true; CheckStreamEndCondition(); } + this.GetPlayerName = function () + { + return "JavaScript"; + } + this.GetPlayerNameShort = function () + { + return "js"; + } + /** + * -1: unknown, 0: false, 1: true + */ + this.IsUsingHardwareAcceleration = function () + { + return 0; + } Initialize(); } @@ -18528,6 +18569,25 @@ function Pnacl_Player(frameRendered, PlaybackReachedNaturalEndCB) allFramesAccepted = true; CheckStreamEndCondition(); } + this.GetPlayerName = function () + { + return "NaCl"; + } + this.GetPlayerNameShort = function () + { + return "NaCl"; + } + /** + * -1: unknown, 0: false, 1: true + */ + this.IsUsingHardwareAcceleration = function () + { + if (currentH264Player === H264PlayerOptions.NaCl_HWVA_Yes) + return 1; + else if (currentH264Player === H264PlayerOptions.NaCl_HWVA_No) + return 0; + return -1; + } Initialize(); } @@ -18811,6 +18871,21 @@ function WebCodec_Player(frameRendered, PlaybackReachedNaturalEndCB) { videoModulesShared.DrawThumbAsFullCamera(cameraId, groupId, canvas); } + this.GetPlayerName = function () + { + return "WebCodecs"; + } + this.GetPlayerNameShort = function () + { + return "wc"; + } + /** + * -1: unknown, 0: false, 1: true + */ + this.IsUsingHardwareAcceleration = function () + { + return -1; + } Initialize(); } @@ -19298,6 +19373,21 @@ function HTML5_MSE_Player(frameRendered, PlaybackReachedNaturalEndCB, playerErro disableRenderingStateChangesUntilNextFrame = true; videoModulesShared.DrawThumbAsFullCamera(cameraId, groupId); } + this.GetPlayerName = function () + { + return "HTML5"; + } + this.GetPlayerNameShort = function () + { + return "h5"; + } + /** + * -1: unknown, 0: false, 1: true + */ + this.IsUsingHardwareAcceleration = function () + { + return -1; + } this.PreviousFrameIsLastFrame = function () { if (jmuxer) @@ -24320,20 +24410,20 @@ function CameraListDialog() + 'Total Bit Rate - bytes' + '' + '