Commit 22e46959 authored by Víctor Paesa's avatar Víctor Paesa Committed by Guillaume Poirier

Add sws_getCachedContext(), which checks if context is valid or reallocs a new one instead.

Patch by Victor Paesa <wzrlpy@arsystel.com>
Original thread:
Date: Aug 31, 2006 7:15 PM
Subject: [Ffmpeg-devel] [PATCH] Add sws_getCachedContext() to swscale library

Originally committed as revision 19667 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
parent d6789842
......@@ -2754,3 +2754,37 @@ void sws_freeContext(SwsContext *c){
av_free(c);
}
/**
* Checks if context is valid or reallocs a new one instead.
* If context is NULL, just calls sws_getContext() to get a new one.
* Otherwise, checks if the parameters are the same already saved in context.
* If that is the case, returns the current context.
* Otherwise, frees context and gets a new one.
*
* Be warned that srcFilter, dstFilter are not checked, they are
* asumed to remain valid.
*/
struct SwsContext *sws_getCachedContext(struct SwsContext *context,
int srcW, int srcH, int srcFormat,
int dstW, int dstH, int dstFormat, int flags,
SwsFilter *srcFilter, SwsFilter *dstFilter, double *param)
{
if (context != NULL) {
if ((context->srcW != srcW) || (context->srcH != srcH) ||
(context->srcFormat != srcFormat) ||
(context->dstW != dstW) || (context->dstH != dstH) ||
(context->dstFormat != dstFormat) || (context->flags != flags) ||
(context->param != param))
{
sws_freeContext(context);
context = NULL;
}
}
if (context == NULL) {
return sws_getContext(srcW, srcH, srcFormat,
dstW, dstH, dstFormat, flags,
srcFilter, dstFilter, param);
}
return context;
}
......@@ -135,6 +135,11 @@ SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur,
int verbose);
void sws_freeFilter(SwsFilter *filter);
struct SwsContext *sws_getCachedContext(struct SwsContext *context,
int srcW, int srcH, int srcFormat,
int dstW, int dstH, int dstFormat, int flags,
SwsFilter *srcFilter, SwsFilter *dstFilter, double *param);
#ifdef __cplusplus
}
#endif
......
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