diff options
Diffstat (limited to 'libavcodec/libaom.c')
-rw-r--r-- | libavcodec/libaom.c | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/libavcodec/libaom.c b/libavcodec/libaom.c new file mode 100644 index 0000000000..220b1bd245 --- /dev/null +++ b/libavcodec/libaom.c @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2013 Guillaume Martres <smarter@ubuntu.com> + * + * 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 + */ + +#include <aom/aom_image.h> + +#include "libaom.h" + +#define HIGH_DEPTH(fmt) \ +case AOM_IMG_FMT_I ## fmt ## 16: \ + switch (depth) { \ + case 8: \ + return AV_PIX_FMT_YUV ## fmt ## P; \ + case 10: \ + return AV_PIX_FMT_YUV ## fmt ## P10; \ + case 12: \ + return AV_PIX_FMT_YUV ## fmt ## P12; \ + default: \ + return AV_PIX_FMT_NONE; \ + } + +enum AVPixelFormat ff_aom_imgfmt_to_pixfmt(aom_img_fmt_t img, int depth) +{ + 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; + HIGH_DEPTH(420) + HIGH_DEPTH(422) + HIGH_DEPTH(444) + default: + return AV_PIX_FMT_NONE; + } +} + +#undef HIGH_DEPTH + +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_YUV420P10: + return AOM_IMG_FMT_I42016; + case AV_PIX_FMT_YUV422P10: + return AOM_IMG_FMT_I42216; + case AV_PIX_FMT_YUV444P10: + return AOM_IMG_FMT_I44416; + case AV_PIX_FMT_YUV420P12: + return AOM_IMG_FMT_I42016; + case AV_PIX_FMT_YUV422P12: + return AOM_IMG_FMT_I42216; + case AV_PIX_FMT_YUV444P12: + return AOM_IMG_FMT_I44416; + default: + return AOM_IMG_FMT_NONE; + } +} |