mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-18 20:25:25 +00:00
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
This commit is contained in:
parent
a53019068d
commit
762eb97092
2 changed files with 12 additions and 1 deletions
|
@ -56,6 +56,10 @@ gst_msdk_frame_alloc (mfxHDL pthis, mfxFrameAllocRequest * req,
|
||||||
GstMsdkAllocResponse *cached =
|
GstMsdkAllocResponse *cached =
|
||||||
gst_msdk_context_get_cached_alloc_responses_by_request (context, req);
|
gst_msdk_context_get_cached_alloc_responses_by_request (context, req);
|
||||||
if (cached) {
|
if (cached) {
|
||||||
|
/* check if enough frames were allocated */
|
||||||
|
if (req->NumFrameSuggested > cached->response->NumFrameActual)
|
||||||
|
return MFX_ERR_MEMORY_ALLOC;
|
||||||
|
|
||||||
*resp = *cached->response;
|
*resp = *cached->response;
|
||||||
return MFX_ERR_NONE;
|
return MFX_ERR_NONE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -354,7 +354,14 @@ _find_request (gconstpointer resp, gconstpointer req)
|
||||||
GstMsdkAllocResponse *cached_resp = (GstMsdkAllocResponse *) resp;
|
GstMsdkAllocResponse *cached_resp = (GstMsdkAllocResponse *) resp;
|
||||||
mfxFrameAllocRequest *_req = (mfxFrameAllocRequest *) req;
|
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 *
|
GstMsdkAllocResponse *
|
||||||
|
|
Loading…
Reference in a new issue