Commit 762eb970 authored by Hyunjun Ko's avatar Hyunjun Ko Committed by Sreerenj Balachandran

msdk: specify the way to find a proper cached response by request

The current way to find proper response by just comparing request's
value is wrong.  We need to compare the size of a frame and the
number of suggested frames.

Refer to the sample in https://github.com/Intel-Media-SDK/samples.

https://bugzilla.gnome.org/show_bug.cgi?id=793707
parent a5301906
......@@ -56,6 +56,10 @@ gst_msdk_frame_alloc (mfxHDL pthis, mfxFrameAllocRequest * req,
GstMsdkAllocResponse *cached =
gst_msdk_context_get_cached_alloc_responses_by_request (context, req);
if (cached) {
/* check if enough frames were allocated */
if (req->NumFrameSuggested > cached->response->NumFrameActual)
return MFX_ERR_MEMORY_ALLOC;
*resp = *cached->response;
return MFX_ERR_NONE;
}
......
......@@ -354,7 +354,14 @@ _find_request (gconstpointer resp, gconstpointer req)
GstMsdkAllocResponse *cached_resp = (GstMsdkAllocResponse *) resp;
mfxFrameAllocRequest *_req = (mfxFrameAllocRequest *) req;
return cached_resp ? cached_resp->request.Type != _req->Type : -1;
/* Confirm if it's under the size of the cached response */
if (_req->Info.Width <= cached_resp->request.Info.Width &&
_req->Info.Height <= cached_resp->request.Info.Height) {
return _req->Type & cached_resp->
request.Type & MFX_MEMTYPE_FROM_DECODE ? 0 : -1;
}
return -1;
}
GstMsdkAllocResponse *
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment