mm-video-v4l2: vdec: streamoff while freeing first output buffer

Streamoff is being skipped if client sends commands loaded ->
idle -> allocate output buffers -> loaded -> free output buffers ->
get buffer requirements and results in failure. Do streamoff
while client frees the output buffer to resolve the issue.
Do not streamoff when dynamic buffer mode is enabled.
Restricting streamoff if driver flush is inprogress.

Change-Id: Ib0d11397da7597673fb02eca4be0ef87a96d8a4d
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
index 2b31ceb..f0e5cbe 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
@@ -4782,6 +4782,14 @@
                 sizeof (vdec_bufferpayload));
 
         if (!dynamic_buf_mode) {
+            if (streaming[CAPTURE_PORT] &&
+                !(in_reconfig || BITMASK_PRESENT(&m_flags,OMX_COMPONENT_OUTPUT_FLUSH_PENDING))) {
+                if (stream_off(OMX_CORE_OUTPUT_PORT_INDEX)) {
+                    DEBUG_PRINT_ERROR("STREAMOFF Failed");
+                } else {
+                    DEBUG_PRINT_LOW("STREAMOFF Successful");
+                }
+            }
 #ifdef _ANDROID_
             if (m_enable_android_native_buffers) {
                 if (!secure_mode) {