|
@@ -342,8 +342,16 @@ static void s5p_mfc_handle_frame(struct s5p_mfc_ctx *ctx,
|
|
/* All frames remaining in the buffer have been extracted */
|
|
/* All frames remaining in the buffer have been extracted */
|
|
if (dst_frame_status == S5P_FIMV_DEC_STATUS_DECODING_EMPTY) {
|
|
if (dst_frame_status == S5P_FIMV_DEC_STATUS_DECODING_EMPTY) {
|
|
if (ctx->state == MFCINST_RES_CHANGE_FLUSH) {
|
|
if (ctx->state == MFCINST_RES_CHANGE_FLUSH) {
|
|
|
|
+ static const struct v4l2_event ev_src_ch = {
|
|
|
|
+ .type = V4L2_EVENT_SOURCE_CHANGE,
|
|
|
|
+ .u.src_change.changes =
|
|
|
|
+ V4L2_EVENT_SRC_CH_RESOLUTION,
|
|
|
|
+ };
|
|
|
|
+
|
|
s5p_mfc_handle_frame_all_extracted(ctx);
|
|
s5p_mfc_handle_frame_all_extracted(ctx);
|
|
ctx->state = MFCINST_RES_CHANGE_END;
|
|
ctx->state = MFCINST_RES_CHANGE_END;
|
|
|
|
+ v4l2_event_queue_fh(&ctx->fh, &ev_src_ch);
|
|
|
|
+
|
|
goto leave_handle_frame;
|
|
goto leave_handle_frame;
|
|
} else {
|
|
} else {
|
|
s5p_mfc_handle_frame_all_extracted(ctx);
|
|
s5p_mfc_handle_frame_all_extracted(ctx);
|