c++ - FFmpeg 在我的应用程序中禁用 Window 桌面管理器

标签 c++ ffmpeg directshow aero

我在我的应用程序中使用 DirectShow 和 FFmpeg 渲染视频。 FFmpeg 仅用于解码 MPEG4/Part2 帧(自定义解码器过滤器)。我的应用不播放音频(仅播放视频)。

当我使用 Win+L 锁定我的 PC(Win7 Pro 64 位)然后解锁时,Windows 会给我以下消息:

The color scheme has been changed

The following program has performed an action that requires Windows to temporarily change the color scheme to Windows 7 Basic.

...app name, publisher, pid...

Windows will automatically change the color scheme back to Windows Aero when this program or other programs performing similar actions are no longer running.

我有可能使用另一个在没有 FFmpeg 的情况下开发的自定义解码器过滤器,并且使用它 Windows 不会向我显示此类消息。

我运行 Aero 疑难解答程序时检测到桌面窗口管理器已被禁用。

我的主要问题:为什么解锁后会出现这条消息?

附言我正在使用 ffmpeg mpeg4 解码器,sws_scale 从 RGB24 到 YUV420p。 FFmpeg 仅使用 mpeg4 解码器/编码器构建,其他一切都被禁用。

最佳答案

此问题是由于在协商媒体类型时在位图信息头中提供负高度(自上而下的位图)引起的。 我在我的解码器中将高度更改为正数(自下而上的位图),并且不再触及 Windows 7 的配色方案。

关于c++ - FFmpeg 在我的应用程序中禁用 Window 桌面管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29434021/

相关文章:

android - 如何为 android 构建 libx264 64 位库

ios - FFmpeg 将流保存到 mp3

FFMPEG 将 H265 视频从 10 位转码为 8 位

video - 在 Windows 上枚举所有可用视频编解码器的最佳方法?

C++调试: Terminated with SIGABRT

c++ - 密码 : identify MOV and indirect memory operand

c# - DirectShow - 如何调试引脚连接失败

c# - 是否可以将视频流伪造为在 Skype、Lync 等中可见的虚拟摄像头?

c++ - 如何检测USRP USB类型?

c++ - 如何将适当的 const_iterator 返回到非常量指针的集合?