Commit 9a2daef5 authored by Stefano Sabatini's avatar Stefano Sabatini

lavfi/tinterlace: declare source buffers in copy_picture_field() as const

Increase performance (slightly).
parent fd5293d2
...@@ -175,7 +175,7 @@ static int config_out_props(AVFilterLink *outlink) ...@@ -175,7 +175,7 @@ static int config_out_props(AVFilterLink *outlink)
*/ */
static inline static inline
void copy_picture_field(uint8_t *dst[4], int dst_linesize[4], void copy_picture_field(uint8_t *dst[4], int dst_linesize[4],
uint8_t *src[4], int src_linesize[4], const uint8_t *src[4], int src_linesize[4],
enum PixelFormat format, int w, int src_h, enum PixelFormat format, int w, int src_h,
int src_field, int interleave, int dst_field) int src_field, int interleave, int dst_field)
{ {
...@@ -187,7 +187,7 @@ void copy_picture_field(uint8_t *dst[4], int dst_linesize[4], ...@@ -187,7 +187,7 @@ void copy_picture_field(uint8_t *dst[4], int dst_linesize[4],
int lines = plane == 1 || plane == 2 ? src_h >> vsub : src_h; int lines = plane == 1 || plane == 2 ? src_h >> vsub : src_h;
int linesize = av_image_get_linesize(format, w, plane); int linesize = av_image_get_linesize(format, w, plane);
uint8_t *dstp = dst[plane]; uint8_t *dstp = dst[plane];
uint8_t *srcp = src[plane]; const uint8_t *srcp = src[plane];
lines /= k; lines /= k;
if (src_field == FIELD_LOWER) if (src_field == FIELD_LOWER)
srcp += src_linesize[plane]; srcp += src_linesize[plane];
...@@ -235,12 +235,12 @@ static int end_frame(AVFilterLink *inlink) ...@@ -235,12 +235,12 @@ static int end_frame(AVFilterLink *inlink)
/* write odd frame lines into the upper field of the new frame */ /* write odd frame lines into the upper field of the new frame */
copy_picture_field(out->data, out->linesize, copy_picture_field(out->data, out->linesize,
cur->data, cur->linesize, (const uint8_t **)cur->data, cur->linesize,
inlink->format, inlink->w, inlink->h, inlink->format, inlink->w, inlink->h,
FIELD_UPPER_AND_LOWER, 1, FIELD_UPPER); FIELD_UPPER_AND_LOWER, 1, FIELD_UPPER);
/* write even frame lines into the lower field of the new frame */ /* write even frame lines into the lower field of the new frame */
copy_picture_field(out->data, out->linesize, copy_picture_field(out->data, out->linesize,
next->data, next->linesize, (const uint8_t **)next->data, next->linesize,
inlink->format, inlink->w, inlink->h, inlink->format, inlink->w, inlink->h,
FIELD_UPPER_AND_LOWER, 1, FIELD_LOWER); FIELD_UPPER_AND_LOWER, 1, FIELD_LOWER);
avfilter_unref_bufferp(&tinterlace->next); avfilter_unref_bufferp(&tinterlace->next);
...@@ -261,12 +261,12 @@ static int end_frame(AVFilterLink *inlink) ...@@ -261,12 +261,12 @@ static int end_frame(AVFilterLink *inlink)
field = (1 + tinterlace->frame) & 1 ? FIELD_UPPER : FIELD_LOWER; field = (1 + tinterlace->frame) & 1 ? FIELD_UPPER : FIELD_LOWER;
/* copy upper and lower fields */ /* copy upper and lower fields */
copy_picture_field(out->data, out->linesize, copy_picture_field(out->data, out->linesize,
cur->data, cur->linesize, (const uint8_t **)cur->data, cur->linesize,
inlink->format, inlink->w, inlink->h, inlink->format, inlink->w, inlink->h,
FIELD_UPPER_AND_LOWER, 1, field); FIELD_UPPER_AND_LOWER, 1, field);
/* pad with black the other field */ /* pad with black the other field */
copy_picture_field(out->data, out->linesize, copy_picture_field(out->data, out->linesize,
tinterlace->black_data, tinterlace->black_linesize, (const uint8_t **)tinterlace->black_data, tinterlace->black_linesize,
inlink->format, inlink->w, inlink->h, inlink->format, inlink->w, inlink->h,
FIELD_UPPER_AND_LOWER, 1, !field); FIELD_UPPER_AND_LOWER, 1, !field);
break; break;
...@@ -283,12 +283,12 @@ static int end_frame(AVFilterLink *inlink) ...@@ -283,12 +283,12 @@ static int end_frame(AVFilterLink *inlink)
/* copy upper/lower field from cur */ /* copy upper/lower field from cur */
copy_picture_field(out->data, out->linesize, copy_picture_field(out->data, out->linesize,
cur->data, cur->linesize, (const uint8_t **)cur->data, cur->linesize,
inlink->format, inlink->w, inlink->h, inlink->format, inlink->w, inlink->h,
tff ? FIELD_UPPER : FIELD_LOWER, 1, tff ? FIELD_UPPER : FIELD_LOWER); tff ? FIELD_UPPER : FIELD_LOWER, 1, tff ? FIELD_UPPER : FIELD_LOWER);
/* copy lower/upper field from next */ /* copy lower/upper field from next */
copy_picture_field(out->data, out->linesize, copy_picture_field(out->data, out->linesize,
next->data, next->linesize, (const uint8_t **)next->data, next->linesize,
inlink->format, inlink->w, inlink->h, inlink->format, inlink->w, inlink->h,
tff ? FIELD_LOWER : FIELD_UPPER, 1, tff ? FIELD_LOWER : FIELD_UPPER); tff ? FIELD_LOWER : FIELD_UPPER, 1, tff ? FIELD_LOWER : FIELD_UPPER);
avfilter_unref_bufferp(&tinterlace->next); avfilter_unref_bufferp(&tinterlace->next);
...@@ -310,12 +310,12 @@ static int end_frame(AVFilterLink *inlink) ...@@ -310,12 +310,12 @@ static int end_frame(AVFilterLink *inlink)
/* write current frame second field lines into the second field of the new frame */ /* write current frame second field lines into the second field of the new frame */
copy_picture_field(out->data, out->linesize, copy_picture_field(out->data, out->linesize,
cur->data, cur->linesize, (const uint8_t **)cur->data, cur->linesize,
inlink->format, inlink->w, inlink->h, inlink->format, inlink->w, inlink->h,
tff ? FIELD_LOWER : FIELD_UPPER, 1, tff ? FIELD_LOWER : FIELD_UPPER); tff ? FIELD_LOWER : FIELD_UPPER, 1, tff ? FIELD_LOWER : FIELD_UPPER);
/* write next frame first field lines into the first field of the new frame */ /* write next frame first field lines into the first field of the new frame */
copy_picture_field(out->data, out->linesize, copy_picture_field(out->data, out->linesize,
next->data, next->linesize, (const uint8_t **)next->data, next->linesize,
inlink->format, inlink->w, inlink->h, inlink->format, inlink->w, inlink->h,
tff ? FIELD_UPPER : FIELD_LOWER, 1, tff ? FIELD_UPPER : FIELD_LOWER); tff ? FIELD_UPPER : FIELD_LOWER, 1, tff ? FIELD_UPPER : FIELD_LOWER);
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment