]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/avfilter.c
Move arch check before OS check.
[ffmpeg] / libavfilter / avfilter.c
index ddc0140dc3fa2cfcc4c4a272bc219f212b338d0a..420e7c262bf6924b7f8180ff4a6e6b0938cf1093 100644 (file)
@@ -19,8 +19,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "libavcodec/imgconvert.h"
 #include "avfilter.h"
-#include "allfilters.h"
 
 /** list of registered filters */
 struct FilterList
@@ -262,10 +262,13 @@ void avfilter_draw_slice(AVFilterLink *link, int y, int h)
         }
 
         for(i = 0; i < 4; i ++) {
+            int planew =
+                ff_get_plane_bytewidth(link->format, link->cur_pic->w, i);
+
             if(!src[i]) continue;
 
             for(j = 0; j < h >> (i==0 ? 0 : vsub); j ++) {
-                memcpy(dst[i], src[i], link->cur_pic->linesize[i]);
+                memcpy(dst[i], src[i], planew);
                 src[i] += link->srcpic ->linesize[i];
                 dst[i] += link->cur_pic->linesize[i];
             }
@@ -296,11 +299,6 @@ void avfilter_register(AVFilter *filter)
     filters         = newfilt;
 }
 
-void avfilter_init(void)
-{
-    avfilter_register_all();
-}
-
 void avfilter_uninit(void)
 {
     struct FilterList *tmp;
@@ -325,6 +323,11 @@ static const char *filter_name(void *p)
     return filter->filter->name;
 }
 
+static const AVClass avfilter_class = {
+    "AVFilter",
+    filter_name
+};
+
 AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name)
 {
     AVFilterContext *ret;
@@ -334,8 +337,7 @@ AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name)
 
     ret = av_malloc(sizeof(AVFilterContext));
 
-    ret->av_class = av_mallocz(sizeof(AVClass));
-    ret->av_class->item_name = filter_name;
+    ret->av_class = &avfilter_class;
     ret->filter   = filter;
     ret->name     = inst_name ? av_strdup(inst_name) : NULL;
     ret->priv     = av_mallocz(filter->priv_size);
@@ -377,7 +379,6 @@ void avfilter_destroy(AVFilterContext *filter)
     av_freep(&filter->inputs);
     av_freep(&filter->outputs);
     av_freep(&filter->priv);
-    av_freep(&filter->av_class);
     av_free(filter);
 }