63 AVFramePointer newFrame()
noexcept;
65 void enqueue_decoding_error(AVFrame* f);
66 void enqueue(AVFrame* f);
67 AVFrame* dequeue()
noexcept;
68 AVFrame* dequeue_one()
noexcept;
69 AVFrame* discard_and_dequeue()
noexcept;
70 AVFrame* discard_and_dequeue_one()
noexcept;
72 void set_discard_frame(AVFrame*);
73 void release(AVFrame* frame)
noexcept;
76 std::size_t size()
const noexcept {
return available.size_approx(); }
79 ossia::mpmc_queue<AVFrame*> available;
80 ossia::mpmc_queue<AVFrame*> released;
82 std::vector<AVFrame*> m_decodeThreadFrameBuffer;
83 std::atomic<AVFrame*> m_discardUntil{};