使用directdraw显示YUV数据时的线程数量

chen43030 2013-07-06 03:22:25
分只有这么多了,希望能得到各位的指导,谢谢!
我将一个视频解码的sdk封装为一个OCX控件,在OCX控件中将解码得到的YUV420数据用directdraw显示,然后另外写了一个MFC程序来调这个OCX控件,发现在显示的时候,除了主线程和我自己创建的一个线程,自己创建的线程用来从队列里取数据,然后调用封装的directdraw函数来显示,通过任务管理器看该进程,发现有3个线程,为什么会有3个线程呢?将该程序拿到一个笔记本电脑上试,发现竟然有5个线程;为了查找问题,我专门写了一个win32程序,在win32程序中起一个子线程读取YUV文件然后交给directdraw显示,显示部分的代码和OCX中的一样,运行该win32程序,出现了更奇怪的问题,测试了5台机器,有两台(win7 x64和xp x86)的线程数为2个,有两台(win7 x86和win7 x64)的线程数为3个,而另一个笔记本(win7 x86)的线程数竟然为5个,因为OCX空间要给另外的程序调用,有可能会开二三十个窗口,这样的线程数就太多了,线程间的切换就会耗费CPU太多的时间,必须要优化,是不是和显卡的驱动有关系呢?谁能告诉我这是为什么呢?
...全文
133 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵狗 2013-07-07
  • 打赏
  • 举报
回复
应该是视频解码本身产生的线程,需要跟踪到最底层的实现。
chen43030 2013-07-07
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
你的解码库里面的代码会不会开了线程... 在调试器里面对 CreateThread 这个 API 下断点, 看看谁在调用它开线程吧.
已经排除了解码库中的线程,所以为了验证,特地的写了win3程序,另外在线程里设断点后,从调试--线程里看到另外三个线程都无法跟踪的,应该是系统的线程。
图灵狗 2013-07-07
  • 打赏
  • 举报
回复
可以先把所有的可能性列举出来,然后一一讨论。
引用 4 楼 chen43030 的回复:
[quote=引用 3 楼 turingo 的回复:] 应该是视频解码本身产生的线程,需要跟踪到最底层的实现。
问题后面写的win32程序专门直接读取yuv文件,根本不需要解码的,用directdraw做显示,不同的机器,线程数任然不一样![/quote]
chen43030 2013-07-07
  • 打赏
  • 举报
回复
引用 3 楼 turingo 的回复:
应该是视频解码本身产生的线程,需要跟踪到最底层的实现。
问题后面写的win32程序专门直接读取yuv文件,根本不需要解码的,用directdraw做显示,不同的机器,线程数任然不一样!
www_adintr_com 2013-07-06
  • 打赏
  • 举报
回复
你的解码库里面的代码会不会开了线程... 在调试器里面对 CreateThread 这个 API 下断点, 看看谁在调用它开线程吧.
代码下载地址: https://pan.quark.cn/s/d56c0ac7d9f6 交流群 telegram: https://t.me/autosymlink_channel 文档 https://.com/shenxianmq/Auto_Symlink/wiki Auto_Symlink 小白牙整理 项目简介 是一个自动化工具,专门设计用于管理通过 CloudDrive2/Alist 挂载到本地的网盘。 它能够创建软链接,使得像 Emby/Jellyfin/Plex 这样的媒体服务器能够更容易地刮削和读取内容,同减少对网盘的频繁访问。 主要特性: 实监控: 需要CloudDrive2的会员功能文件通知,监控指定目录,自动进行必要的更新和管理。 自动化处理: 创建与更新软链接/strm文件,自动复制与更新元数据。 清理功能: 清空无效文件夹和软链接,保持本地云端一致性。 转存监控: 在常用工具中,自动监控指定文件夹,转移到目标文件夹,并删除源文件 媒体库通知: 支持Emby/Plex通知,当检测到新视频的候,会自动通知Emby/Plex扫描该视频,极大加块扫库速度 封面制作: 自动生成精美的Emby媒体库封面 Web 界面操作: 提供一个简洁易用的Web界面,用于查看日志、编辑配置和监控系统状态。 这使得用户能够更方便地管理和调整 Auto_Symlink 的运行。 更多功能可以去常用工具中自行发掘. -- 安装和使用 直接运行 Python 文件: - 在首次运行后, 文件夹中会生成 文件。 根据文件中的注释进行配置。 - 配置完成后,使用命令 运行。 - 在 Windows 系统中,需要以管理员模式运行。 Docker 运行: 使用以下命令运行 Dock...

65,212

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧