Please use this version, change libavcodec to avcodec in the subject for consistent.
On Sun, Sep 01, 2019 at 10:48:22PM +0800, lance.lmw...@gmail.com wrote: > From: Limin Wang <lance.lmw...@gmail.com> > > Signed-off-by: Limin Wang <lance.lmw...@gmail.com> > --- > libavcodec/v210_template.c | 48 +++++++++++++++++++++++++++++++++++++++++ > libavcodec/v210enc.c | 54 > +++++++++++++--------------------------------- > 2 files changed, 63 insertions(+), 39 deletions(-) > create mode 100644 libavcodec/v210_template.c > > diff --git a/libavcodec/v210_template.c b/libavcodec/v210_template.c > new file mode 100644 > index 0000000..00036ae > --- /dev/null > +++ b/libavcodec/v210_template.c > @@ -0,0 +1,48 @@ > +/* > + * Copyright (C) 2009 Michael Niedermayer <michae...@gmx.at> > + * Copyright (c) 2009 Baptiste Coudurier <baptiste dot coudurier at gmail > dot com> > + * > + * This file is part of FFmpeg. > + * > + * FFmpeg is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * FFmpeg is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with FFmpeg; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > + */ > + > +#include "bytestream.h" > +#include "internal.h" > + > +#define CLIP(v, depth) av_clip(v, 1<<(depth-8), > ((1<<depth)-(1<<(depth-8))-1)) > +#define WRITE_PIXELS(a, b, c, depth) \ > + do { \ > + val = CLIP(*a++, depth) << (10-depth); \ > + val |= (CLIP(*b++, depth) << (20-depth)) | \ > + (CLIP(*c++, depth) << (30-depth)); \ > + AV_WL32(dst, val); \ > + dst += 4; \ > + } while (0) > + > +static void RENAME(v210_planar_pack)(const TYPE *y, > + const TYPE *u, const TYPE *v, > + uint8_t *dst, ptrdiff_t width) > +{ > + uint32_t val; > + int i; > + > + for (i = 0; i < width - 5; i += 6) { > + WRITE_PIXELS(u, y, v, DEPTH); > + WRITE_PIXELS(y, u, y, DEPTH); > + WRITE_PIXELS(v, y, u, DEPTH); > + WRITE_PIXELS(y, v, y, DEPTH); > + } > +} > diff --git a/libavcodec/v210enc.c b/libavcodec/v210enc.c > index 69a2efe..3e6abbe 100644 > --- a/libavcodec/v210enc.c > +++ b/libavcodec/v210enc.c > @@ -26,45 +26,21 @@ > #include "internal.h" > #include "v210enc.h" > > -#define CLIP(v, depth) av_clip(v, 1 << (depth-8), ((1 << depth)-(1 << > (depth-8))-1)) > -#define WRITE_PIXELS(a, b, c, depth) \ > - do { \ > - val = CLIP(*a++, depth) << (10-depth); \ > - val |= (CLIP(*b++, depth) << (20-depth)) | \ > - (CLIP(*c++, depth) << (30-depth)); \ > - AV_WL32(dst, val); \ > - dst += 4; \ > - } while (0) > - > -static void v210_planar_pack_8_c(const uint8_t *y, const uint8_t *u, > - const uint8_t *v, uint8_t *dst, > - ptrdiff_t width) > -{ > - uint32_t val; > - int i; > - > - for (i = 0; i < width - 5; i += 6) { > - WRITE_PIXELS(u, y, v, 8); > - WRITE_PIXELS(y, u, y, 8); > - WRITE_PIXELS(v, y, u, 8); > - WRITE_PIXELS(y, v, y, 8); > - } > -} > - > -static void v210_planar_pack_10_c(const uint16_t *y, const uint16_t *u, > - const uint16_t *v, uint8_t *dst, > - ptrdiff_t width) > -{ > - uint32_t val; > - int i; > - > - for (i = 0; i < width - 5; i += 6) { > - WRITE_PIXELS(u, y, v, 10); > - WRITE_PIXELS(y, u, y, 10); > - WRITE_PIXELS(v, y, u, 10); > - WRITE_PIXELS(y, v, y, 10); > - } > -} > +#define TYPE uint8_t > +#define DEPTH 8 > +#define RENAME(a) a ## _ ## 8 ## _c > +#include "v210_template.c" > +#undef TYPE > +#undef RENAME > +#undef DEPTH > + > +#define TYPE uint16_t > +#define DEPTH 10 > +#define RENAME(a) a ## _ ## 10 ## _c > +#include "v210_template.c" > +#undef TYPE > +#undef RENAME > +#undef DEPTH > > av_cold void ff_v210enc_init(V210EncContext *s) > { > -- > 2.6.4 > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".