start_streaming enabled the VPU component if ctx->component_enabled
was not set.
stop_streaming disabled the VPU component if both ports were
disabled. It didn't clear ctx->component_enabled.
If seeking, this meant that the component never got re-enabled,
and buffers never got processed afterwards.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
[sw0312.kim: cherry-pick rpi-5.4.y commit to fix video decoding seek issue]
Ref: https://github.com/raspberrypi/linux/pull/3790
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Change-Id: Ibf27e3ed2dc3d98d64a78b10878d6339d77f8a33
/* If both ports disabled, then disable the component */
- if (!ctx->component->input[0].enabled &&
+ if (ctx->component_enabled &&
+ !ctx->component->input[0].enabled &&
!ctx->component->output[0].enabled) {
ret = vchiq_mmal_component_disable(dev->instance,
ctx->component);
if (ret)
v4l2_err(&ctx->dev->v4l2_dev, "%s: Failed enabling component, ret %d\n",
__func__, ret);
+ ctx->component_enabled = false;
}
if (V4L2_TYPE_IS_OUTPUT(q->type))