示例#1
0
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();
}
示例#2
0
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 = &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;
}