History

Rename functions and fields:

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

S.N. Hemanth Meenakshisundaram committed 16 years ago

Commit 7fce4811 parent ecc8dad11 files · +49 −49Browse files

Unified · Split

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

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t