diff options
author | prasanth kamuju <prasanth.kamuju@linaro.org> | 2015-01-22 17:44:08 +0530 |
---|---|---|
committer | prasanth kamuju <prasanth.kamuju@linaro.org> | 2015-01-22 17:45:07 +0530 |
commit | f9902212903f7b801a5f7a2ac73b641078f46d60 (patch) | |
tree | e133b0615e2c0d5b203e6b3361f6bf29fdd75e0a | |
parent | 64bcac048b532413760de296296a1b4abae59e32 (diff) |
Increase the actual buffer count
The actual buffer count should be less than max/2
for smooth playback of 1080p videos,if it is less
set the actual buffer count = max/2.
-rw-r--r-- | src/gstqcvideodec.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/gstqcvideodec.c b/src/gstqcvideodec.c index 430d76e..d1a04a1 100644 --- a/src/gstqcvideodec.c +++ b/src/gstqcvideodec.c @@ -1150,7 +1150,40 @@ int allocate_reconfig_buff(Gstqcvideodec *dec) decode_context->output_buffer.alignment,\ decode_context->output_buffer.buf_poolid,\ decode_context->output_buffer.meta_buffer_size); + if(decode_context->output_buffer.actualcount < decode_context->output_buffer.maxcount/2) + { + + decode_context->output_buffer.actualcount = (decode_context->output_buffer.maxcount/2);//decode_context->output_buffer.actualcount + decode_context->output_buffer.mincount; + decode_context->output_buffer.buffer_type = VDEC_BUFFER_TYPE_OUTPUT; + ioctl_msg.in = &decode_context->output_buffer; + ioctl_msg.out = NULL; + if (ioctl (dec->video_driver_fd,VDEC_IOCTL_SET_BUFFER_REQ, + (void*)&ioctl_msg) < 0) + { + GST_ERROR("\n Set Buffer Requirements Failed"); + return FALSE; + } + decode_context->output_buffer.buffer_type = VDEC_BUFFER_TYPE_OUTPUT; + ioctl_msg.in = NULL; + ioctl_msg.out = &decode_context->output_buffer; + + if (ioctl (decode_context->video_driver_fd,VDEC_IOCTL_GET_BUFFER_REQ, + (void*)&ioctl_msg) < 0) + { + GST_ERROR("\n 3rd time Requesting for output buffer requirements failed"); + return -1; + } + GST_DEBUG("\n 3rd time output_buffer Size=%d min count =%d actual count = %d, maxcount = %d,alignment = %d,buf_poolid= %d,meta_buffer_size=%d\n\n",\ + decode_context->output_buffer.buffer_size,\ + decode_context->output_buffer.mincount,\ + decode_context->output_buffer.actualcount,\ + decode_context->output_buffer.maxcount,\ + decode_context->output_buffer.alignment,\ + decode_context->output_buffer.buf_poolid,\ + decode_context->output_buffer.meta_buffer_size); + + } if(decode_context->decoder_format == VDEC_CODECTYPE_H264) vdec_alloc_h264_mv(decode_context); |