avfilter_(un)ref_pic -> avfilter_(un)ref_buffer
avfilter_copy_picref_props -> avfilter_copy_buffer_ref_props
AVFilterBufferRef.pic -> AVFilterBufferRef.buffer
They have been renamed to allow sharing with audio.
Patch by S.N. Hemanth Meenakshisundaram $smeenaks$ucsd$edu$.
Originally committed as revision 24731 to svn://svn.ffmpeg.org/ffmpeg/trunk
| ... | ... |
@@ -1777,7 +1777,7 @@ static int output_packet(AVInputStream *ist, int ist_index, |
| 1777 | 1777 |
frame_available = (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) && |
| 1778 | 1778 |
ist->out_video_filter && avfilter_poll_frame(ist->out_video_filter->inputs[0]); |
| 1779 | 1779 |
if(ist->picref) |
| 1780 |
- avfilter_unref_pic(ist->picref); |
|
| 1780 |
+ avfilter_unref_buffer(ist->picref); |
|
| 1781 | 1781 |
} |
| 1782 | 1782 |
#endif |
| 1783 | 1783 |
av_free(buffer_to_free); |
| ... | ... |
@@ -1304,7 +1304,7 @@ static void alloc_picture(void *opaque) |
| 1304 | 1304 |
|
| 1305 | 1305 |
#if CONFIG_AVFILTER |
| 1306 | 1306 |
if (vp->picref) |
| 1307 |
- avfilter_unref_pic(vp->picref); |
|
| 1307 |
+ avfilter_unref_buffer(vp->picref); |
|
| 1308 | 1308 |
vp->picref = NULL; |
| 1309 | 1309 |
|
| 1310 | 1310 |
vp->width = is->out_video_filter->inputs[0]->w; |
| ... | ... |
@@ -1389,7 +1389,7 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts, int64_t |
| 1389 | 1389 |
AVPicture pict; |
| 1390 | 1390 |
#if CONFIG_AVFILTER |
| 1391 | 1391 |
if(vp->picref) |
| 1392 |
- avfilter_unref_pic(vp->picref); |
|
| 1392 |
+ avfilter_unref_buffer(vp->picref); |
|
| 1393 | 1393 |
vp->picref = src_frame->opaque; |
| 1394 | 1394 |
#endif |
| 1395 | 1395 |
|
| ... | ... |
@@ -1604,7 +1604,7 @@ static int input_get_buffer(AVCodecContext *codec, AVFrame *pic) |
| 1604 | 1604 |
static void input_release_buffer(AVCodecContext *codec, AVFrame *pic) |
| 1605 | 1605 |
{
|
| 1606 | 1606 |
memset(pic->data, 0, sizeof(pic->data)); |
| 1607 |
- avfilter_unref_pic(pic->opaque); |
|
| 1607 |
+ avfilter_unref_buffer(pic->opaque); |
|
| 1608 | 1608 |
} |
| 1609 | 1609 |
|
| 1610 | 1610 |
static int input_reget_buffer(AVCodecContext *codec, AVFrame *pic) |
| ... | ... |
@@ -1667,7 +1667,7 @@ static int input_request_frame(AVFilterLink *link) |
| 1667 | 1667 |
return -1; |
| 1668 | 1668 |
|
| 1669 | 1669 |
if(priv->use_dr1) {
|
| 1670 |
- picref = avfilter_ref_pic(priv->frame->opaque, ~0); |
|
| 1670 |
+ picref = avfilter_ref_buffer(priv->frame->opaque, ~0); |
|
| 1671 | 1671 |
} else {
|
| 1672 | 1672 |
picref = avfilter_get_video_buffer(link, AV_PERM_WRITE, link->w, link->h); |
| 1673 | 1673 |
av_picture_copy((AVPicture *)&picref->data, (AVPicture *)priv->frame, |
| ... | ... |
@@ -2672,7 +2672,7 @@ static void stream_close(VideoState *is) |
| 2672 | 2672 |
vp = &is->pictq[i]; |
| 2673 | 2673 |
#if CONFIG_AVFILTER |
| 2674 | 2674 |
if (vp->picref) {
|
| 2675 |
- avfilter_unref_pic(vp->picref); |
|
| 2675 |
+ avfilter_unref_buffer(vp->picref); |
|
| 2676 | 2676 |
vp->picref = NULL; |
| 2677 | 2677 |
} |
| 2678 | 2678 |
#endif |
| ... | ... |
@@ -45,19 +45,19 @@ const char *avfilter_license(void) |
| 45 | 45 |
#define link_dpad(link) link->dst-> input_pads[link->dstpad] |
| 46 | 46 |
#define link_spad(link) link->src->output_pads[link->srcpad] |
| 47 | 47 |
|
| 48 |
-AVFilterBufferRef *avfilter_ref_pic(AVFilterBufferRef *ref, int pmask) |
|
| 48 |
+AVFilterBufferRef *avfilter_ref_buffer(AVFilterBufferRef *ref, int pmask) |
|
| 49 | 49 |
{
|
| 50 | 50 |
AVFilterBufferRef *ret = av_malloc(sizeof(AVFilterBufferRef)); |
| 51 | 51 |
*ret = *ref; |
| 52 | 52 |
ret->perms &= pmask; |
| 53 |
- ret->pic->refcount ++; |
|
| 53 |
+ ret->buf->refcount ++; |
|
| 54 | 54 |
return ret; |
| 55 | 55 |
} |
| 56 | 56 |
|
| 57 |
-void avfilter_unref_pic(AVFilterBufferRef *ref) |
|
| 57 |
+void avfilter_unref_buffer(AVFilterBufferRef *ref) |
|
| 58 | 58 |
{
|
| 59 |
- if(!(--ref->pic->refcount)) |
|
| 60 |
- ref->pic->free(ref->pic); |
|
| 59 |
+ if(!(--ref->buf->refcount)) |
|
| 60 |
+ ref->buf->free(ref->buf); |
|
| 61 | 61 |
av_free(ref); |
| 62 | 62 |
} |
| 63 | 63 |
|
| ... | ... |
@@ -264,7 +264,7 @@ void avfilter_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) |
| 264 | 264 |
|
| 265 | 265 |
link->cur_pic = avfilter_default_get_video_buffer(link, dst->min_perms, link->w, link->h); |
| 266 | 266 |
link->srcpic = picref; |
| 267 |
- avfilter_copy_picref_props(link->cur_pic, link->srcpic); |
|
| 267 |
+ avfilter_copy_buffer_ref_props(link->cur_pic, link->srcpic); |
|
| 268 | 268 |
} |
| 269 | 269 |
else |
| 270 | 270 |
link->cur_pic = picref; |
| ... | ... |
@@ -284,7 +284,7 @@ void avfilter_end_frame(AVFilterLink *link) |
| 284 | 284 |
/* unreference the source picture if we're feeding the destination filter |
| 285 | 285 |
* a copied version dues to permission issues */ |
| 286 | 286 |
if(link->srcpic) {
|
| 287 |
- avfilter_unref_pic(link->srcpic); |
|
| 287 |
+ avfilter_unref_buffer(link->srcpic); |
|
| 288 | 288 |
link->srcpic = NULL; |
| 289 | 289 |
} |
| 290 | 290 |
|
| ... | ... |
@@ -25,7 +25,7 @@ |
| 25 | 25 |
#include "libavutil/avutil.h" |
| 26 | 26 |
|
| 27 | 27 |
#define LIBAVFILTER_VERSION_MAJOR 1 |
| 28 |
-#define LIBAVFILTER_VERSION_MINOR 29 |
|
| 28 |
+#define LIBAVFILTER_VERSION_MINOR 30 |
|
| 29 | 29 |
#define LIBAVFILTER_VERSION_MICRO 0 |
| 30 | 30 |
|
| 31 | 31 |
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ |
| ... | ... |
@@ -90,7 +90,7 @@ typedef struct AVFilterBuffer |
| 90 | 90 |
|
| 91 | 91 |
/** |
| 92 | 92 |
* A reference to an AVFilterBuffer. Since filters can manipulate the origin of |
| 93 |
- * a picture to, for example, crop image without any memcpy, the picture origin |
|
| 93 |
+ * a buffer to, for example, crop image without any memcpy, the buffer origin |
|
| 94 | 94 |
* and dimensions are per-reference properties. Linesize is also useful for |
| 95 | 95 |
* image flipping, frame to field filters, etc, and so is also per-reference. |
| 96 | 96 |
* |
| ... | ... |
@@ -98,7 +98,7 @@ typedef struct AVFilterBuffer |
| 98 | 98 |
*/ |
| 99 | 99 |
typedef struct AVFilterBufferRef |
| 100 | 100 |
{
|
| 101 |
- AVFilterBuffer *pic; ///< the picture that this is a reference to |
|
| 101 |
+ AVFilterBuffer *buf; ///< the buffer that this is a reference to |
|
| 102 | 102 |
uint8_t *data[4]; ///< picture data for each plane |
| 103 | 103 |
int linesize[4]; ///< number of bytes per line |
| 104 | 104 |
int w; ///< image width |
| ... | ... |
@@ -120,7 +120,7 @@ typedef struct AVFilterBufferRef |
| 120 | 120 |
* Copy properties of src to dst, without copying the actual video |
| 121 | 121 |
* data. |
| 122 | 122 |
*/ |
| 123 |
-static inline void avfilter_copy_picref_props(AVFilterBufferRef *dst, AVFilterBufferRef *src) |
|
| 123 |
+static inline void avfilter_copy_buffer_ref_props(AVFilterBufferRef *dst, AVFilterBufferRef *src) |
|
| 124 | 124 |
{
|
| 125 | 125 |
dst->pts = src->pts; |
| 126 | 126 |
dst->pos = src->pos; |
| ... | ... |
@@ -132,21 +132,21 @@ static inline void avfilter_copy_picref_props(AVFilterBufferRef *dst, AVFilterBu |
| 132 | 132 |
} |
| 133 | 133 |
|
| 134 | 134 |
/** |
| 135 |
- * Add a new reference to a picture. |
|
| 136 |
- * @param ref an existing reference to the picture |
|
| 135 |
+ * Add a new reference to a buffer. |
|
| 136 |
+ * @param ref an existing reference to the buffer |
|
| 137 | 137 |
* @param pmask a bitmask containing the allowable permissions in the new |
| 138 | 138 |
* reference |
| 139 |
- * @return a new reference to the picture with the same properties as the |
|
| 139 |
+ * @return a new reference to the buffer with the same properties as the |
|
| 140 | 140 |
* old, excluding any permissions denied by pmask |
| 141 | 141 |
*/ |
| 142 |
-AVFilterBufferRef *avfilter_ref_pic(AVFilterBufferRef *ref, int pmask); |
|
| 142 |
+AVFilterBufferRef *avfilter_ref_buffer(AVFilterBufferRef *ref, int pmask); |
|
| 143 | 143 |
|
| 144 | 144 |
/** |
| 145 |
- * Remove a reference to a picture. If this is the last reference to the |
|
| 146 |
- * picture, the picture itself is also automatically freed. |
|
| 147 |
- * @param ref reference to the picture |
|
| 145 |
+ * Remove a reference to a buffer. If this is the last reference to the |
|
| 146 |
+ * buffer, the buffer itself is also automatically freed. |
|
| 147 |
+ * @param ref reference to the buffer |
|
| 148 | 148 |
*/ |
| 149 |
-void avfilter_unref_pic(AVFilterBufferRef *ref); |
|
| 149 |
+void avfilter_unref_buffer(AVFilterBufferRef *ref); |
|
| 150 | 150 |
|
| 151 | 151 |
/** |
| 152 | 152 |
* A list of supported formats for one end of a filter link. This is used |
| ... | ... |
@@ -442,7 +442,7 @@ typedef struct AVFilter |
| 442 | 442 |
|
| 443 | 443 |
/** |
| 444 | 444 |
* Filter uninitialization function. Should deallocate any memory held |
| 445 |
- * by the filter, release any picture references, etc. This does not need |
|
| 445 |
+ * by the filter, release any buffer references, etc. This does not need |
|
| 446 | 446 |
* to deallocate the AVFilterContext->priv memory itself. |
| 447 | 447 |
*/ |
| 448 | 448 |
void (*uninit)(AVFilterContext *ctx); |
| ... | ... |
@@ -524,9 +524,9 @@ struct AVFilterLink |
| 524 | 524 |
AVFilterFormats *out_formats; |
| 525 | 525 |
|
| 526 | 526 |
/** |
| 527 |
- * The picture reference currently being sent across the link by the source |
|
| 527 |
+ * The buffer reference currently being sent across the link by the source |
|
| 528 | 528 |
* filter. This is used internally by the filter system to allow |
| 529 |
- * automatic copying of pictures which do not have sufficient permissions |
|
| 529 |
+ * automatic copying of buffers which do not have sufficient permissions |
|
| 530 | 530 |
* for the destination. This should not be accessed directly by the |
| 531 | 531 |
* filters. |
| 532 | 532 |
*/ |
| ... | ... |
@@ -556,13 +556,13 @@ int avfilter_config_links(AVFilterContext *filter); |
| 556 | 556 |
|
| 557 | 557 |
/** |
| 558 | 558 |
* Request a picture buffer with a specific set of permissions. |
| 559 |
- * @param link the output link to the filter from which the picture will |
|
| 559 |
+ * @param link the output link to the filter from which the buffer will |
|
| 560 | 560 |
* be requested |
| 561 | 561 |
* @param perms the required access permissions |
| 562 | 562 |
* @param w the minimum width of the buffer to allocate |
| 563 | 563 |
* @param h the minimum height of the buffer to allocate |
| 564 |
- * @return A reference to the picture. This must be unreferenced with |
|
| 565 |
- * avfilter_unref_pic when you are finished with it. |
|
| 564 |
+ * @return A reference to the buffer. This must be unreferenced with |
|
| 565 |
+ * avfilter_unref_buffer when you are finished with it. |
|
| 566 | 566 |
*/ |
| 567 | 567 |
AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms, |
| 568 | 568 |
int w, int h); |
| ... | ... |
@@ -39,7 +39,7 @@ AVFilterBufferRef *avfilter_default_get_video_buffer(AVFilterLink *link, int per |
| 39 | 39 |
int i, tempsize; |
| 40 | 40 |
char *buf; |
| 41 | 41 |
|
| 42 |
- ref->pic = pic; |
|
| 42 |
+ ref->buf = pic; |
|
| 43 | 43 |
ref->w = w; |
| 44 | 44 |
ref->h = h; |
| 45 | 45 |
|
| ... | ... |
@@ -74,8 +74,8 @@ void avfilter_default_start_frame(AVFilterLink *link, AVFilterBufferRef *picref) |
| 74 | 74 |
|
| 75 | 75 |
if(out) {
|
| 76 | 76 |
out->outpic = avfilter_get_video_buffer(out, AV_PERM_WRITE, out->w, out->h); |
| 77 |
- avfilter_copy_picref_props(out->outpic, picref); |
|
| 78 |
- avfilter_start_frame(out, avfilter_ref_pic(out->outpic, ~0)); |
|
| 77 |
+ avfilter_copy_buffer_ref_props(out->outpic, picref); |
|
| 78 |
+ avfilter_start_frame(out, avfilter_ref_buffer(out->outpic, ~0)); |
|
| 79 | 79 |
} |
| 80 | 80 |
} |
| 81 | 81 |
|
| ... | ... |
@@ -97,12 +97,12 @@ void avfilter_default_end_frame(AVFilterLink *link) |
| 97 | 97 |
if(link->dst->output_count) |
| 98 | 98 |
out = link->dst->outputs[0]; |
| 99 | 99 |
|
| 100 |
- avfilter_unref_pic(link->cur_pic); |
|
| 100 |
+ avfilter_unref_buffer(link->cur_pic); |
|
| 101 | 101 |
link->cur_pic = NULL; |
| 102 | 102 |
|
| 103 | 103 |
if(out) {
|
| 104 | 104 |
if(out->outpic) {
|
| 105 |
- avfilter_unref_pic(out->outpic); |
|
| 105 |
+ avfilter_unref_buffer(out->outpic); |
|
| 106 | 106 |
out->outpic = NULL; |
| 107 | 107 |
} |
| 108 | 108 |
avfilter_end_frame(out); |
| ... | ... |
@@ -132,7 +132,7 @@ static int config_output(AVFilterLink *link) |
| 132 | 132 |
static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) |
| 133 | 133 |
{
|
| 134 | 134 |
CropContext *crop = link->dst->priv; |
| 135 |
- AVFilterBufferRef *ref2 = avfilter_ref_pic(picref, ~0); |
|
| 135 |
+ AVFilterBufferRef *ref2 = avfilter_ref_buffer(picref, ~0); |
|
| 136 | 136 |
int i; |
| 137 | 137 |
|
| 138 | 138 |
ref2->w = crop->w; |
| ... | ... |
@@ -244,7 +244,7 @@ static AVFilterBufferRef *get_video_buffer(AVFilterLink *inlink, int perms, int |
| 244 | 244 |
static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) |
| 245 | 245 |
{
|
| 246 | 246 |
PadContext *pad = inlink->dst->priv; |
| 247 |
- AVFilterBufferRef *outpicref = avfilter_ref_pic(inpicref, ~0); |
|
| 247 |
+ AVFilterBufferRef *outpicref = avfilter_ref_buffer(inpicref, ~0); |
|
| 248 | 248 |
int plane; |
| 249 | 249 |
|
| 250 | 250 |
inlink->dst->outputs[0]->outpic = outpicref; |
| ... | ... |
@@ -263,7 +263,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref) |
| 263 | 263 |
static void end_frame(AVFilterLink *link) |
| 264 | 264 |
{
|
| 265 | 265 |
avfilter_end_frame(link->dst->outputs[0]); |
| 266 |
- avfilter_unref_pic(link->cur_pic); |
|
| 266 |
+ avfilter_unref_buffer(link->cur_pic); |
|
| 267 | 267 |
} |
| 268 | 268 |
|
| 269 | 269 |
static void draw_send_bar_slice(AVFilterLink *link, int y, int h, int slice_dir, int before_slice) |
| ... | ... |
@@ -432,13 +432,13 @@ static int color_request_frame(AVFilterLink *link) |
| 432 | 432 |
picref->pts = av_rescale_q(color->pts++, color->time_base, AV_TIME_BASE_Q); |
| 433 | 433 |
picref->pos = 0; |
| 434 | 434 |
|
| 435 |
- avfilter_start_frame(link, avfilter_ref_pic(picref, ~0)); |
|
| 435 |
+ avfilter_start_frame(link, avfilter_ref_buffer(picref, ~0)); |
|
| 436 | 436 |
draw_rectangle(picref, |
| 437 | 437 |
color->line, color->line_step, color->hsub, color->vsub, |
| 438 | 438 |
0, 0, color->w, color->h); |
| 439 | 439 |
avfilter_draw_slice(link, 0, color->h, 1); |
| 440 | 440 |
avfilter_end_frame(link); |
| 441 |
- avfilter_unref_pic(picref); |
|
| 441 |
+ avfilter_unref_buffer(picref); |
|
| 442 | 442 |
|
| 443 | 443 |
return 0; |
| 444 | 444 |
} |
| ... | ... |
@@ -58,7 +58,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) |
| 58 | 58 |
outlink->outpic = avfilter_get_video_buffer(outlink, AV_PERM_WRITE, |
| 59 | 59 |
outlink->w, outlink->h); |
| 60 | 60 |
outpicref = outlink->outpic; |
| 61 |
- avfilter_copy_picref_props(outpicref, picref); |
|
| 61 |
+ avfilter_copy_buffer_ref_props(outpicref, picref); |
|
| 62 | 62 |
|
| 63 | 63 |
for (i = 0; i < 4; i++) {
|
| 64 | 64 |
int h = outlink->h; |
| ... | ... |
@@ -74,7 +74,7 @@ static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *picref) |
| 74 | 74 |
if (priv->pix_desc->flags & PIX_FMT_PAL) |
| 75 | 75 |
memcpy(outpicref->data[1], outpicref->data[1], 256*4); |
| 76 | 76 |
|
| 77 |
- avfilter_start_frame(outlink, avfilter_ref_pic(outpicref, ~0)); |
|
| 77 |
+ avfilter_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); |
|
| 78 | 78 |
} |
| 79 | 79 |
|
| 80 | 80 |
static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir) |
| ... | ... |
@@ -152,7 +152,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) |
| 152 | 152 |
scale->vsub = av_pix_fmt_descriptors[link->format].log2_chroma_h; |
| 153 | 153 |
|
| 154 | 154 |
outpicref = avfilter_get_video_buffer(outlink, AV_PERM_WRITE, outlink->w, outlink->h); |
| 155 |
- avfilter_copy_picref_props(outpicref, picref); |
|
| 155 |
+ avfilter_copy_buffer_ref_props(outpicref, picref); |
|
| 156 | 156 |
|
| 157 | 157 |
outlink->outpic = outpicref; |
| 158 | 158 |
|
| ... | ... |
@@ -162,7 +162,7 @@ static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref) |
| 162 | 162 |
INT_MAX); |
| 163 | 163 |
|
| 164 | 164 |
scale->slice_y = 0; |
| 165 |
- avfilter_start_frame(outlink, avfilter_ref_pic(outpicref, ~0)); |
|
| 165 |
+ avfilter_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0)); |
|
| 166 | 166 |
} |
| 167 | 167 |
|
| 168 | 168 |
static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) |
| ... | ... |
@@ -202,10 +202,10 @@ static void end_frame(AVFilterLink *link) |
| 202 | 202 |
unsharpen(out->data[1], in->data[1], out->linesize[1], in->linesize[1], CHROMA_WIDTH(link), CHROMA_HEIGHT(link), &unsharp->chroma); |
| 203 | 203 |
unsharpen(out->data[2], in->data[2], out->linesize[2], in->linesize[2], CHROMA_WIDTH(link), CHROMA_HEIGHT(link), &unsharp->chroma); |
| 204 | 204 |
|
| 205 |
- avfilter_unref_pic(in); |
|
| 205 |
+ avfilter_unref_buffer(in); |
|
| 206 | 206 |
avfilter_draw_slice(link->dst->outputs[0], 0, link->h, 1); |
| 207 | 207 |
avfilter_end_frame(link->dst->outputs[0]); |
| 208 |
- avfilter_unref_pic(out); |
|
| 208 |
+ avfilter_unref_buffer(out); |
|
| 209 | 209 |
} |
| 210 | 210 |
|
| 211 | 211 |
static void draw_slice(AVFilterLink *link, int y, int h, int slice_dir) |
| ... | ... |
@@ -126,10 +126,10 @@ static int request_frame(AVFilterLink *link) |
| 126 | 126 |
picref->pixel_aspect = c->pixel_aspect; |
| 127 | 127 |
picref->interlaced = c->frame.interlaced_frame; |
| 128 | 128 |
picref->top_field_first = c->frame.top_field_first; |
| 129 |
- avfilter_start_frame(link, avfilter_ref_pic(picref, ~0)); |
|
| 129 |
+ avfilter_start_frame(link, avfilter_ref_buffer(picref, ~0)); |
|
| 130 | 130 |
avfilter_draw_slice(link, 0, link->h, 1); |
| 131 | 131 |
avfilter_end_frame(link); |
| 132 |
- avfilter_unref_pic(picref); |
|
| 132 |
+ avfilter_unref_buffer(picref); |
|
| 133 | 133 |
|
| 134 | 134 |
c->has_frame = 0; |
| 135 | 135 |
|