zoukankan      html  css  js  c++  java
  • 音视频技术应用(12) 测试sleep和wait的精确度达到准确控制帧率的目的

     测试几种sleep的方式:

    #include <iostream>
    #include <ctime>
    #include <thread>
    #include <windows.h>
    
    using namespace std;
    
    void MSleep(unsigned int ms)
    {
        auto beg = clock();
        for (int i = 0; i < ms; i++)
        {
            this_thread::sleep_for(1ms);
            if ((clock() - beg) / (CLOCKS_PER_SEC / 1000) >= ms)
                break;
        }
    }
    
    int main()
    {
    
        // ================================ 1. 测试C++11的 sleep 控制帧率 ================================
        //测试c++11的sleep
        //测试 sleep 10毫秒 100fps
        auto beg = clock(); //开始时间 ,cpu跳数
        int fps = 0;        //帧率
        for (;;)
        {
            fps++;
            auto tmp = clock();
            this_thread::sleep_for(10ms);
            //cout << clock() - tmp << " " << flush;
            //1秒钟开始统计 CLOCKS_PER_SEC CPU每秒跳数
            if ((clock() - beg) / (CLOCKS_PER_SEC / 1000) > 1000)  //间隔毫秒数
            {
                cout << "sleep for fps:" << fps << endl;
                break;
            }
        }
    
        // =========================== 2. 测试 Windows wait 事件超时控制 帧率 =======================================
        auto handle = CreateEvent(NULL, FALSE, FALSE, NULL);
        fps = 0;
        beg = clock();
        for (;;)
        {
            fps++;
            WaitForSingleObject(handle, 10);// 等待超时
            if ((clock() - beg) / (CLOCKS_PER_SEC / 1000) > 1000)  //间隔毫秒数
            {
                cout << "wait fps:" << fps << endl;
                break;
            }
        }
    
        // =========================== 3. 测试使用MSleep()函数 控制 帧率 =======================================
        fps = 0;
        beg = clock();
        for (;;)
        {
            fps++;
            MSleep(10);
            if ((clock() - beg) / (CLOCKS_PER_SEC / 1000) > 1000)  //间隔毫秒数
            {
                cout << "MSleep fps:" << fps << endl;
                break;
            }
        }
    
        getchar();
        return 0;
    }

    运行结果:

    sleep for fps:93
    wait fps:96
    MSleep fps:97

  • 相关阅读:
    typro常用快捷键
    02: kali-linux破解密码运行脚本并隐藏进程
    01:kali安装使用
    01: 模拟挖矿黑客攻击过程
    12: docker-compose部署django+nginx+uwsgi+celery+redis+mysql
    11: Django + gunicorn + Nginx 的生产环境部署
    博客说明
    计算机中原码,反码,补码之间的关系
    修改linux下yum镜像源为国内镜像
    webp图片技术调研最终结论(完全真实数据可自行分析)
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/15605178.html
Copyright © 2011-2022 走看看