]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/avfilter.c
Mark print_all_lib_versions() static in cmdutils.c . Patch by Diego Pettenò
[ffmpeg] / libavfilter / avfilter.c
index 79c4cc07b762af3001ccb663737a70a23ef710ce..d6f07a9ed616564d416d11f6f865b56f7a9f0e85 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "libavcodec/imgconvert.h"
 #include "avfilter.h"
-#include "allfilters.h"
+
+unsigned avfilter_version(void) {
+    return LIBAVFILTER_VERSION_INT;
+}
 
 /** list of registered filters */
 struct FilterList
@@ -262,10 +266,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];
             }
@@ -320,6 +327,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;
@@ -329,8 +341,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);
@@ -372,7 +383,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);
 }