OXYGENHUB
◆ main openmsx / src / video / DeinterlacedFrame.cc
936 B · C++ · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
#include "DeinterlacedFrame.hh"
2
3
#include <cassert>
4
5
namespace openmsx {
6
7
void DeinterlacedFrame::init(FrameSource* evenField, FrameSource* oddField)
8
{
9
	FrameSource::init(FieldType::NONINTERLACED);
10
	// TODO: I think these assertions make sense, but we cannot currently
11
	//       guarantee them. See TODO in PostProcessor::paint.
12
	//assert(evenField->getField() == FrameSource::FieldType::EVEN);
13
	//assert(oddField->getField() == FrameSource::FieldType::ODD);
14
	assert(evenField->getHeight() == oddField->getHeight());
15
	setHeight(2 * evenField->getHeight());
16
	fields[0] = evenField;
17
	fields[1] = oddField;
18
}
19
20
unsigned DeinterlacedFrame::getLineWidth(unsigned line) const
21
{
22
	return fields[line & 1]->getLineWidth(line >> 1);
23
}
24
25
std::span<const FrameSource::Pixel> DeinterlacedFrame::getUnscaledLine(
26
	unsigned line, std::span<Pixel> helpBuf) const
27
{
28
	return fields[line & 1]->getUnscaledLine(line >> 1, helpBuf);
29
}
30
31
} // namespace openmsx