--- libavcodec/libaom.c | 57 +------------- libavcodec/libaom.c_template.c | 111 +++++++++++++++++++++++++++ libavcodec/libaom.h | 10 +-- libavcodec/{libaom.h => libaom.h_template.c} | 13 +--- libavcodec/libvpx.c | 57 +------------- libavcodec/libvpx.h | 6 +- libavcodec/libvpxdec.c | 2 +- libavcodec/libvpxenc.c | 2 +- 8 files changed, 126 insertions(+), 132 deletions(-) create mode 100644 libavcodec/libaom.c_template.c copy libavcodec/{libaom.h => libaom.h_template.c} (72%)
diff --git a/libavcodec/libaom.c b/libavcodec/libaom.c index f8bcc37..fbf35a3 100644 --- a/libavcodec/libaom.c +++ b/libavcodec/libaom.c @@ -1,6 +1,4 @@ /* - * Copyright (c) 2013 Guillaume Martres <smar...@ubuntu.com> - * * This file is part of Libav. * * Libav is free software; you can redistribute it and/or @@ -18,58 +16,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <aom/aom_image.h> - #include "libaom.h" -enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img) -{ - switch (img) { - case AOM_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; - case AOM_IMG_FMT_RGB565: return AV_PIX_FMT_RGB565BE; - case AOM_IMG_FMT_RGB555: return AV_PIX_FMT_RGB555BE; - case AOM_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; - case AOM_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; - case AOM_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; - case AOM_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; - case AOM_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; - case AOM_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; - case AOM_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; - case AOM_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; - case AOM_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; - case AOM_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; - case AOM_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; - case AOM_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; - case AOM_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; - case AOM_IMG_FMT_I42016: return AV_PIX_FMT_YUV420P16BE; - case AOM_IMG_FMT_I42216: return AV_PIX_FMT_YUV422P16BE; - case AOM_IMG_FMT_I44416: return AV_PIX_FMT_YUV444P16BE; - default: return AV_PIX_FMT_NONE; - } -} +#include "libaom.c_template.c" -aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix) -{ - switch (pix) { - case AV_PIX_FMT_RGB24: return AOM_IMG_FMT_RGB24; - case AV_PIX_FMT_RGB565BE: return AOM_IMG_FMT_RGB565; - case AV_PIX_FMT_RGB555BE: return AOM_IMG_FMT_RGB555; - case AV_PIX_FMT_UYVY422: return AOM_IMG_FMT_UYVY; - case AV_PIX_FMT_YUYV422: return AOM_IMG_FMT_YUY2; - case AV_PIX_FMT_YVYU422: return AOM_IMG_FMT_YVYU; - case AV_PIX_FMT_BGR24: return AOM_IMG_FMT_BGR24; - case AV_PIX_FMT_ARGB: return AOM_IMG_FMT_ARGB; - case AV_PIX_FMT_BGRA: return AOM_IMG_FMT_ARGB_LE; - case AV_PIX_FMT_RGB565LE: return AOM_IMG_FMT_RGB565_LE; - case AV_PIX_FMT_RGB555LE: return AOM_IMG_FMT_RGB555_LE; - case AV_PIX_FMT_YUV420P: return AOM_IMG_FMT_I420; - case AV_PIX_FMT_YUV422P: return AOM_IMG_FMT_I422; - case AV_PIX_FMT_YUV444P: return AOM_IMG_FMT_I444; - case AV_PIX_FMT_YUVA444P: return AOM_IMG_FMT_444A; - case AV_PIX_FMT_YUV440P: return AOM_IMG_FMT_I440; - case AV_PIX_FMT_YUV420P16BE: return AOM_IMG_FMT_I42016; - case AV_PIX_FMT_YUV422P16BE: return AOM_IMG_FMT_I42216; - case AV_PIX_FMT_YUV444P16BE: return AOM_IMG_FMT_I44416; - default: return AOM_IMG_FMT_NONE; - } -} +FF_AOM_IMGFMT_TO_PIXFMT(TYPE, AOM) +FF_AOM_PIXFMT_TO_IMGFMT(TYPE, AOM) diff --git a/libavcodec/libaom.c_template.c b/libavcodec/libaom.c_template.c new file mode 100644 index 0000000..7b69580 --- /dev/null +++ b/libavcodec/libaom.c_template.c @@ -0,0 +1,111 @@ +/* + * This file is part of Libav. + * + * Libav 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. + * + * Libav 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 Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define FF_AOM_IMGFMT_TO_PIXFMT(TYPE, PREFIX) \ +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(TYPE img) \ +{ \ + switch (img) { \ + case PREFIX ## _IMG_FMT_RGB24: \ + return AV_PIX_FMT_RGB24; \ + case PREFIX ## _IMG_FMT_RGB565: \ + return AV_PIX_FMT_RGB565BE; \ + case PREFIX ## _IMG_FMT_RGB555: \ + return AV_PIX_FMT_RGB555BE; \ + case PREFIX ## _IMG_FMT_UYVY: \ + return AV_PIX_FMT_UYVY422; \ + case PREFIX ## _IMG_FMT_YUY2: \ + return AV_PIX_FMT_YUYV422; \ + case PREFIX ## _IMG_FMT_YVYU: \ + return AV_PIX_FMT_YVYU422; \ + case PREFIX ## _IMG_FMT_BGR24: \ + return AV_PIX_FMT_BGR24; \ + case PREFIX ## _IMG_FMT_ARGB: \ + return AV_PIX_FMT_ARGB; \ + case PREFIX ## _IMG_FMT_ARGB_LE: \ + return AV_PIX_FMT_BGRA; \ + case PREFIX ## _IMG_FMT_RGB565_LE: \ + return AV_PIX_FMT_RGB565LE; \ + case PREFIX ## _IMG_FMT_RGB555_LE: \ + return AV_PIX_FMT_RGB555LE; \ + case PREFIX ## _IMG_FMT_I420: \ + return AV_PIX_FMT_YUV420P; \ + case PREFIX ## _IMG_FMT_I422: \ + return AV_PIX_FMT_YUV422P; \ + case PREFIX ## _IMG_FMT_I444: \ + return AV_PIX_FMT_YUV444P; \ + case PREFIX ## _IMG_FMT_444A: \ + return AV_PIX_FMT_YUVA444P; \ + case PREFIX ## _IMG_FMT_I440: \ + return AV_PIX_FMT_YUV440P; \ + case PREFIX ## _IMG_FMT_I42016: \ + return AV_PIX_FMT_YUV420P16BE; \ + case PREFIX ## _IMG_FMT_I42216: \ + return AV_PIX_FMT_YUV422P16BE; \ + case PREFIX ## _IMG_FMT_I44416: \ + return AV_PIX_FMT_YUV444P16BE; \ + default: \ + return AV_PIX_FMT_NONE; \ + } \ +} + +#define FF_AOM_PIXFMT_TO_IMGFMT(TYPE, PREFIX) \ +TYPE ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix) \ +{ \ + switch (pix) { \ + case AV_PIX_FMT_RGB24: \ + return PREFIX ## _IMG_FMT_RGB24; \ + case AV_PIX_FMT_RGB565BE: \ + return PREFIX ## _IMG_FMT_RGB565; \ + case AV_PIX_FMT_RGB555BE: \ + return PREFIX ## _IMG_FMT_RGB555; \ + case AV_PIX_FMT_UYVY422: \ + return PREFIX ## _IMG_FMT_UYVY; \ + case AV_PIX_FMT_YUYV422: \ + return PREFIX ## _IMG_FMT_YUY2; \ + case AV_PIX_FMT_YVYU422: \ + return PREFIX ## _IMG_FMT_YVYU; \ + case AV_PIX_FMT_BGR24: \ + return PREFIX ## _IMG_FMT_BGR24; \ + case AV_PIX_FMT_ARGB: \ + return PREFIX ## _IMG_FMT_ARGB; \ + case AV_PIX_FMT_BGRA: \ + return PREFIX ## _IMG_FMT_ARGB_LE; \ + case AV_PIX_FMT_RGB565LE: \ + return PREFIX ## _IMG_FMT_RGB565_LE; \ + case AV_PIX_FMT_RGB555LE: \ + return PREFIX ## _IMG_FMT_RGB555_LE; \ + case AV_PIX_FMT_YUV420P: \ + return PREFIX ## _IMG_FMT_I420; \ + case AV_PIX_FMT_YUV422P: \ + return PREFIX ## _IMG_FMT_I422; \ + case AV_PIX_FMT_YUV444P: \ + return PREFIX ## _IMG_FMT_I444; \ + case AV_PIX_FMT_YUVA444P: \ + return PREFIX ## _IMG_FMT_444A; \ + case AV_PIX_FMT_YUV440P: \ + return PREFIX ## _IMG_FMT_I440; \ + case AV_PIX_FMT_YUV420P16BE: \ + return PREFIX ## _IMG_FMT_I42016; \ + case AV_PIX_FMT_YUV422P16BE: \ + return PREFIX ## _IMG_FMT_I42216; \ + case AV_PIX_FMT_YUV444P16BE: \ + return PREFIX ## _IMG_FMT_I44416; \ + default: \ + return PREFIX ## _IMG_FMT_NONE; \ + } \ +} diff --git a/libavcodec/libaom.h b/libavcodec/libaom.h index 7a7b8db..eebc672 100644 --- a/libavcodec/libaom.h +++ b/libavcodec/libaom.h @@ -1,6 +1,4 @@ /* - * Copyright (c) 2013 Guillaume Martres <smar...@ubuntu.com> - * * This file is part of Libav. * * Libav is free software; you can redistribute it and/or @@ -21,11 +19,9 @@ #ifndef AVCODEC_LIBAOM_H #define AVCODEC_LIBAOM_H -#include <aom/aom_codec.h> - -#include "libavutil/pixfmt.h" +#include <aom/aom_image.h> -enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img); -aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix); +#define TYPE aom_img_fmt_t +#include "libaom.h_template.c" #endif /* AVCODEC_LIBAOM_H */ diff --git a/libavcodec/libaom.h b/libavcodec/libaom.h_template.c similarity index 72% copy from libavcodec/libaom.h copy to libavcodec/libaom.h_template.c index 7a7b8db..3ad2f14 100644 --- a/libavcodec/libaom.h +++ b/libavcodec/libaom.h_template.c @@ -1,6 +1,4 @@ /* - * Copyright (c) 2013 Guillaume Martres <smar...@ubuntu.com> - * * This file is part of Libav. * * Libav is free software; you can redistribute it and/or @@ -18,14 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef AVCODEC_LIBAOM_H -#define AVCODEC_LIBAOM_H - -#include <aom/aom_codec.h> - #include "libavutil/pixfmt.h" -enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img); -aom_img_fmt_t ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix); - -#endif /* AVCODEC_LIBAOM_H */ +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(TYPE img); +TYPE ff_aom_pixfmt_to_imgfmt(enum AVPixelFormat pix); diff --git a/libavcodec/libvpx.c b/libavcodec/libvpx.c index cb07177..014935b 100644 --- a/libavcodec/libvpx.c +++ b/libavcodec/libvpx.c @@ -1,6 +1,4 @@ /* - * Copyright (c) 2013 Guillaume Martres <smar...@ubuntu.com> - * * This file is part of Libav. * * Libav is free software; you can redistribute it and/or @@ -18,58 +16,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <vpx/vpx_codec.h> - #include "libvpx.h" -enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt_t img) -{ - switch (img) { - case VPX_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; - case VPX_IMG_FMT_RGB565: return AV_PIX_FMT_RGB565BE; - case VPX_IMG_FMT_RGB555: return AV_PIX_FMT_RGB555BE; - case VPX_IMG_FMT_UYVY: return AV_PIX_FMT_UYVY422; - case VPX_IMG_FMT_YUY2: return AV_PIX_FMT_YUYV422; - case VPX_IMG_FMT_YVYU: return AV_PIX_FMT_YVYU422; - case VPX_IMG_FMT_BGR24: return AV_PIX_FMT_BGR24; - case VPX_IMG_FMT_ARGB: return AV_PIX_FMT_ARGB; - case VPX_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; - case VPX_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; - case VPX_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; - case VPX_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; - case VPX_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; - case VPX_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; - case VPX_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; - case VPX_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; - case VPX_IMG_FMT_I42016: return AV_PIX_FMT_YUV420P16BE; - case VPX_IMG_FMT_I42216: return AV_PIX_FMT_YUV422P16BE; - case VPX_IMG_FMT_I44416: return AV_PIX_FMT_YUV444P16BE; - default: return AV_PIX_FMT_NONE; - } -} +#include "libaom.c_template.c" -vpx_img_fmt_t ff_vpx_pixfmt_to_imgfmt(enum AVPixelFormat pix) -{ - switch (pix) { - case AV_PIX_FMT_RGB24: return VPX_IMG_FMT_RGB24; - case AV_PIX_FMT_RGB565BE: return VPX_IMG_FMT_RGB565; - case AV_PIX_FMT_RGB555BE: return VPX_IMG_FMT_RGB555; - case AV_PIX_FMT_UYVY422: return VPX_IMG_FMT_UYVY; - case AV_PIX_FMT_YUYV422: return VPX_IMG_FMT_YUY2; - case AV_PIX_FMT_YVYU422: return VPX_IMG_FMT_YVYU; - case AV_PIX_FMT_BGR24: return VPX_IMG_FMT_BGR24; - case AV_PIX_FMT_ARGB: return VPX_IMG_FMT_ARGB; - case AV_PIX_FMT_BGRA: return VPX_IMG_FMT_ARGB_LE; - case AV_PIX_FMT_RGB565LE: return VPX_IMG_FMT_RGB565_LE; - case AV_PIX_FMT_RGB555LE: return VPX_IMG_FMT_RGB555_LE; - case AV_PIX_FMT_YUV420P: return VPX_IMG_FMT_I420; - case AV_PIX_FMT_YUV422P: return VPX_IMG_FMT_I422; - case AV_PIX_FMT_YUV444P: return VPX_IMG_FMT_I444; - case AV_PIX_FMT_YUVA444P: return VPX_IMG_FMT_444A; - case AV_PIX_FMT_YUV440P: return VPX_IMG_FMT_I440; - case AV_PIX_FMT_YUV420P16BE: return VPX_IMG_FMT_I42016; - case AV_PIX_FMT_YUV422P16BE: return VPX_IMG_FMT_I42216; - case AV_PIX_FMT_YUV444P16BE: return VPX_IMG_FMT_I44416; - default: return VPX_IMG_FMT_NONE; - } -} +FF_AOM_IMGFMT_TO_PIXFMT(TYPE, VPX) +FF_AOM_PIXFMT_TO_IMGFMT(TYPE, VPX) diff --git a/libavcodec/libvpx.h b/libavcodec/libvpx.h index b437f37..7494ab7 100644 --- a/libavcodec/libvpx.h +++ b/libavcodec/libvpx.h @@ -23,9 +23,7 @@ #include <vpx/vpx_codec.h> -#include "avcodec.h" - -enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt_t img); -vpx_img_fmt_t ff_vpx_pixfmt_to_imgfmt(enum AVPixelFormat pix); +#define TYPE vpx_img_fmt_t +#include "libaom.h_template.c" #endif /* AVCODEC_LIBVPX_H */ diff --git a/libavcodec/libvpxdec.c b/libavcodec/libvpxdec.c index 93a720f..43484ef 100644 --- a/libavcodec/libvpxdec.c +++ b/libavcodec/libvpxdec.c @@ -81,7 +81,7 @@ static int vp8_decode(AVCodecContext *avctx, } if ((img = vpx_codec_get_frame(&ctx->decoder, &iter))) { - avctx->pix_fmt = ff_vpx_imgfmt_to_pixfmt(img->fmt); + avctx->pix_fmt = ff_aom_imgfmt_to_pixfmt(img->fmt); if (avctx->pix_fmt == AV_PIX_FMT_NONE) { av_log(avctx, AV_LOG_ERROR, "Unsupported output colorspace (%d)\n", img->fmt); diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index c6c9105..4044ccd 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -375,7 +375,7 @@ FF_ENABLE_DEPRECATION_WARNINGS codecctl_int(avctx, VP8E_SET_CQ_LEVEL, ctx->crf); //provide dummy value to initialize wrapper, values will be updated each _encode() - vpx_img_wrap(&ctx->rawimg, ff_vpx_pixfmt_to_imgfmt(avctx->pix_fmt), + vpx_img_wrap(&ctx->rawimg, ff_aom_pixfmt_to_imgfmt(avctx->pix_fmt), avctx->width, avctx->height, 1, (unsigned char *)1); cpb_props = ff_add_cpb_side_data(avctx); -- 2.7.3 _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel