mirror of
https://github.com/librempeg/librempeg
synced 2024-11-23 11:39:47 +00:00
libvpx: do not mark VP9 as experimental when using libvpx >= 1.3.0
Signed-off-by: Diego Biurrun <diego@biurrun.de>
This commit is contained in:
parent
b6a9719941
commit
9aa053cede
@ -611,8 +611,8 @@ OBJS-$(CONFIG_LIBVORBIS_ENCODER) += libvorbis.o \
|
||||
vorbis_data.o vorbis_parser.o
|
||||
OBJS-$(CONFIG_LIBVPX_VP8_DECODER) += libvpxdec.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_LIBX264_ENCODER) += libx264.o
|
||||
OBJS-$(CONFIG_LIBXAVS_ENCODER) += libxavs.o
|
||||
|
35
libavcodec/libvpx.c
Normal file
35
libavcodec/libvpx.c
Normal file
@ -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;
|
||||
}
|
28
libavcodec/libvpx.h
Normal file
28
libavcodec/libvpx.h
Normal file
@ -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 "avcodec.h"
|
||||
#include "internal.h"
|
||||
#include "libvpx.h"
|
||||
|
||||
typedef struct VP8DecoderContext {
|
||||
struct vpx_codec_ctx decoder;
|
||||
@ -132,6 +133,9 @@ AVCodec ff_libvpx_vp8_decoder = {
|
||||
#if CONFIG_LIBVPX_VP9_DECODER
|
||||
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);
|
||||
}
|
||||
|
||||
@ -144,6 +148,6 @@ AVCodec ff_libvpx_vp9_decoder = {
|
||||
.init = vp9_init,
|
||||
.close = vp8_free,
|
||||
.decode = vp8_decode,
|
||||
.capabilities = CODEC_CAP_AUTO_THREADS | CODEC_CAP_EXPERIMENTAL,
|
||||
.capabilities = CODEC_CAP_AUTO_THREADS,
|
||||
};
|
||||
#endif /* CONFIG_LIBVPX_VP9_DECODER */
|
||||
|
@ -30,6 +30,7 @@
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "internal.h"
|
||||
#include "libvpx.h"
|
||||
#include "libavutil/base64.h"
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/mathematics.h"
|
||||
@ -605,6 +606,9 @@ AVCodec ff_libvpx_vp8_encoder = {
|
||||
#if CONFIG_LIBVPX_VP9_ENCODER
|
||||
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);
|
||||
}
|
||||
|
||||
@ -624,7 +628,7 @@ AVCodec ff_libvpx_vp9_encoder = {
|
||||
.init = vp9_init,
|
||||
.encode2 = vp8_encode,
|
||||
.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 },
|
||||
.priv_class = &class_vp9,
|
||||
.defaults = defaults,
|
||||
|
Loading…
Reference in New Issue
Block a user