diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2015-08-08 12:36:49 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-08-08 13:08:16 +0200 |
commit | c382d9e8cbee7635755a559fcd03834aa3daa3a7 (patch) | |
tree | 68382669e37db819f49fff1bd95a0843c796a015 | |
parent | 7e9cd99627099f6d0b3cc34717fef48e555445ae (diff) | |
download | ffmpeg-c382d9e8cbee7635755a559fcd03834aa3daa3a7.tar.gz |
swscale: Add sws_alloc_set_opts()
This simplifies allocating and initializing swscale contexts with custom options.
The function is internal currently but could be moved into the public header
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libswscale/swscale_internal.h | 11 | ||||
-rw-r--r-- | libswscale/utils.c | 23 |
2 files changed, 30 insertions, 4 deletions
diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 737c179bf7..eeeef2d848 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -890,6 +890,17 @@ void ff_hcscale_fast_mmxext(SwsContext *c, int16_t *dst1, int16_t *dst2, int dstWidth, const uint8_t *src1, const uint8_t *src2, int srcW, int xInc); +/** + * Allocate and return an SwsContext. + * This is like sws_getContext() but does not perform the init step, allowing + * the user to set additional AVOptions. + * + * @see sws_getContext() + */ +struct SwsContext *sws_alloc_set_opts(int srcW, int srcH, enum AVPixelFormat srcFormat, + int dstW, int dstH, enum AVPixelFormat dstFormat, + int flags, const double *param); + static inline void fillPlane16(uint8_t *plane, int stride, int width, int height, int y, int alpha, int bits, const int big_endian) { diff --git a/libswscale/utils.c b/libswscale/utils.c index 565c9043ff..106101ab0b 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -1632,10 +1632,9 @@ fail: // FIXME replace things by appropriate error codes return -1; } -SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, - int dstW, int dstH, enum AVPixelFormat dstFormat, - int flags, SwsFilter *srcFilter, - SwsFilter *dstFilter, const double *param) +SwsContext *sws_alloc_set_opts(int srcW, int srcH, enum AVPixelFormat srcFormat, + int dstW, int dstH, enum AVPixelFormat dstFormat, + int flags, const double *param) { SwsContext *c; @@ -1655,6 +1654,22 @@ SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, c->param[1] = param[1]; } + return c; +} + +SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, + int dstW, int dstH, enum AVPixelFormat dstFormat, + int flags, SwsFilter *srcFilter, + SwsFilter *dstFilter, const double *param) +{ + SwsContext *c; + + c = sws_alloc_set_opts(srcW, srcH, srcFormat, + dstW, dstH, dstFormat, + flags, param); + if (!c) + return NULL; + if (sws_init_context(c, srcFilter, dstFilter) < 0) { sws_freeContext(c); return NULL; |