| 80 | |
| 81 | |
| 82 | void VideoFilterChain::pullFrames(std::unique_ptr<IVideoFilter> &filter, SpscQueue<IAFFrame *> &outFrames) |
| 83 | { |
| 84 | int ret = 0; |
| 85 | std::unique_ptr<IAFFrame> frame = nullptr; |
| 86 | while (true) { |
| 87 | ret = filter->pull(frame, 0); |
| 88 | if (ret >= 0) { |
| 89 | // AF_LOGD("filter %s pull success pts= %lld", filter->getName().c_str(), frame->getInfo().pts); |
| 90 | outFrames.push(frame.release()); |
| 91 | } else if (ret == -EAGAIN) { |
| 92 | // AF_LOGD("filter %s pull EAGAIN", filter->getName().c_str()); |
| 93 | break; |
| 94 | } else { |
| 95 | AF_LOGW("filter %s pull Error = %d ", filter->getName().c_str(), ret); |
| 96 | break; |
| 97 | } |
| 98 | } |
| 99 | } |
| 100 | |
| 101 | void VideoFilterChain::swapFrames(SpscQueue<IAFFrame *> &dstFrames, SpscQueue<IAFFrame *> &srcFrames) |
| 102 | { |