tune design pattern of IProjectService
This commit is contained in:
parent
feb25e5871
commit
b87779ade7
@ -14,7 +14,6 @@ namespace Hi.Webapi.Hubs
|
||||
private readonly RenderingService _renderingService;
|
||||
private readonly ILogger<RenderingHub> _logger;
|
||||
private readonly Dictionary<string, byte[]> _lastFrameCache = [];
|
||||
private readonly Dictionary<string, DateTime> _lastFrameTime = [];
|
||||
private readonly Dictionary<string, Mat4d> _sketchViewCache = [];
|
||||
|
||||
public RenderingHub(RenderingService renderingService, ILogger<RenderingHub> logger)
|
||||
@ -42,7 +41,6 @@ namespace Hi.Webapi.Hubs
|
||||
var clientProxy = Clients.Caller;
|
||||
var logger = _logger;
|
||||
var frameCount = 0;
|
||||
byte[] preImageRgba = null;
|
||||
|
||||
// 設置渲染回調
|
||||
unsafe
|
||||
@ -52,17 +50,6 @@ namespace Hi.Webapi.Hubs
|
||||
if (bgra == null)
|
||||
return;
|
||||
|
||||
// 幀率限制 - 最多每秒30幀
|
||||
if (_lastFrameTime.TryGetValue(sessionId, out var lastTime))
|
||||
{
|
||||
var elapsed = DateTime.Now - lastTime;
|
||||
if (elapsed.TotalMilliseconds < 33) // 30 FPS
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
_lastFrameTime[sessionId] = DateTime.Now;
|
||||
|
||||
frameCount++;
|
||||
if (frameCount <= 5) // 只記錄前5幀
|
||||
{
|
||||
@ -89,17 +76,21 @@ namespace Hi.Webapi.Hubs
|
||||
rgba[i * 4 + 3] = bgra[i * 4 + 3];
|
||||
}
|
||||
|
||||
// 檢查圖像是否有變化
|
||||
if (preImageRgba != null && preImageRgba.SequenceEqual(rgba))
|
||||
if (_lastFrameCache.TryGetValue(
|
||||
sessionId, out byte[] preImageRgba))
|
||||
{
|
||||
if (preImageRgba != null &&
|
||||
preImageRgba.SequenceEqual(rgba))
|
||||
return;
|
||||
preImageRgba = rgba;
|
||||
}
|
||||
_lastFrameCache[sessionId] = rgba;
|
||||
|
||||
|
||||
if (frameCount <= 5)
|
||||
{
|
||||
logger.LogInformation($"Frame {frameCount} sending - Size: {w}x{h}, Data: {rgba.Length} bytes");
|
||||
}
|
||||
|
||||
// 壓縮數據
|
||||
using MemoryStream dstMemoryStream = new MemoryStream();
|
||||
using GZipStream gZipStream = new GZipStream(dstMemoryStream, CompressionMode.Compress);
|
||||
using MemoryStream srcMemoryStream = new MemoryStream(rgba);
|
||||
@ -447,7 +438,6 @@ namespace Hi.Webapi.Hubs
|
||||
|
||||
// 清理緩存
|
||||
_lastFrameCache.Remove(sessionId);
|
||||
_lastFrameTime.Remove(sessionId);
|
||||
_sketchViewCache.Remove(sessionId);
|
||||
|
||||
_renderingService.RemoveEngine(sessionId);
|
||||
|
Loading…
x
Reference in New Issue
Block a user