v4l2dec: set I frame mode afte set_fmt [1/1]

PD#SWPL-174619

Problem:
develop only I frame mode

Solution:
aml v4l2 drive request set I frame after VIDIOC_S_FMT.

Verify:
ap222

Change-Id: I1bb8d4db2d35421c200ff8aed0505aa1534a4ec7
Signed-off-by: hanghang.luo <hanghang.luo@amlogic.com>
diff --git a/src/gstamlv4l2videodec.c b/src/gstamlv4l2videodec.c
index 317850e..cb7697f 100644
--- a/src/gstamlv4l2videodec.c
+++ b/src/gstamlv4l2videodec.c
@@ -482,13 +482,6 @@
         gst_aml_v4l2_object_stop(self->v4l2capture);
         self->output_flow = GST_FLOW_OK;
     }
-
-    if ((ret = gst_aml_v4l2_set_I_frame_mode(self->v4l2output)) == FALSE)
-    {
-        GST_ERROR_OBJECT(self, "config I frame mode error");
-        goto done;
-    }
-
     if ((ret = gst_aml_v4l2_set_drm_mode(self->v4l2output)) == FALSE)
     {
         GST_ERROR_OBJECT(self, "config output drm mode error");
@@ -501,7 +494,18 @@
         goto done;
     }
 
-    ret = gst_aml_v4l2_object_set_format(self->v4l2output, state->caps, &error);
+    if (!gst_aml_v4l2_object_set_format(self->v4l2output, state->caps, &error))
+    {
+        GST_ERROR_OBJECT(self, "set format error");
+        goto done;
+    }
+
+    // MUST: aml v4l2 drive request set I frame after VIDIOC_S_FMT.
+    if ((ret = gst_aml_v4l2_set_I_frame_mode(self->v4l2output)) == FALSE)
+    {
+        GST_ERROR_OBJECT(self, "config I frame mode error");
+        goto done;
+    }
 
     gst_caps_replace(&self->probed_srccaps, NULL);
     self->probed_srccaps = gst_aml_v4l2_object_probe_caps(self->v4l2capture,