fixed typedefs, added per codec statistics

This commit is contained in:
Vladislav Mikhalin 2024-12-27 22:14:48 +03:00
parent f7a34b3bc6
commit f952b3c1b4
4 changed files with 22 additions and 4 deletions

View File

@ -76,6 +76,7 @@ union AjmJobFlags {
enum class AjmStatisticsFlags : u64 { enum class AjmStatisticsFlags : u64 {
Memory = 1 << 0, Memory = 1 << 0,
EnginePerCodec = 1 << 15,
Engine = 1 << 16, Engine = 1 << 16,
}; };
DECLARE_ENUM_FLAG_OPERATORS(AjmStatisticsFlags) DECLARE_ENUM_FLAG_OPERATORS(AjmStatisticsFlags)
@ -145,19 +146,25 @@ union AjmSidebandInitParameters {
u8 reserved[8]; u8 reserved[8];
}; };
typedef struct { struct AjmSidebandStatisticsEngine {
float usage_batch; float usage_batch;
float usage_interval[3]; float usage_interval[3];
} AjmSidebandStatisticsEngine; };
typedef struct { struct AjmSidebandStatisticsEnginePerCodec {
u8 codec_count;
u8 codec_id[3];
float codec_percentage[3];
};
struct AjmSidebandStatisticsMemory {
u32 instance_free; u32 instance_free;
u32 buffer_free; u32 buffer_free;
u32 batch_size; u32 batch_size;
u32 input_size; u32 input_size;
u32 output_size; u32 output_size;
u32 small_size; u32 small_size;
} AjmSidebandStatisticsMemory; };
struct AjmSidebandStatisticsEngineParameters { struct AjmSidebandStatisticsEngineParameters {
u32 interval_count; u32 interval_count;

View File

@ -183,6 +183,11 @@ AjmJob AjmStatisticsJobFromBatchBuffer(u32 instance_id, AjmBatchBuffer batch_buf
job.output.p_engine = &output_batch.Consume<AjmSidebandStatisticsEngine>(); job.output.p_engine = &output_batch.Consume<AjmSidebandStatisticsEngine>();
*job.output.p_engine = AjmSidebandStatisticsEngine{}; *job.output.p_engine = AjmSidebandStatisticsEngine{};
} }
if (True(flags.statistics_flags & AjmStatisticsFlags::EnginePerCodec)) {
job.output.p_engine_per_codec =
&output_batch.Consume<AjmSidebandStatisticsEnginePerCodec>();
*job.output.p_engine_per_codec = AjmSidebandStatisticsEnginePerCodec{};
}
if (True(flags.statistics_flags & AjmStatisticsFlags::Memory)) { if (True(flags.statistics_flags & AjmStatisticsFlags::Memory)) {
job.output.p_memory = &output_batch.Consume<AjmSidebandStatisticsMemory>(); job.output.p_memory = &output_batch.Consume<AjmSidebandStatisticsMemory>();
*job.output.p_memory = AjmSidebandStatisticsMemory{}; *job.output.p_memory = AjmSidebandStatisticsMemory{};

View File

@ -34,6 +34,7 @@ struct AjmJob {
AjmSidebandStream* p_stream = nullptr; AjmSidebandStream* p_stream = nullptr;
AjmSidebandFormat* p_format = nullptr; AjmSidebandFormat* p_format = nullptr;
AjmSidebandStatisticsMemory* p_memory = nullptr; AjmSidebandStatisticsMemory* p_memory = nullptr;
AjmSidebandStatisticsEnginePerCodec* p_engine_per_codec = nullptr;
AjmSidebandStatisticsEngine* p_engine = nullptr; AjmSidebandStatisticsEngine* p_engine = nullptr;
AjmSidebandGaplessDecode* p_gapless_decode = nullptr; AjmSidebandGaplessDecode* p_gapless_decode = nullptr;
AjmSidebandMFrame* p_mframe = nullptr; AjmSidebandMFrame* p_mframe = nullptr;

View File

@ -14,6 +14,11 @@ void AjmInstanceStatistics::ExecuteJob(AjmJob& job) {
job.output.p_engine->usage_interval[idx] = 0.01; job.output.p_engine->usage_interval[idx] = 0.01;
} }
} }
if (job.output.p_engine_per_codec) {
job.output.p_engine_per_codec->codec_count = 1;
job.output.p_engine_per_codec->codec_id[0] = static_cast<u8>(AjmCodecType::At9Dec);
job.output.p_engine_per_codec->codec_percentage[0] = 0.01;
}
if (job.output.p_memory) { if (job.output.p_memory) {
job.output.p_memory->instance_free = 0x400000; job.output.p_memory->instance_free = 0x400000;
job.output.p_memory->buffer_free = 0x400000; job.output.p_memory->buffer_free = 0x400000;