X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Favfilter.c;h=d6f07a9ed616564d416d11f6f865b56f7a9f0e85;hb=88b77ef1e0c651c5bf17e10bfa4694905c28aad8;hp=79c4cc07b762af3001ccb663737a70a23ef710ce;hpb=3bc2a526439f34acf3e965db80802c0f717a06ec;p=ffmpeg diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 79c4cc07b76..d6f07a9ed61 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -19,8 +19,12 @@ * 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); }