History

Add AVFilterPicRef.pos field and make libavfilter propagate stream byte position information, as stored in the pkt.pos, through the filterchain.

Note that the pos field is added *non* at the end of the AVFilterPicRef struct, thus breaking ABI compatibility, which is allowed as the API is still considered non-stable. Originally committed as revision 22506 to svn://svn.ffmpeg.org/ffmpeg/trunk

Stefano Sabatini committed 16 years ago

Commit 5bb5c1d1 parent ec7ab613 files · +6 −2Browse files

Unified · Split

3 files
  1. libavfilter/avfilter.c +4 −2
  2. libavfilter/avfilter.h +1 −0
  3. libavfilter/defaults.c +1 −0
libavfilter/avfilter.c+4−2
@@ -171,11 +171,12 @@ int avfilter_config_links(AVFilterContext *filter) · 170 unmodified lines
171static void dprintf_picref(void *ctx, AVFilterPicRef *picref, int end)171static void dprintf_picref(void *ctx, AVFilterPicRef *picref, int end)
172{172{
173 dprintf(ctx,173 dprintf(ctx,
174 "picref[%p data[%p, %p, %p, %p] linesize[%d, %d, %d, %d] pts:%"PRId64" a:%d/%d s:%dx%d]%s",174 "picref[%p data[%p, %p, %p, %p] linesize[%d, %d, %d, %d] pts:%"PRId64" pos:%"PRId64" a:%d/%d s:%dx%d]%s",
175 picref,175 picref,
176 picref->data [0], picref->data [1], picref->data [2], picref->data [3],176 picref->data [0], picref->data [1], picref->data [2], picref->data [3],
177 picref->linesize[0], picref->linesize[1], picref->linesize[2], picref->linesize[3],177 picref->linesize[0], picref->linesize[1], picref->linesize[2], picref->linesize[3],
178 picref->pts, picref->pixel_aspect.num, picref->pixel_aspect.den, picref->w, picref->h,178 picref->pts, picref->pos,
179 picref->pixel_aspect.num, picref->pixel_aspect.den, picref->w, picref->h,
179 end ? "\n" : "");180 end ? "\n" : "");
180}181}
181 182
@@ -263,6 +264,7 @@ void avfilter_start_frame(AVFilterLink *link, AVFilterPicRef *picref) · 81 unmodified lines
263 link->cur_pic = avfilter_default_get_video_buffer(link, dst->min_perms, link->w, link->h);264 link->cur_pic = avfilter_default_get_video_buffer(link, dst->min_perms, link->w, link->h);
264 link->srcpic = picref;265 link->srcpic = picref;
265 link->cur_pic->pts = link->srcpic->pts;266 link->cur_pic->pts = link->srcpic->pts;
267 link->cur_pic->pos = link->srcpic->pos;
266 link->cur_pic->pixel_aspect = link->srcpic->pixel_aspect;268 link->cur_pic->pixel_aspect = link->srcpic->pixel_aspect;
267 }269 }
268 else270 else
libavfilter/avfilter.h+1−0
@@ -105,6 +105,7 @@ typedef struct AVFilterPicRef · 104 unmodified lines
105 int h; ///< image height105 int h; ///< image height
106 106
107 int64_t pts; ///< presentation timestamp in units of 1/AV_TIME_BASE107 int64_t pts; ///< presentation timestamp in units of 1/AV_TIME_BASE
108 int64_t pos; ///< byte position in stream, -1 if unknown
108 109
109 AVRational pixel_aspect; ///< pixel aspect ratio110 AVRational pixel_aspect; ///< pixel aspect ratio
110 111
libavfilter/defaults.c+1−0
@@ -74,6 +74,7 @@ void avfilter_default_start_frame(AVFilterLink *link, AVFilterPicRef *picref) · 73 unmodified lines
74 if(out) {74 if(out) {
75 out->outpic = avfilter_get_video_buffer(out, AV_PERM_WRITE, out->w, out->h);75 out->outpic = avfilter_get_video_buffer(out, AV_PERM_WRITE, out->w, out->h);
76 out->outpic->pts = picref->pts;76 out->outpic->pts = picref->pts;
77 out->outpic->pos = picref->pos;
77 out->outpic->pixel_aspect = picref->pixel_aspect;78 out->outpic->pixel_aspect = picref->pixel_aspect;
78 avfilter_start_frame(out, avfilter_ref_pic(out->outpic, ~0));79 avfilter_start_frame(out, avfilter_ref_pic(out->outpic, ~0));
79 }80 }

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