Mercurial > libavcodec.hg
comparison imgresample.c @ 4036:207c22206d53 libavcodec
Implement sws_getCachedContext() in swscale emulation
| author | lucabe |
|---|---|
| date | Tue, 17 Oct 2006 10:26:37 +0000 |
| parents | c8c591fe26f8 |
| children | 93163e2a2398 |
comparison
equal
deleted
inserted
replaced
| 4035:b7f31a32bb30 | 4036:207c22206d53 |
|---|---|
| 672 img_resample_close(ctx->resampling_ctx); | 672 img_resample_close(ctx->resampling_ctx); |
| 673 } else { | 673 } else { |
| 674 av_free(ctx->resampling_ctx); | 674 av_free(ctx->resampling_ctx); |
| 675 } | 675 } |
| 676 av_free(ctx); | 676 av_free(ctx); |
| 677 } | |
| 678 | |
| 679 | |
| 680 /** | |
| 681 * Checks if context is valid or reallocs a new one instead. | |
| 682 * If context is NULL, just calls sws_getContext() to get a new one. | |
| 683 * Otherwise, checks if the parameters are the same already saved in context. | |
| 684 * If that is the case, returns the current context. | |
| 685 * Otherwise, frees context and gets a new one. | |
| 686 * | |
| 687 * Be warned that srcFilter, dstFilter are not checked, they are | |
| 688 * asumed to remain valid. | |
| 689 */ | |
| 690 struct SwsContext *sws_getCachedContext(struct SwsContext *ctx, | |
| 691 int srcW, int srcH, int srcFormat, | |
| 692 int dstW, int dstH, int dstFormat, int flags, | |
| 693 SwsFilter *srcFilter, SwsFilter *dstFilter, double *param) | |
| 694 { | |
| 695 if (ctx != NULL) { | |
| 696 if ((ctx->resampling_ctx->iwidth != srcW) || | |
| 697 (ctx->resampling_ctx->iheight != srcH) || | |
| 698 (ctx->src_pix_fmt != srcFormat) || | |
| 699 (ctx->resampling_ctx->owidth != dstW) || | |
| 700 (ctx->resampling_ctx->oheight != dstH) || | |
| 701 (ctx->dst_pix_fmt != dstFormat)) | |
| 702 { | |
| 703 sws_freeContext(ctx); | |
| 704 ctx = NULL; | |
| 705 } | |
| 706 } | |
| 707 if (ctx == NULL) { | |
| 708 return sws_getContext(srcW, srcH, srcFormat, | |
| 709 dstW, dstH, dstFormat, flags, | |
| 710 srcFilter, dstFilter, param); | |
| 711 } | |
| 712 return ctx; | |
| 677 } | 713 } |
| 678 | 714 |
| 679 int sws_scale(struct SwsContext *ctx, uint8_t* src[], int srcStride[], | 715 int sws_scale(struct SwsContext *ctx, uint8_t* src[], int srcStride[], |
| 680 int srcSliceY, int srcSliceH, uint8_t* dst[], int dstStride[]) | 716 int srcSliceY, int srcSliceH, uint8_t* dst[], int dstStride[]) |
| 681 { | 717 { |
