mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
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
This commit is contained in:
parent
d67898427b
commit
22e4695905
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user