static void fix_gpu_converted_alignment(struct obs_core_video *video, struct video_data *frame, int cur_texture) { struct source_frame *new_frame = &video->convert_frames[cur_texture]; uint32_t src_linesize = frame->linesize[0]; uint32_t dst_linesize = video->output_width * 4; uint32_t src_pos = 0; for (size_t i = 0; i < 3; i++) { if (video->plane_linewidth[i] == 0) break; src_pos = make_aligned_linesize_offset(video->plane_offsets[i], dst_linesize, src_linesize); copy_dealign(new_frame->data[i], 0, dst_linesize, frame->data[0], src_pos, src_linesize, video->plane_sizes[i]); } /* replace with cached frames */ for (size_t i = 0; i < MAX_AV_PLANES; i++) { frame->data[i] = new_frame->data[i]; frame->linesize[i] = new_frame->linesize[i]; } }
static void fix_gpu_converted_alignment(struct obs_core_video *video, struct video_frame *output, const struct video_data *input) { uint32_t src_linesize = input->linesize[0]; uint32_t dst_linesize = output->linesize[0] * 4; uint32_t src_pos = 0; for (size_t i = 0; i < 3; i++) { if (video->plane_linewidth[i] == 0) break; src_pos = make_aligned_linesize_offset(video->plane_offsets[i], dst_linesize, src_linesize); copy_dealign(output->data[i], 0, dst_linesize, input->data[0], src_pos, src_linesize, video->plane_sizes[i]); } }