mirror of
https://github.com/mpv-player/mpv
synced 2025-02-07 07:31:48 +00: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 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19667 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
90d3c0b310
commit
268a7af2f4
@ -2754,3 +2754,37 @@ void sws_freeContext(SwsContext *c){
|
|||||||
av_free(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);
|
int verbose);
|
||||||
void sws_freeFilter(SwsFilter *filter);
|
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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user