int ysSource::read_frame_data(int fdin, y4m_frame_info_t *frameinfo, uint8_t **frame) { switch (_fake_progressive) { case FAKE_NO_FAKE: return y4m_read_frame_data(fdin, _stream.streaminfo(), frameinfo, frame); case FAKE_TOP_ONLY: return y4m_read_fields_data(fdin, _real_stream.streaminfo(), frameinfo, frame, _fake_field); case FAKE_BOT_ONLY: return y4m_read_fields_data(fdin, _real_stream.streaminfo(), frameinfo, _fake_field, frame); } return -1; /*????? */ }
int y4m_read_fields(int fd, const y4m_stream_info_t *si, y4m_frame_info_t *fi, uint8_t * const *upper_field, uint8_t * const *lower_field) { int err; /* Read frame header */ if ((err = y4m_read_frame_header(fd, si, fi)) != Y4M_OK) return err; /* Read data */ return y4m_read_fields_data(fd, si, fi, upper_field, lower_field); }
// Should probably just remove this... int ysSource::read_frame_or_fields(int fdin, y4m_frame_info_t *frameinfo, uint8_t **frame, uint8_t **upper, uint8_t **lower) { int err; err = y4m_read_frame_header(fdin, _stream.streaminfo(), frameinfo); if (err != Y4M_OK) return err; mjpeg_info("F-or-F: %d %d", y4m_fi_get_temporal(frameinfo), y4m_fi_get_spatial(frameinfo)); /* XXXXXX what about ip/pi/420 issues? XXXXXXX */ int sampling = y4m_fi_get_temporal(frameinfo); if (sampling == Y4M_SAMPLING_PROGRESSIVE) return y4m_read_frame_data(fdin, _stream.streaminfo(), frameinfo, frame); else /* == Y4M_SAMPLING_INTERLACED */ return y4m_read_fields_data(fdin, _stream.streaminfo(), frameinfo, upper, lower); }
int ysSource::read_fields_data(int fdin, y4m_frame_info_t *frameinfo, uint8_t **topfield, uint8_t **bottomfield) { return y4m_read_fields_data(fdin, _stream.streaminfo(), frameinfo, topfield, bottomfield); }