Possible multimedia api regression with decode interlace source

Hi,
Please apply this patch and check again:

diff --git a/multimedia_api/ll_samples/samples/00_video_decode/video_decode_main.cpp b/multimedia_api/ll_samples/samples/00_video_decode/video_decode_main.cpp
index 8bb14a9..f239996 100644
--- a/multimedia_api/ll_samples/samples/00_video_decode/video_decode_main.cpp
+++ b/multimedia_api/ll_samples/samples/00_video_decode/video_decode_main.cpp
@@ -992,6 +992,8 @@ dec_capture_loop_fcn(void *arg)
     NvVideoDecoder *dec = ctx->dec;
     struct v4l2_event ev;
     int ret;
+    NvBufferSession session;
+    session = NvBufferSessionCreate();
 
     cout << "Starting decoder capture loop thread" << endl;
     /* Need to wait for the first Resolution change event, so that
@@ -1133,6 +1135,8 @@ dec_capture_loop_fcn(void *arg)
                     break;
                 }
 #else
+                NvBufferSyncObj syncobj;
+
                 /* Clip & Stitch can be done by adjusting rectangle. */
                 NvBufferRect src_rect, dest_rect;
                 src_rect.top = 0;
@@ -1152,16 +1156,21 @@ dec_capture_loop_fcn(void *arg)
                 transform_params.transform_filter = NvBufferTransform_Filter_Nearest;
                 transform_params.src_rect = src_rect;
                 transform_params.dst_rect = dest_rect;
+                transform_params.session = session;
+
+                memset(&syncobj,0,sizeof(NvBufferSyncObj));
+                syncobj.use_outsyncobj = 1;
 
                 if(ctx->capture_plane_mem_type == V4L2_MEMORY_DMABUF)
                     dec_buffer->planes[0].fd = ctx->dmabuff_fd[v4l2_buf.index];
                 /* Perform Blocklinear to PitchLinear conversion. */
-                ret = NvBufferTransform(dec_buffer->planes[0].fd, ctx->dst_dma_fd, &transform_params);
+                ret = NvBufferTransformAsync(dec_buffer->planes[0].fd, ctx->dst_dma_fd, &transform_params, &syncobj);
                 if (ret == -1)
                 {
                     cerr << "Transform failed" << endl;
                     break;
                 }
+                NvBufferSyncObjWait(&syncobj.outsyncobj, NVBUFFER_SYNCPOINT_WAIT_INFINITE);
 
                 /* Write raw video frame to file. */
                 if (!ctx->stats && ctx->out_file)
@@ -1220,6 +1229,7 @@ dec_capture_loop_fcn(void *arg)
         }
     }
 #endif
+    NvBufferSessionDestroy(session);
     cout << "Exiting decoder capture loop thread" << endl;
     return NULL;
 }
@@ -1734,7 +1744,7 @@ static bool decoder_proc_blocking(context_t &ctx, bool eos, uint32_t current_fil
                 memcpy(&temp_buf,&v4l2_buf,sizeof(v4l2_buffer));
             }
         }
-
+usleep(40000);
         /* enqueue a buffer for output plane. */
         ret = ctx.dec->output_plane.qBuffer(v4l2_buf, NULL);
         if (ret < 0)

In the patch, it creates NvBufferSession and calls NvBufferTransformAsync(). Please try this method.