webrtc taskqueue 应用1

申明queue和工厂成员

    static std::unique_ptr task_queue1_;
    static std::unique_ptr task_queue2_;
    static webrtc::TaskQueueFactory * task_queue_factory_;

初始化工厂和队列

        //get default queue factory
        std::unique_ptr 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(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();

你可能感兴趣的:(webrtc taskqueue 应用1)