]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/imgresample.c
gcc chokes on xmm constraints, so pessimize int32_to_float_fmul_scalar_sse a little
[ffmpeg] / libavcodec / imgresample.c
index d1d6757c6c23747f495807645b6958865d8fd282..8da1b4d315f3fb9392c60bafafe55437f8ac56cc 100644 (file)
@@ -25,8 +25,8 @@
  */
 
 #include "avcodec.h"
-#include "swscale.h"
 #include "dsputil.h"
+#include "libswscale/swscale.h"
 
 #ifdef HAVE_ALTIVEC
 #include "ppc/imgresample_altivec.h"
@@ -48,7 +48,7 @@
 #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;
 };
@@ -285,7 +285,7 @@ static void v_resample4_mmx(uint8_t *dst, int dst_width, const uint8_t *src,
 }
 #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)
@@ -391,7 +391,7 @@ static void component_resample(ImgReSampleContext *s,
             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);
@@ -447,7 +447,7 @@ ImgReSampleContext *img_resample_full_init(int owidth, int oheight,
     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;
@@ -512,6 +512,13 @@ void img_resample_close(ImgReSampleContext *s)
     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,
@@ -520,17 +527,16 @@ struct SwsContext *sws_getContext(int srcW, int srcH, int srcFormat,
     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 {
@@ -556,7 +562,6 @@ void sws_freeContext(struct SwsContext *ctx)
     } else {
         av_free(ctx->resampling_ctx);
     }
-    av_free(ctx->av_class);
     av_free(ctx);
 }
 
@@ -634,7 +639,7 @@ int sws_scale(struct SwsContext *ctx, uint8_t* src[], int srcStride[],
                             &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;
             }
@@ -673,7 +678,7 @@ int sws_scale(struct SwsContext *ctx, uint8_t* src[], int srcStride[],
                         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;