mirror of https://git.ffmpeg.org/ffmpeg.git
Revert braindead linked list of permissions
Commited in SoC by Bobby Bingham on 2007-08-17 22:44:03 Originally committed as revision 12100 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
52f97a0d8d
commit
16415eafdb
|
@ -29,29 +29,6 @@ typedef struct AVFilterContext AVFilterContext;
|
|||
typedef struct AVFilterLink AVFilterLink;
|
||||
typedef struct AVFilterPad AVFilterPad;
|
||||
|
||||
/**
|
||||
* A linked list of filters which reference this picture and the permissions
|
||||
* they each have. This is needed for the case that filter A requests a buffer
|
||||
* from filter B. Filter B gives it a buffer to use with the permissions it
|
||||
* requested, while reserving more permissions for itself to use when filter A
|
||||
* eventually passes the buffer to filter B. However, filter A does not know
|
||||
* what these permissions are to reinsert them in the reference passed to B,
|
||||
* filter B can't assume that any picture it is passed is one that it allocated.
|
||||
*
|
||||
* Rather than have each filter implement their own code to check for this
|
||||
* case, we store all the permissions here in the picture structure.
|
||||
*
|
||||
* Because the number of filters holding references to any one picture should
|
||||
* be rather low, this should not be a major source of performance problems.
|
||||
*/
|
||||
typedef struct AVFilterPicPerms
|
||||
{
|
||||
AVFilterContext *filter; ///< the filter
|
||||
int perms; ///< the permissions that filter has
|
||||
|
||||
struct AVFilterPicPerms *next;
|
||||
} AVFilterPicPerms;
|
||||
|
||||
/* TODO: look for other flags which may be useful in this structure (interlace
|
||||
* flags, etc)
|
||||
*/
|
||||
|
@ -67,7 +44,6 @@ typedef struct AVFilterPic
|
|||
enum PixelFormat format; ///< colorspace
|
||||
|
||||
unsigned refcount; ///< number of references to this image
|
||||
AVFilterPicPerms *perms; ///< list of permissions held by filters
|
||||
|
||||
/** private data to be used by a custom free function */
|
||||
void *priv;
|
||||
|
@ -105,25 +81,15 @@ typedef struct AVFilterPicRef
|
|||
#define AV_PERM_REUSE 0x08 ///< can output the buffer multiple times
|
||||
} AVFilterPicRef;
|
||||
|
||||
/** Get the permissions the filter has to access the picture. */
|
||||
int avfilter_get_pic_perms(AVFilterPicRef *pic, AVFilterContext *filter);
|
||||
|
||||
/** Give the filter more permissions to access the picture */
|
||||
void avfilter_add_pic_perms(AVFilterPicRef *pic, AVFilterContext *filter,
|
||||
int perms);
|
||||
|
||||
/**
|
||||
* Add a new reference to a picture.
|
||||
* @param ref An existing reference to the picture
|
||||
* @param ref If non-NULL, a pointer to the filter to which the permissions
|
||||
* to the picture are to be given
|
||||
* @param pmask A bitmask containing the allowable permissions in the new
|
||||
* reference
|
||||
* @return A new reference to the picture with the same properties as the
|
||||
* old, excluding any permissions denied by pmask
|
||||
*/
|
||||
AVFilterPicRef *avfilter_ref_pic(AVFilterPicRef *ref, AVFilterContext *filter,
|
||||
int pmask);
|
||||
AVFilterPicRef *avfilter_ref_pic(AVFilterPicRef *ref, int pmask);
|
||||
|
||||
/**
|
||||
* Remove a reference to a picture. If this is the last reference to the
|
||||
|
@ -256,8 +222,6 @@ int *avfilter_default_query_output_formats(AVFilterLink *link);
|
|||
AVFilterPicRef *avfilter_default_get_video_buffer(AVFilterLink *link,
|
||||
int perms);
|
||||
|
||||
/** handler for get_video_buffer() which forwards the request down the chain */
|
||||
AVFilterPicRef *avfilter_next_get_video_buffer(AVFilterLink *link, int perms);
|
||||
/**
|
||||
* Filter definition. This defines the pads a filter contains, and all the
|
||||
* callback functions used to interact with the filter.
|
||||
|
|
Loading…
Reference in New Issue