webrtc taskqueue 应用1

2022-07-14  本文已影响0人  Ed_Lannister

申明queue和工厂成员

    static std::unique_ptr<rtc::TaskQueue> task_queue1_;
    static std::unique_ptr<rtc::TaskQueue> task_queue2_;
    static webrtc::TaskQueueFactory * task_queue_factory_;

初始化工厂和队列

        //get default queue factory
        std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_default_ = webrtc::CreateDefaultTaskQueueFactory();
        task_queue_factory_ = task_queue_factory_default_.get();
        //set up task queue
        RTC_CHECK(task_queue_factory_);
        if (!task_queue1_) {
            RTC_LOG(LS_INFO) << "Webrtc CreateTaskQueue";
            task_queue1_ =
                    std::make_unique<rtc::TaskQueue>(task_queue_factory_->CreateTaskQueue(
                            "convert1_thread", webrtc::TaskQueueFactory::Priority::HIGH));
        }

posttask

        if (task_queue1_ && task_queue2_) {
            RTC_LOG(LS_INFO) << "Webrtcoom task_queue1_ and task_queue2_ !=null";
            ((frameCount%2 ==0) ? task_queue1_:task_queue2_)->PostDelayedTask(webrtc::ToQueuedTask([outBuffer]() {
                NativeScreenShare::onFrameCallback(outBuffer, outBuffer->getWidth(),
                                                   outBuffer->getHeight(), outBuffer->getStride());
            }), 0);

析构的时候重置队列

task_queue1_.reset();
上一篇 下一篇

猜你喜欢

热点阅读