一次 CEF 崩溃排查

崩溃信息 dump 原始堆栈 WARNING: Continuing a non-continuable exception (2978.5e4): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. eax=00b5f130 ebx=0b746000 ecx=00000000 edx=00b5f278 esi=0b746000 edi=00b5f220 eip=116b5c90 esp=00b5f0b8 ebp=00b5f0d8 iopl=0 nv up ei pl nz na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010206 libcef!ui::Compositor::SetScaleAndSize+0xe: 116b5c90 f30f1089c4000000 movss xmm1,dword ptr [ecx+0C4h] ds:002b:000000c4=???????? 0:000> k # ChildEBP RetAddr 00 00b5f0d8 116b48a3 libcef!...

July 31, 2021 · 2 min · lyincc

增加 Chromium 支持的媒体格式

增加解码器 增加 GN 参数 enable_hevc_demuxing=true 开启 HEVC demux 支持。 ffmpeg_branding=“Chrome” 使用为 Chrome 预订的参数。 proprietary_codecs=true 开启私有解码器支持。 增加 ffmpeg 解码器代码 HEVC 解码器代码 在 third_part/ffmpeg/ffmpeg_generated.gni 文件中确保以下文件被加入源文件中。 ffmpeg_c_sources += [ "libavcodec/bswapdsp.c", "libavcodec/hevcdec.c", "libavcodec/hevc_cabac.c", "libavcodec/hevc_data.c", "libavcodec/hevc_filter.c", "libavcodec/hevc_mvs.c", "libavcodec/hevc_parse.c", "libavcodec/hevc_parser.c", "libavcodec/hevc_ps.c", "libavcodec/hevc_refs.c", "libavcodec/hevc_sei.c", "libavcodec/hevcdsp.c", "libavcodec/hevcpred.c", "libavcodec/h2645_parse.c", "libavcodec/x86/bswapdsp_init.c", "libavcodec/x86/hevcdsp_init.c", "libavformat/hevc.c", "libavformat/hevcdec.c", ] ffmpeg_asm_sources += [ "libavcodec/x86/bswapdsp.asm", "libavcodec/x86/hevc_deblock.asm", "libavcodec/x86/hevc_idct.asm", "libavcodec/x86/hevc_mc.asm", "libavcodec/x86/hevc_add_res.asm", "libavcodec/x86/hevc_sao.asm", "libavcodec/x86/hevc_sao_10bit.asm", ] 修改 ffmpeg 配置 HEVC 配置 third_party\ffmpeg\chromium\config\Chrome\win\ia32\config.h 修改 c++ 参数...

April 1, 2021 · 1 min · lyincc

Chromium 工程编译

调试 Chromium 在 out\Debug_* 目录下会自动生成 cef.sln 工程文件,用 VS 打开后即可附加调试 命令行参数 --log-level=1 # 日志输出等级 INFO = 0, WARNING = 1, LOG_ERROR = 2, LOG_FATAL = 3 --log-file # 日志文件 --enable-logging=stderr # 重定向日志到标准错误输出 对于 VERBOSE 等级日志,需要专门指定模块等级。参考 base/logging.h --vmodule=profile=2,icon_loader=1,browser_*=3,*/chromeos/*=4 # 模块日志等级 编译 Chromium 参考 chromium 官方文档 https://www.chromium.org/developers/how-tos/get-the-code depot_tools 环境参数 rem 禁止更新 set DEPOT_TOOLS_UPDATE=0 rem 使用本地工具链 set DEPOT_TOOLS_WIN_TOOLCHAIN=0 rem python3 有问题,暂时使用 python2 set GCLIENT_PY3=0 rem 不使用 gn 工具 set CEF_USE_GN=0 rem Windows SDK 路径 set WINDOWSSDKDIR=C:\Program Files (x86)\Windows Kits\10 初始化 gclient 工程...

March 26, 2020 · 2 min · lyincc