一次 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 Embedded Framework 3626 工程编译

解码器支持 diff --git a/chromium/config/Chrome/win/ia32/config.asm b/chromium/config/Chrome/win/ia32/config.asm index ee69a2b525..162c46a4b1 100644 --- a/chromium/config/Chrome/win/ia32/config.asm +++ b/chromium/config/Chrome/win/ia32/config.asm @@ -807,7 +807,7 @@ %define CONFIG_MOTIONPIXELS_DECODER 0 %define CONFIG_MPEG1VIDEO_DECODER 0 %define CONFIG_MPEG2VIDEO_DECODER 0 -%define CONFIG_MPEG4_DECODER 0 +%define CONFIG_MPEG4_DECODER 1 %define CONFIG_MPEG4_CRYSTALHD_DECODER 0 %define CONFIG_MPEG4_V4L2M2M_DECODER 0 %define CONFIG_MPEG4_MMAL_DECODER 0 @@ -1230,7 +1230,7 @@ %define CONFIG_MJPEG_ENCODER 0 %define CONFIG_MPEG1VIDEO_ENCODER 0 %define CONFIG_MPEG2VIDEO_ENCODER 0 -%define CONFIG_MPEG4_ENCODER 0 +%define CONFIG_MPEG4_ENCODER 1 %define CONFIG_MSMPEG4V2_ENCODER 0 %define CONFIG_MSMPEG4V3_ENCODER 0 %define CONFIG_MSVIDEO1_ENCODER 0 @@ -1485,7 +1485,7 @@ %define CONFIG_HEVC_PARSER 0 %define CONFIG_MJPEG_PARSER 0 %define CONFIG_MLP_PARSER 0 -%define CONFIG_MPEG4VIDEO_PARSER 0 +%define CONFIG_MPEG4VIDEO_PARSER 1 %define CONFIG_MPEGAUDIO_PARSER 1 %define CONFIG_MPEGVIDEO_PARSER 0 %define CONFIG_OPUS_PARSER 1 diff --git a/chromium/config/Chrome/win/ia32/config....

March 29, 2021 · 3 min · lyincc

Chromium Embedded Framework 2623 工程编译

编译参数调整 使用指定分支同步仓库。 gclient config --unmanaged --name=src https://chromium.googlesource.com/chromium/src.git@refs/tags/49.0.2623.112 GYP 工程环境参数。 rem 创建 ninja 工程,创建用于调试的 vs 工程。 set GYP_GENERATORS = ninja,msvs-ninja rem 2623 版本推荐使用 vs2013u4 或者 vs2015u1,由于 2015 问题较多,这里使用 2013 编译。 set GYP_MSVS_VERSION=2013 set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio 12.0 rem ninja 工程参数 rem properietary_codecs=1 开启私有解码器 rem ffmpeg_branding=Chrome 使用 Chrome 的 ffmpeg 设置,以支持 mp4。 set GYP_DEFINES=proprietary_codecs=1 ffmpeg_branding=Chrome build\toolchain\win\BUILD.gn 修改 cc 和 cxx 编译选项 移除 /showIncludes 参数,增加 /WX- 参数强制关闭警告视为错误。 额外编译参数 /wd"4828" /wd"4819" /wd"4334"。...

March 24, 2021 · 7 min · lyincc

Chromium Depot Tools 使用

用于 Chromium、Flutter 项目的工具链。 环境变量 禁止命令自动更新。 set DEPOT_TOOLS_UPDATE=0 使用本机 Windows 工具链。 set DEPOT_TOOLS_WIN_TOOLCHAIN=0 指定 MSVS 路径 set GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community 指定 Windows SDK 路径。 set WINDOWSSDKDIR=C:\Program Files (x86)\Windows Kits\10 gclient 命令不使用 Python3。 set GCLIENT_PY3=0 gclient 获取源码。 gclient fetch 下载、 检出并更新源码。 gclient sync 自动 rebase。 gclient sync --auto_rebase 源码同步完成后不执行 hook。 gclient sync --nohooks 在所有子仓库中执行命令。 gclient recurse <command> [option] 恢复所有修改。 gclient revert

September 1, 2020 · 1 min · lyincc