博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
x264--log系统
阅读量:3918 次
发布时间:2019-05-23

本文共 1830 字,大约阅读时间需要 6 分钟。

libx264中输出日志的API函数x264_log()

/**************************************************************************** * x264_log: ****************************************************************************///日志输出函数void x264_log( x264_t *h, int i_level, const char *psz_fmt, ... ){
if( !h || i_level <= h->param.i_log_level ) {
va_list arg; va_start( arg, psz_fmt ); if( !h ) x264_log_default( NULL, i_level, psz_fmt, arg );//默认日志输出函数 else h->param.pf_log( h->param.p_log_private, i_level, psz_fmt, arg ); va_end( arg ); }}

可以看出x264_log()再开始的时候做了一个判断:只有该条日志级别i_level小于当前系统的日志级别param.i_log_level的时候,才会输出日志。libx264中定义了下面几种日志级别,数值越小,代表日志越紧急。

/* Log level */#define X264_LOG_NONE          (-1)#define X264_LOG_ERROR          0#define X264_LOG_WARNING        1#define X264_LOG_INFO           2#define X264_LOG_DEBUG          3

接下来x264_log()会根据输入的结构体x264_t是否为空来决定是调用x264_log_default()或者是x264_t中的param.pf_log()函数。假如都使用默认配置的话,param.pf_log()在x264_param_default()函数中也会被设置为指向x264_log_default()。因此可以继续看一下x264_log_default()函数。

x264_log_default()

x264_log_default()是libx264默认的日志输出函数。该函数的定义如下所示。

//默认日志输出函数static void x264_log_default( void *p_unused, int i_level, const char *psz_fmt, va_list arg ){
char *psz_prefix; //日志级别 switch( i_level ) {
case X264_LOG_ERROR: psz_prefix = "error"; break; case X264_LOG_WARNING: psz_prefix = "warning"; break; case X264_LOG_INFO: psz_prefix = "info"; break; case X264_LOG_DEBUG: psz_prefix = "debug"; break; default: psz_prefix = "unknown"; break; } //日志级别两边加上“[]” //输出到stderr fprintf( stderr, "x264 [%s]: ", psz_prefix ); x264_vfprintf( stderr, psz_fmt, arg );}

转载地址:http://gfhrn.baihongyu.com/

你可能感兴趣的文章
微软2020开源回顾:止不住的挨骂,停不下的贡献
查看>>
说说 RabbiMQ 的应答模式
查看>>
OpenTelemetry - 云原生下可观测性的新标准
查看>>
使用 ML.NET 实现峰值检测来排查异常
查看>>
通过 .NET NativeAOT 实现用户体验升级
查看>>
如何友好的处理 WebApi 中抛出的错误
查看>>
因MemoryCache闹了个笑话
查看>>
Dotnet的垃圾回收
查看>>
乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时
查看>>
gRPC在C#中的未来属于grpc-dotnet
查看>>
快速排序的性能和名字一样优秀
查看>>
开源推荐:Asp.Net Core入门学习手册!
查看>>
ML.NET 示例:对象检测
查看>>
C#基于yolov3的行人检测
查看>>
ML.NET Cookbook:(16)什么是规范化?为什么我需要关心?
查看>>
WPF 修改(优化)Menu菜单的样式
查看>>
晕了!这个配置值从哪来的?
查看>>
我开发了一款基于web容器的前端项目容器
查看>>
WPF实现环(圆)形菜单
查看>>
WPF 写一个提醒工具软件(完整项目)
查看>>