mm-video-v4l2: venc: fix a mutex lock unrelease issue

When dynamically change encoder configuration, if failed,
it will directly return without release mutex lock.
Modify to always release mutex lock in error cases.

Change-Id: I09978dd70789964a860620952ef05a3b6f2fc682
CRs-Fixed: 2431959
diff --git a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
index b739e05..70849fa 100644
--- a/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
+++ b/mm-video-v4l2/vidc/venc/src/video_encoder_device_v4l2.cpp
@@ -558,6 +558,7 @@
 {
     std::list<dynamicConfig>::iterator iter;
     OMX_TICKS timestamp = bufferHdr->nTimeStamp;
+    bool ret = false;
 
     pthread_mutex_lock(&m_configlock);
     iter = m_configlist.begin();
@@ -571,52 +572,54 @@
             case OMX_QcomIndexConfigVideoLTRUse:
                 DEBUG_PRINT_LOW("handle_dynamic_config: OMX_QcomIndexConfigVideoLTRUse");
                 if (!venc_config_useLTR(&iter->config_data.useltr))
-                    return false;
+                    goto bailout;
                 break;
             case OMX_QcomIndexConfigVideoLTRMark:
                 DEBUG_PRINT_LOW("handle_dynamic_config: OMX_QcomIndexConfigVideoLTRMark");
                 if (!venc_config_markLTR(&iter->config_data.markltr))
-                    return false;
+                    goto bailout;
                 break;
             case OMX_IndexConfigVideoFramerate:
                 DEBUG_PRINT_LOW("handle_dynamic_config: OMX_IndexConfigVideoFramerate");
                 if (!venc_config_framerate(&iter->config_data.framerate))
-                    return false;
+                    goto bailout;
                 break;
             case OMX_QcomIndexConfigQp:
                 DEBUG_PRINT_LOW("handle_dynamic_config: OMX_QcomIndexConfigQp");
                 if (!venc_config_qp(&iter->config_data.configqp))
-                    return false;
+                    goto bailout;
                 break;
             case QOMX_IndexConfigVideoIntraperiod:
                 DEBUG_PRINT_LOW("handle_dynamic_config:QOMX_IndexConfigVideoIntraperiod");
                 if (!set_nP_frames(iter->config_data.intraperiod.nPFrames))
-                    return false;
+                    goto bailout;
                 break;
             case OMX_IndexConfigVideoVp8ReferenceFrame:
                 DEBUG_PRINT_LOW("handle_dynamic_config: OMX_IndexConfigVideoVp8ReferenceFrame");
                 if (!venc_config_vp8refframe(&iter->config_data.vp8refframe))
-                    return false;
+                    goto bailout;
                 break;
             case OMX_IndexConfigVideoIntraVOPRefresh:
                 DEBUG_PRINT_LOW("handle_dynamic_config: OMX_IndexConfigVideoIntraVOPRefresh");
                 if (!venc_config_intravoprefresh(&iter->config_data.intravoprefresh))
-                    return false;
+                    goto bailout;
                 break;
             case OMX_IndexConfigVideoBitrate:
                 DEBUG_PRINT_LOW("handle_dynamic_config: OMX_IndexConfigVideoBitrate");
                 if (!venc_config_bitrate(&iter->config_data.bitrate))
-                    return false;
+                    goto bailout;
                 break;
             default:
                 DEBUG_PRINT_ERROR("Unsupported dynamic config type %d with timestamp %lld us", iter->type, iter->timestamp);
-                return false;
+                goto bailout;
         }
         iter = m_configlist.erase(iter);
     }
+    ret = true;
 
+bailout:
     pthread_mutex_unlock(&m_configlock);
-    return true;
+    return ret;
 }
 
 inline int get_yuv_size(unsigned long fmt, int width, int height) {