*/
#include "avcodec.h"
-#include "swscale.h"
#include "dsputil.h"
+#include "libswscale/swscale.h"
#ifdef HAVE_ALTIVEC
#include "ppc/imgresample_altivec.h"
#define LINE_BUF_HEIGHT (NB_TAPS * 4)
struct SwsContext {
- AVClass *av_class;
+ const AVClass *av_class;
struct ImgReSampleContext *resampling_ctx;
enum PixelFormat src_pix_fmt, dst_pix_fmt;
};
}
#endif /* HAVE_MMX */
-/* slow version to handle limit cases. Does not need optimisation */
+/* slow version to handle limit cases. Does not need optimization */
static void h_resample_slow(uint8_t *dst, int dst_width,
const uint8_t *src, int src_width,
int src_start, int src_incr, int16_t *filters)
h_resample(new_line, owidth,
src_line, iwidth, - FCENTER * POS_FRAC, s->h_incr,
&s->h_filters[0][0]);
- /* handle ring buffer wraping */
+ /* handle ring buffer wrapping */
if (ring_y >= LINE_BUF_HEIGHT) {
memcpy(s->line_buf + (ring_y - LINE_BUF_HEIGHT) * owidth,
new_line, owidth);
if (!s)
return NULL;
if((unsigned)owidth >= UINT_MAX / (LINE_BUF_HEIGHT + NB_TAPS))
- return NULL;
+ goto fail;
s->line_buf = av_mallocz(owidth * (LINE_BUF_HEIGHT + NB_TAPS));
if (!s->line_buf)
goto fail;
av_free(s);
}
+static const char *context_to_name(void* ptr)
+{
+ return "imgconvert";
+}
+
+static const AVClass context_class = { "imgresample", context_to_name, NULL };
+
struct SwsContext *sws_getContext(int srcW, int srcH, int srcFormat,
int dstW, int dstH, int dstFormat,
int flags, SwsFilter *srcFilter,
struct SwsContext *ctx;
ctx = av_malloc(sizeof(struct SwsContext));
- if (ctx)
- ctx->av_class = av_mallocz(sizeof(AVClass));
- if (!ctx || !ctx->av_class) {
+ if (!ctx) {
av_log(NULL, AV_LOG_ERROR, "Cannot allocate a resampling context!\n");
return NULL;
}
+ ctx->av_class = &context_class;
if ((srcH != dstH) || (srcW != dstW)) {
if ((srcFormat != PIX_FMT_YUV420P) || (dstFormat != PIX_FMT_YUV420P)) {
- av_log(NULL, AV_LOG_INFO, "PIX_FMT_YUV420P will be used as an intermediate format for rescaling\n");
+ av_log(ctx, AV_LOG_INFO, "PIX_FMT_YUV420P will be used as an intermediate format for rescaling\n");
}
ctx->resampling_ctx = img_resample_init(dstW, dstH, srcW, srcH);
} else {
} else {
av_free(ctx->resampling_ctx);
}
- av_free(ctx->av_class);
av_free(ctx);
}
&src_pict, ctx->src_pix_fmt,
ctx->resampling_ctx->iwidth, ctx->resampling_ctx->iheight) < 0) {
- av_log(NULL, AV_LOG_ERROR, "pixel format conversion not handled\n");
+ av_log(ctx, AV_LOG_ERROR, "pixel format conversion not handled\n");
res = -1;
goto the_end;
}
resampled_picture, current_pix_fmt,
ctx->resampling_ctx->owidth, ctx->resampling_ctx->oheight) < 0) {
- av_log(NULL, AV_LOG_ERROR, "pixel format conversion not handled\n");
+ av_log(ctx, AV_LOG_ERROR, "pixel format conversion not handled\n");
res = -1;
goto the_end;