DeinterlacedFrame.cc 1014 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include "DeinterlacedFrame.hh"
  2. #include <cassert>
  3. namespace openmsx {
  4. DeinterlacedFrame::DeinterlacedFrame(const PixelFormat& format)
  5. : FrameSource(format)
  6. {
  7. }
  8. void DeinterlacedFrame::init(FrameSource* evenField, FrameSource* oddField)
  9. {
  10. FrameSource::init(FIELD_NONINTERLACED);
  11. // TODO: I think these assertions make sense, but we cannot currently
  12. // guarantee them. See TODO in PostProcessor::paint.
  13. //assert(evenField->getField() == FrameSource::FIELD_EVEN);
  14. //assert(oddField->getField() == FrameSource::FIELD_ODD);
  15. assert(evenField->getHeight() == oddField->getHeight());
  16. setHeight(2 * evenField->getHeight());
  17. fields[0] = evenField;
  18. fields[1] = oddField;
  19. }
  20. unsigned DeinterlacedFrame::getLineWidth(unsigned line) const
  21. {
  22. return fields[line & 1]->getLineWidth(line >> 1);
  23. }
  24. const void* DeinterlacedFrame::getLineInfo(
  25. unsigned line, unsigned& width, void* buf, unsigned bufWidth) const
  26. {
  27. return fields[line & 1]->getLineInfo(line >> 1, width, buf, bufWidth);
  28. }
  29. } // namespace openmsx