summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2013-03-13 13:23:35 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2013-03-14 12:52:46 +0100
commit9128ba5018242dfae84136a56ff15b7bc6fdca82 (patch)
treefbfba086ed5d4fea48e87d4dffc40c7eb105ddff
parent22dce51dd46f6901ca8615cbbb9538d612a97545 (diff)
downloadgst-omx-9128ba5018242dfae84136a56ff15b7bc6fdca82.tar.gz
omxvideodec: Improve min/max buffer counts handling
-rw-r--r--omx/gstomxvideodec.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
index cd8e9bb..0b0fb69 100644
--- a/omx/gstomxvideodec.c
+++ b/omx/gstomxvideodec.c
@@ -1189,8 +1189,15 @@ gst_omx_video_dec_allocate_output_buffers (GstOMXVideoDec * self)
gst_buffer_pool_config_get_allocator (config, &allocator, NULL);
/* Need at least 2 buffers for anything meaningful */
- min = MAX (MAX (min, port->port_def.nBufferCountMin), 2);
- max = min;
+ min = MAX (MAX (min, port->port_def.nBufferCountMin), 4);
+ if (max == 0) {
+ max = min;
+ } else if (max < port->port_def.nBufferCountMin || max < 2) {
+ /* Can't use pool because can't have enough buffers */
+ gst_caps_replace (&caps, NULL);
+ } else {
+ min = max;
+ }
add_videometa = gst_buffer_pool_config_has_option (config,
GST_BUFFER_POOL_OPTION_VIDEO_META);