[MppBuffer]: Fix block error on Linux

When decoding in internal buffer mode and source is field mode the
decoder need 3 buffer to continue decoding. But mpp_buffer_group_unused
function only return 1 by default.

This patch return correct value considering the buffer limit count and
buffer group mode.

Change-Id: I4331ca026708037f1d9bace090299315d41f4829
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
Herman Chen
2018-05-21 17:17:26 +08:00
parent 038cd1da10
commit 7ebc57b568

View File

@@ -297,7 +297,17 @@ RK_S32 mpp_buffer_group_unused(MppBufferGroup group)
}
MppBufferGroupImpl *p = (MppBufferGroupImpl *)group;
return (p->mode == MPP_BUFFER_INTERNAL ? 1 : p->count_unused);
RK_S32 unused = 0;
if (p->mode == MPP_BUFFER_INTERNAL) {
if (p->limit_count)
unused = p->limit_count - p->count_used;
else
unused = 3; /* NOTE: 3 for 1 decoding 2 deinterlace buffer */
} else
unused = p->count_unused;
return unused;
}
MppBufferMode mpp_buffer_group_mode(MppBufferGroup group)