void VideoRendererItem::present(const VideoFrame &frame) { if (!d->initialized) return; if (d->shader && d->queue.size() < 3) _PostEvent(this, NewFrame, frame); d->mposd->present(false); d->ptsIn = frame.pts(); }
bool SoftwareDeinterlacer::process(const VideoFrame &in, QLinkedList<VideoFrame> &queue) { if (!(in.mpi()->fields & MP_IMGFIELD_INTERLACED)) return 0; if (d->prev != MP_NOPTS_VALUE && ((in.pts() < d->prev) || (in.pts() - d->prev > 0.5))) // reset d->prev = MP_NOPTS_VALUE; d->in = ∈ d->queue = &queue; switch (d->type) { case Mark: d->split(); break; case Graph: d->tryGraph(); break; case PP: d->tryPostProc(); break; default: return 0; } return d->pushed; }