Signed-off-by: Diego Biurrun <diego@biurrun.de>tags/n2.2-rc1
| @@ -611,8 +611,8 @@ OBJS-$(CONFIG_LIBVORBIS_ENCODER) += libvorbis.o \ | |||||
| vorbis_data.o vorbis_parser.o | vorbis_data.o vorbis_parser.o | ||||
| OBJS-$(CONFIG_LIBVPX_VP8_DECODER) += libvpxdec.o | OBJS-$(CONFIG_LIBVPX_VP8_DECODER) += libvpxdec.o | ||||
| OBJS-$(CONFIG_LIBVPX_VP8_ENCODER) += libvpxenc.o | OBJS-$(CONFIG_LIBVPX_VP8_ENCODER) += libvpxenc.o | ||||
| OBJS-$(CONFIG_LIBVPX_VP9_DECODER) += libvpxdec.o | |||||
| OBJS-$(CONFIG_LIBVPX_VP9_ENCODER) += libvpxenc.o | |||||
| OBJS-$(CONFIG_LIBVPX_VP9_DECODER) += libvpxdec.o libvpx.o | |||||
| OBJS-$(CONFIG_LIBVPX_VP9_ENCODER) += libvpxenc.o libvpx.o | |||||
| OBJS-$(CONFIG_LIBWAVPACK_ENCODER) += libwavpackenc.o | OBJS-$(CONFIG_LIBWAVPACK_ENCODER) += libwavpackenc.o | ||||
| OBJS-$(CONFIG_LIBX264_ENCODER) += libx264.o | OBJS-$(CONFIG_LIBX264_ENCODER) += libx264.o | ||||
| OBJS-$(CONFIG_LIBXAVS_ENCODER) += libxavs.o | OBJS-$(CONFIG_LIBXAVS_ENCODER) += libxavs.o | ||||
| @@ -0,0 +1,35 @@ | |||||
| /* | |||||
| * 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 <vpx/vpx_codec.h> | |||||
| #include "libvpx.h" | |||||
| int ff_vp9_check_experimental(AVCodecContext *avctx) | |||||
| { | |||||
| if (avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL && | |||||
| (vpx_codec_version_major() < 1 || | |||||
| (vpx_codec_version_major() == 1 && vpx_codec_version_minor() < 3))) { | |||||
| av_log(avctx, AV_LOG_ERROR, | |||||
| "Non-experimental support of VP9 requires libvpx >= 1.3.0\n"); | |||||
| return AVERROR_EXPERIMENTAL; | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| @@ -0,0 +1,28 @@ | |||||
| /* | |||||
| * 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 | |||||
| */ | |||||
| #ifndef AVCODEC_LIBVPX_H | |||||
| #define AVCODEC_LIBVPX_H | |||||
| #include "avcodec.h" | |||||
| int ff_vp9_check_experimental(AVCodecContext *avctx); | |||||
| #endif /* AVCODEC_LIBVPX_H */ | |||||
| @@ -31,6 +31,7 @@ | |||||
| #include "libavutil/imgutils.h" | #include "libavutil/imgutils.h" | ||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "internal.h" | #include "internal.h" | ||||
| #include "libvpx.h" | |||||
| typedef struct VP8DecoderContext { | typedef struct VP8DecoderContext { | ||||
| struct vpx_codec_ctx decoder; | struct vpx_codec_ctx decoder; | ||||
| @@ -132,6 +133,9 @@ AVCodec ff_libvpx_vp8_decoder = { | |||||
| #if CONFIG_LIBVPX_VP9_DECODER | #if CONFIG_LIBVPX_VP9_DECODER | ||||
| static av_cold int vp9_init(AVCodecContext *avctx) | static av_cold int vp9_init(AVCodecContext *avctx) | ||||
| { | { | ||||
| int ret; | |||||
| if ((ret = ff_vp9_check_experimental(avctx))) | |||||
| return ret; | |||||
| return vpx_init(avctx, &vpx_codec_vp9_dx_algo); | return vpx_init(avctx, &vpx_codec_vp9_dx_algo); | ||||
| } | } | ||||
| @@ -144,6 +148,6 @@ AVCodec ff_libvpx_vp9_decoder = { | |||||
| .init = vp9_init, | .init = vp9_init, | ||||
| .close = vp8_free, | .close = vp8_free, | ||||
| .decode = vp8_decode, | .decode = vp8_decode, | ||||
| .capabilities = CODEC_CAP_AUTO_THREADS | CODEC_CAP_EXPERIMENTAL, | |||||
| .capabilities = CODEC_CAP_AUTO_THREADS, | |||||
| }; | }; | ||||
| #endif /* CONFIG_LIBVPX_VP9_DECODER */ | #endif /* CONFIG_LIBVPX_VP9_DECODER */ | ||||
| @@ -30,6 +30,7 @@ | |||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "internal.h" | #include "internal.h" | ||||
| #include "libvpx.h" | |||||
| #include "libavutil/base64.h" | #include "libavutil/base64.h" | ||||
| #include "libavutil/common.h" | #include "libavutil/common.h" | ||||
| #include "libavutil/mathematics.h" | #include "libavutil/mathematics.h" | ||||
| @@ -605,6 +606,9 @@ AVCodec ff_libvpx_vp8_encoder = { | |||||
| #if CONFIG_LIBVPX_VP9_ENCODER | #if CONFIG_LIBVPX_VP9_ENCODER | ||||
| static av_cold int vp9_init(AVCodecContext *avctx) | static av_cold int vp9_init(AVCodecContext *avctx) | ||||
| { | { | ||||
| int ret; | |||||
| if ((ret = ff_vp9_check_experimental(avctx))) | |||||
| return ret; | |||||
| return vpx_init(avctx, &vpx_codec_vp9_cx_algo); | return vpx_init(avctx, &vpx_codec_vp9_cx_algo); | ||||
| } | } | ||||
| @@ -624,7 +628,7 @@ AVCodec ff_libvpx_vp9_encoder = { | |||||
| .init = vp9_init, | .init = vp9_init, | ||||
| .encode2 = vp8_encode, | .encode2 = vp8_encode, | ||||
| .close = vp8_free, | .close = vp8_free, | ||||
| .capabilities = CODEC_CAP_DELAY | CODEC_CAP_AUTO_THREADS | CODEC_CAP_EXPERIMENTAL, | |||||
| .capabilities = CODEC_CAP_DELAY | CODEC_CAP_AUTO_THREADS, | |||||
| .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, | .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, | ||||
| .priv_class = &class_vp9, | .priv_class = &class_vp9, | ||||
| .defaults = defaults, | .defaults = defaults, | ||||