[FFmpeg-cvslog] r12010 - trunk/libavfilter/avfilter.c
vitor
subversion
Fri Feb 15 22:38:10 CET 2008
Author: vitor
Date: Fri Feb 15 22:38:10 2008
New Revision: 12010
Log:
Revert braindead linked list of permissions
Commited in SoC by Bobby Bingham on 2007-08-17 22:44:03
Modified:
trunk/libavfilter/avfilter.c
Modified: trunk/libavfilter/avfilter.c
==============================================================================
--- trunk/libavfilter/avfilter.c (original)
+++ trunk/libavfilter/avfilter.c Fri Feb 15 22:38:10 2008
@@ -35,67 +35,19 @@ static AVFilter **filters = NULL;
#define link_dpad(link) link->dst-> input_pads[link->dstpad]
#define link_spad(link) link->src->output_pads[link->srcpad]
-/**
- * helper function to get a pointer to the structure telling the permissions
- * the filter has on the given picture, or to create the structure if it
- * does not yet exist.
- */
-static AVFilterPicPerms *get_perms(AVFilterPic *pic, AVFilterContext *filter)
-{
- AVFilterPicPerms *ret;
-
- for(ret = pic->perms; ret; ret = ret->next)
- if(ret->filter == filter)
- return ret;
-
- ret = av_malloc(sizeof(AVFilterPicPerms));
- ret->filter = filter;
- ret->perms = 0;
- ret->next = pic->perms;
- pic->perms = ret;
-
- return ret;
-}
-
-int avfilter_get_pic_perms(AVFilterPicRef *pic, AVFilterContext *filter)
-{
- return get_perms(pic->pic, filter)->perms;
-}
-
-void avfilter_add_pic_perms(AVFilterPicRef *pic, AVFilterContext *filter,
- int perms)
-{
- get_perms(pic->pic, filter)->perms |= perms;
-}
-
-AVFilterPicRef *avfilter_ref_pic(AVFilterPicRef *ref, AVFilterContext *filter,
- int pmask)
+AVFilterPicRef *avfilter_ref_pic(AVFilterPicRef *ref, int pmask)
{
- AVFilterPicPerms *pic_perms;
AVFilterPicRef *ret = av_malloc(sizeof(AVFilterPicRef));
memcpy(ret, ref, sizeof(AVFilterPicRef));
ret->perms &= pmask;
ret->pic->refcount ++;
-
- if(filter) {
- pic_perms = get_perms(ref->pic, filter);
- pic_perms->perms |= ret->perms;
- }
-
return ret;
}
void avfilter_unref_pic(AVFilterPicRef *ref)
{
- AVFilterPicPerms *perms;
-
- if(-- ref->pic->refcount == 0) {
- for(; ref->pic->perms; ref->pic->perms = perms) {
- perms = ref->pic->perms->next;
- av_free(ref->pic->perms);
- }
+ if(-- ref->pic->refcount == 0)
ref->pic->free(ref->pic);
- }
av_free(ref);
}
@@ -208,7 +160,6 @@ int avfilter_request_frame(AVFilterLink
* forcing the source filter to do it? */
void avfilter_start_frame(AVFilterLink *link, AVFilterPicRef *picref)
{
- int perms = get_perms(picref->pic, link->dst)->perms;
void (*start_frame)(AVFilterLink *, AVFilterPicRef *);
start_frame = link_dpad(link).start_frame;
@@ -216,11 +167,11 @@ void avfilter_start_frame(AVFilterLink *
start_frame = avfilter_default_start_frame;
/* prepare to copy the picture if it has insufficient permissions */
- if((link_dpad(link).min_perms & perms) != link_dpad(link).min_perms ||
- link_dpad(link).rej_perms & perms) {
+ if((link_dpad(link).min_perms & picref->perms) != link_dpad(link).min_perms ||
+ link_dpad(link).rej_perms & picref->perms) {
av_log(link->dst, AV_LOG_INFO,
"frame copy needed (have perms %x, need %x, reject %x)\n",
- perms,
+ picref->perms,
link_dpad(link).min_perms, link_dpad(link).rej_perms);
link->cur_pic = avfilter_default_get_video_buffer(link, link_dpad(link).min_perms);
More information about the ffmpeg-cvslog
mailing list