summaryrefslogtreecommitdiffstats
path: root/mm-video-v4l2/vidc/vdec
diff options
context:
space:
mode:
authorApurupa Pattapu <apurupa@codeaurora.org>2015-05-13 16:46:13 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-06-30 05:56:16 -0700
commitd1c77a7a70d6bfce696947038ab0367b70562ab5 (patch)
tree41ea42141582dedd28277078911973e64e873411 /mm-video-v4l2/vidc/vdec
parentdeb5ff19f08dc54726a375cf5fa359ad65631d56 (diff)
downloadandroid_hardware_qcom_media-d1c77a7a70d6bfce696947038ab0367b70562ab5.tar.gz
android_hardware_qcom_media-d1c77a7a70d6bfce696947038ab0367b70562ab5.tar.bz2
android_hardware_qcom_media-d1c77a7a70d6bfce696947038ab0367b70562ab5.zip
mm-video-v4l2: Increase maximum buffer count limit to 64
- Client can allocate more than 32 buffers on input/output ports with this change - Use the same max limit in color converter - Check for max limit in set_parameter Change-Id: I821c3712f234992e4f0df8e907cad103cfd367da
Diffstat (limited to 'mm-video-v4l2/vidc/vdec')
-rw-r--r--mm-video-v4l2/vidc/vdec/inc/omx_vdec.h6
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp7
2 files changed, 10 insertions, 3 deletions
diff --git a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
index f806361b..06522424 100644
--- a/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
+++ b/mm-video-v4l2/vidc/vdec/inc/omx_vdec.h
@@ -181,7 +181,7 @@ class VideoHeap : public MemoryHeapBase
#define DESC_BUFFER_SIZE (8192 * 16)
#ifdef _ANDROID_
-#define MAX_NUM_INPUT_OUTPUT_BUFFERS 32
+#define MAX_NUM_INPUT_OUTPUT_BUFFERS 64
#endif
#define OMX_FRAMEINFO_EXTRADATA 0x00010000
@@ -856,7 +856,7 @@ class omx_vdec: public qc_omx_component
//Output port Populated
OMX_BOOL m_out_bPopulated;
// encapsulate the waiting states.
- unsigned int m_flags;
+ uint64_t m_flags;
#ifdef _ANDROID_
// Heap pointer to frame buffers
@@ -1028,7 +1028,7 @@ class omx_vdec: public qc_omx_component
OMX_ERRORTYPE free_output_buffer(OMX_BUFFERHEADERTYPE *bufferHdr);
bool is_color_conversion_enabled() {return enabled;}
private:
-#define MAX_COUNT 32
+#define MAX_COUNT MAX_NUM_INPUT_OUTPUT_BUFFERS
omx_vdec *omx;
bool enabled;
OMX_COLOR_FORMATTYPE ColorFormat;
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 a8a971a0..79c428c7 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
@@ -3449,6 +3449,13 @@ OMX_ERRORTYPE omx_vdec::set_parameter(OMX_IN OMX_HANDLETYPE hComp,
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamPortDefinition H= %d, W = %d",
(int)portDefn->format.video.nFrameHeight,
(int)portDefn->format.video.nFrameWidth);
+
+ if (portDefn->nBufferCountActual >= MAX_NUM_INPUT_OUTPUT_BUFFERS) {
+ DEBUG_PRINT_ERROR("ERROR: Buffers requested exceeds max limit %d",
+ portDefn->nBufferCountActual);
+ eRet = OMX_ErrorBadParameter;
+ break;
+ }
if (OMX_DirOutput == portDefn->eDir) {
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamPortDefinition OP port");
bool port_format_changed = false;