Enable log information. Disable NPU in U9

This commit is contained in:
2026-04-21 15:48:27 +10:00
parent 00f6e2f852
commit 97d814936d
18 changed files with 301 additions and 54 deletions

View File

@@ -15,8 +15,18 @@
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <turbojpeg.h>
#include <atomic>
#include <chrono>
// Leak diagnostics — net counters surfaced in MEDIA_Leak heartbeat.
// Defined in video_player.cpp; also incremented from FrameQueue here.
extern std::atomic<int64_t> g_queueClones; // av_frame_clone from FrameQueue
extern std::atomic<int64_t> g_queueFrees; // av_frame_free from FrameQueue
extern std::atomic<int64_t> g_nv12Clones; // m_currentNV12Frame = av_frame_clone
extern std::atomic<int64_t> g_nv12Frees; // av_frame_free(&m_currentNV12Frame)
extern std::atomic<int64_t> g_cudaHWClones; // m_currentCudaHWFrame = clone
extern std::atomic<int64_t> g_cudaHWFrees; // av_frame_free(&m_currentCudaHWFrame)
typedef struct
{
uint32 SyncTimestamp;
@@ -46,6 +56,7 @@ public:
std::cerr << "Failed to clone AVFrame!" << std::endl;
return;
}
g_queueClones.fetch_add(1, std::memory_order_relaxed);
frameQueue.push(frameCopy);
m_frameSeq++; // New frame arrived
@@ -55,6 +66,7 @@ public:
AVFrame* oldFrame = frameQueue.front();
frameQueue.pop();
av_frame_free(&oldFrame);
g_queueFrees.fetch_add(1, std::memory_order_relaxed);
}
}
@@ -73,7 +85,15 @@ public:
}
// Clone the latest frame before returning it
return av_frame_clone(frameQueue.back());
AVFrame* clone = av_frame_clone(frameQueue.back());
if (clone) g_queueClones.fetch_add(1, std::memory_order_relaxed);
return clone;
}
// Current depth — snapshot used by the leak heartbeat.
size_t size() {
std::lock_guard<std::mutex> lock(queueMutex);
return frameQueue.size();
}
// Retrieve and remove the oldest frame from the queue
@@ -102,6 +122,7 @@ public:
AVFrame* frame = frameQueue.front();
frameQueue.pop();
av_frame_free(&frame);
g_queueFrees.fetch_add(1, std::memory_order_relaxed);
}
m_frameSeq = 0;
}