Pull Request has been successfully merged by openharmony_ci.
(Thank you for linsanjiu's contribution.)【AI-Review】【一般】【基础代码问题】【稳定性问题】多级指针解引用缺少空指针检查
● 问题:新增代码 recordWriteData->video_st.st->codec->width 涉及三级指针解引用(video_st.st → st->codec → codec->width),但未进行任何空指针检查。虽然当前代码流程中 StartEncoderWrite() 在 VideoAudioStreamAndAvcodecOpen() 成功之后才被调用,video_st.st 和 st->codec 理应有效,但缺乏防御性检查使得代码在面对异常场景或未来修改时存在崩溃风险。旧代码使用 srcFormat.width/height(值类型,嵌入在 RecordWriteData 结构体中)则不存在此问题。
● 影响:若因编码器初始化异常或代码路径变更导致 video_st.st 或 st->codec 为空,将导致空指针解引用崩溃。
● 建议:添加防御性空指针检查:
if (!recordWriteData->video_st.st || !recordWriteData->video_st.st->codec) {
LOGE("ERROR: video stream or codec is NULL in StartEncoderWrite");
return;
}
swsState.outWidth = recordWriteData->video_st.st->codec->width;
swsState.outHeight = recordWriteData->video_st.st->codec->height;


【AI-Review】【一般】【基础代码问题】【稳定性问题】srcFormat 不再从帧数据更新后的时序一致性
● 问题:此 PR 移除了 ff_ffplay.c:record_video_frame() 和 ffpipenode_ohos_mediacodec_vdec.cpp:RecordMediaCodecVideoFrame() 中对 srcFormat.width/height 的逐帧更新。这消除了解码线程与录制线程之间的数据竞争(旧代码中解码线程写 srcFormat,录制线程读 srcFormat,无同步机制),是正确的修复。但 srcFormat 仍在 InitRecordOutputResolution() 中从帧队列首帧设置,并用于 AddStream() 配置编码器尺寸。修改后 srcFormat 的语义从"当前帧格式"变为"初始帧格式",且不再反映分辨率动态变化。虽然当前录制流程中编码器尺寸固定不变、UpdateRecordVideoSwsContext 已处理源分辨率变化,但建议在 InitRecordOutputResolution() 处添加注释说明此语义变更,避免后续维护者误解。
● 影响:一般。语义不清可能导致后续维护者在需要动态分辨率场景下错误地依赖 srcFormat。
● 建议:在 InitRecordOutputResolution() 函数处添加注释说明 srcFormat 仅用于编码器初始化,不在录制过程中更新:
// srcFormat is only used for encoder initialization in AddStream().
// It is NOT updated from frames during recording.
// For sws output dimensions, use video_st.st->codec->width/height instead.
static void InitRecordOutputResolution(RecordWriteData *recordWriteData)


代码门禁通过
您可以通过如下链接查看门禁报告:http://dcp.openharmony.cn/workbench/cicd/detail/6a44825b64650f998bc12e83/runlist
静态检查:
| # | check type | result | report |
|---|---|---|---|
| 1 | codeCheck | pass | >>> |
编译测试:
| # | Device | build result | package |
|---|---|---|---|
| 1 | applicationTPC | success | >>> |


https://gitcode.com/CPF-ApplicationTPC/ohos_ijkplayer/issues/377
修复分辨率切换时录制视频操作概率崩溃