- ycbcr_input->change_ycbcr_format(ycbcr_format);
- ycbcr_input->set_width(frame->width);
- ycbcr_input->set_height(frame->height);
- ycbcr_input->set_pixel_data(0, frame->y.get());
- ycbcr_input->set_pixel_data(1, frame->cb.get());
- ycbcr_input->set_pixel_data(2, frame->cr.get());
- ycbcr_input->set_pitch(0, frame->pitch_y);
- ycbcr_input->set_pitch(1, frame->pitch_chroma);
- ycbcr_input->set_pitch(2, frame->pitch_chroma);
+
+ if (frame->is_semiplanar) {
+ ycbcr_semiplanar_input->change_ycbcr_format(ycbcr_format);
+ ycbcr_semiplanar_input->set_width(frame->width);
+ ycbcr_semiplanar_input->set_height(frame->height);
+ ycbcr_semiplanar_input->set_pixel_data(0, frame->y.get());
+ ycbcr_semiplanar_input->set_pixel_data(1, frame->cbcr.get());
+ ycbcr_semiplanar_input->set_pitch(0, frame->pitch_y);
+ ycbcr_semiplanar_input->set_pitch(1, frame->pitch_chroma);
+ } else {
+ ycbcr_planar_input->change_ycbcr_format(ycbcr_format);
+ ycbcr_planar_input->set_width(frame->width);
+ ycbcr_planar_input->set_height(frame->height);
+ ycbcr_planar_input->set_pixel_data(0, frame->y.get());
+ ycbcr_planar_input->set_pixel_data(1, frame->cb.get());
+ ycbcr_planar_input->set_pixel_data(2, frame->cr.get());
+ ycbcr_planar_input->set_pitch(0, frame->pitch_y);
+ ycbcr_planar_input->set_pitch(1, frame->pitch_chroma);
+ ycbcr_planar_input->set_pitch(2, frame->pitch_chroma);
+ }