[FFmpeg-devel] [PATCH] lavu/frame: Optimize frame_copy_video
Jean Delvare
jdelvare at suse.de
Tue Dec 15 08:58:01 CET 2015
Hallo Michael,
On Mon, 14 Dec 2015 23:18:39 +0100, Michael Niedermayer wrote:
> On Mon, Dec 14, 2015 at 07:36:51PM +0100, Jean Delvare wrote:
> > As I understand it, the temporary stack buffer "src_data" was
> > introduced solely to avoid a compiler warning. I believe that a better
> > way to solve this warning it to explicitly cast src->data. This
> > should be somewhat faster, and just as safe.
> >
> > Signed-off-by: Jean Delvare <jdelvare at suse.de>
> > Cc: Anton Khirnov <anton at khirnov.net>
> > ---
> > libavutil/frame.c | 4 +---
> > 1 file changed, 1 insertion(+), 3 deletions(-)
> >
> > --- ffmpeg.orig/libavutil/frame.c 2015-12-14 18:42:06.272234579 +0100
> > +++ ffmpeg/libavutil/frame.c 2015-12-14 19:05:18.501745387 +0100
> > @@ -647,7 +647,6 @@ AVFrameSideData *av_frame_get_side_data(
> >
> > static int frame_copy_video(AVFrame *dst, const AVFrame *src)
> > {
> > - const uint8_t *src_data[4];
> > int i, planes;
> >
> > if (dst->width < src->width ||
> > @@ -659,9 +658,8 @@ static int frame_copy_video(AVFrame *dst
> > if (!dst->data[i] || !src->data[i])
> > return AVERROR(EINVAL);
> >
> > - memcpy(src_data, src->data, sizeof(src_data));
> > av_image_copy(dst->data, dst->linesize,
> > - src_data, src->linesize,
> > + (const uint8_t **)src->data, src->linesize,
>
> I think this may be a aliasing violation and thus undefined
> not that i like that or consider that sane
> so if someone says iam wrong, i would certainly not be unhappy
Why would it be an aliasing violation? We do not change the fundamental
type of the pointer, we only add a const where the function wants it.
For more simple pointer types the compiler would do it for us silently.
Also I can see 12 occurrences of the same cast for this parameter of
function av_image_copy() in the ffmpeg code already. And over 20 more
similar casts for similar parameters of other functions
(ff_combine_frame, swr_convert, copy_picture_field...) So I'm not
introducing anything new, just proposing one more of the same.
--
Jean Delvare
SUSE L3 Support
More information about the ffmpeg-devel
mailing list