From 2d40a09b6e73230b160a505f01ed1acf169e1d9f Mon Sep 17 00:00:00 2001 From: Kieran Kunhya Date: Sun, 24 Jan 2016 15:54:00 +0000 Subject: [PATCH] avformat: Remove support for libquvi libquvi has not been updated since 2013. It also has a number of security issues. --- configure | 4 - doc/demuxers.texi | 12 --- libavformat/Makefile | 1 - libavformat/allformats.c | 1 - libavformat/libquvi.c | 179 --------------------------------------- libavformat/version.h | 2 +- 6 files changed, 1 insertion(+), 198 deletions(-) delete mode 100644 libavformat/libquvi.c diff --git a/configure b/configure index f7d10004d5..35e3513488 100755 --- a/configure +++ b/configure @@ -241,7 +241,6 @@ External library support: --enable-libopus enable Opus de/encoding via libopus [no] --enable-libpulse enable Pulseaudio input via libpulse [no] --enable-librubberband enable rubberband needed for rubberband filter [no] - --enable-libquvi enable quvi input via libquvi [no] --enable-librtmp enable RTMP[E] support via librtmp [no] --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no] --enable-libshine enable fixed-point MP3 encoding via libshine [no] @@ -1467,7 +1466,6 @@ EXTERNAL_LIBRARY_LIST=" libopenjpeg libopus libpulse - libquvi librtmp librubberband libschroedinger @@ -2632,7 +2630,6 @@ libopenjpeg_encoder_deps="libopenjpeg" libopus_decoder_deps="libopus" libopus_encoder_deps="libopus" libopus_encoder_select="audio_frame_queue" -libquvi_demuxer_deps="libquvi" libschroedinger_decoder_deps="libschroedinger" libschroedinger_encoder_deps="libschroedinger" libshine_encoder_deps="libshine" @@ -5473,7 +5470,6 @@ enabled libopenjpeg && { check_lib openjpeg-2.1/openjpeg.h opj_version -lo die "ERROR: libopenjpeg not found"; } enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create enabled libpulse && require_pkg_config libpulse pulse/pulseaudio.h pa_context_new -enabled libquvi && require_pkg_config libquvi quvi/quvi.h quvi_init enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket enabled librubberband && require_pkg_config "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init diff --git a/doc/demuxers.texi b/doc/demuxers.texi index 094edc2c40..188808b9c0 100644 --- a/doc/demuxers.texi +++ b/doc/demuxers.texi @@ -238,18 +238,6 @@ track. Track indexes start at 0. The demuxer exports the number of tracks as For very large files, the @option{max_size} option may have to be adjusted. -@section libquvi - -Play media from Internet services using the quvi project. - -The demuxer accepts a @option{format} option to request a specific quality. It -is by default set to @var{best}. - -See @url{http://quvi.sourceforge.net/} for more information. - -FFmpeg needs to be built with @code{--enable-libquvi} for this demuxer to be -enabled. - @section gif Animated GIF demuxer. diff --git a/libavformat/Makefile b/libavformat/Makefile index e03c73ef9e..35a383d3fa 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -508,7 +508,6 @@ OBJS-$(CONFIG_LIBGME_DEMUXER) += libgme.o OBJS-$(CONFIG_LIBMODPLUG_DEMUXER) += libmodplug.o OBJS-$(CONFIG_LIBNUT_DEMUXER) += libnut.o OBJS-$(CONFIG_LIBNUT_MUXER) += libnut.o -OBJS-$(CONFIG_LIBQUVI_DEMUXER) += libquvi.o OBJS-$(CONFIG_LIBRTMP) += librtmp.o OBJS-$(CONFIG_LIBSSH_PROTOCOL) += libssh.o OBJS-$(CONFIG_LIBSMBCLIENT_PROTOCOL) += libsmbclient.o diff --git a/libavformat/allformats.c b/libavformat/allformats.c index dabfa34acd..02bb16a71e 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -411,7 +411,6 @@ void av_register_all(void) REGISTER_DEMUXER (LIBGME, libgme); REGISTER_DEMUXER (LIBMODPLUG, libmodplug); REGISTER_MUXDEMUX(LIBNUT, libnut); - REGISTER_DEMUXER (LIBQUVI, libquvi); REGISTER_PROTOCOL(LIBRTMP, librtmp); REGISTER_PROTOCOL(LIBRTMPE, librtmpe); REGISTER_PROTOCOL(LIBRTMPS, librtmps); diff --git a/libavformat/libquvi.c b/libavformat/libquvi.c deleted file mode 100644 index 1e5c8bc525..0000000000 --- a/libavformat/libquvi.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (c) 2013 Clément Bœsch - * - * 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 - -#include "libavformat/avformat.h" -#include "libavformat/internal.h" -#include "libavutil/avassert.h" -#include "libavutil/opt.h" - -typedef struct { - const AVClass *class; - char *format; - AVFormatContext *fmtctx; -} LibQuviContext; - -#define OFFSET(x) offsetof(LibQuviContext, x) -#define FLAGS AV_OPT_FLAG_DECODING_PARAM -static const AVOption libquvi_options[] = { - { "format", "request specific format", OFFSET(format), AV_OPT_TYPE_STRING, {.str="best"}, .flags = FLAGS }, - { NULL } -}; - -static const AVClass libquvi_context_class = { - .class_name = "libquvi", - .item_name = av_default_item_name, - .option = libquvi_options, - .version = LIBAVUTIL_VERSION_INT, -}; - -static int libquvi_close(AVFormatContext *s) -{ - LibQuviContext *qc = s->priv_data; - if (qc->fmtctx) - avformat_close_input(&qc->fmtctx); - return 0; -} - -static int libquvi_read_header(AVFormatContext *s) -{ - int i, ret; - quvi_t q; - quvi_media_t m; - QUVIcode rc; - LibQuviContext *qc = s->priv_data; - char *media_url, *pagetitle; - - rc = quvi_init(&q); - if (rc != QUVI_OK) { - av_log(s, AV_LOG_ERROR, "%s\n", quvi_strerror(q, rc)); - return AVERROR_EXTERNAL; - } - - quvi_setopt(q, QUVIOPT_FORMAT, qc->format); - - rc = quvi_parse(q, s->filename, &m); - if (rc != QUVI_OK) { - av_log(s, AV_LOG_ERROR, "%s\n", quvi_strerror(q, rc)); - ret = AVERROR_EXTERNAL; - goto err_quvi_close; - } - - rc = quvi_getprop(m, QUVIPROP_MEDIAURL, &media_url); - if (rc != QUVI_OK) { - av_log(s, AV_LOG_ERROR, "%s\n", quvi_strerror(q, rc)); - ret = AVERROR_EXTERNAL; - goto err_quvi_cleanup; - } - - if (!(qc->fmtctx = avformat_alloc_context())) { - ret = AVERROR(ENOMEM); - goto err_quvi_cleanup; - } - - if ((ret = ff_copy_whitelists(qc->fmtctx, s)) < 0) { - avformat_free_context(qc->fmtctx); - qc->fmtctx = NULL; - goto err_quvi_cleanup; - } - - if (!qc->fmtctx->format_whitelist) { - qc->fmtctx->format_whitelist = av_strdup("avi,asf,flv,mov,mpeg,mpegts,aac,h264,hevc,mp3,ogg,matroska,mxf,mp2"); - if (!qc->fmtctx->format_whitelist) { - avformat_free_context(qc->fmtctx); - qc->fmtctx = NULL; - goto err_quvi_cleanup; - } - } - if (strncmp(media_url, "http:", 5) && strncmp(media_url, "https:", 6)) { - avformat_free_context(qc->fmtctx); - qc->fmtctx = NULL; - goto err_quvi_cleanup; - } - - ret = avformat_open_input(&qc->fmtctx, media_url, NULL, NULL); - if (ret < 0) - goto err_quvi_cleanup; - - rc = quvi_getprop(m, QUVIPROP_PAGETITLE, &pagetitle); - if (rc == QUVI_OK) - av_dict_set(&s->metadata, "title", pagetitle, 0); - - for (i = 0; i < qc->fmtctx->nb_streams; i++) { - AVStream *st = avformat_new_stream(s, NULL); - AVStream *ist = qc->fmtctx->streams[i]; - if (!st) { - ret = AVERROR(ENOMEM); - goto err_close_input; - } - avpriv_set_pts_info(st, ist->pts_wrap_bits, ist->time_base.num, ist->time_base.den); - avcodec_copy_context(st->codec, qc->fmtctx->streams[i]->codec); - } - - return 0; - - err_close_input: - avformat_close_input(&qc->fmtctx); - err_quvi_cleanup: - quvi_parse_close(&m); - err_quvi_close: - quvi_close(&q); - return ret; -} - -static int libquvi_read_packet(AVFormatContext *s, AVPacket *pkt) -{ - LibQuviContext *qc = s->priv_data; - return av_read_frame(qc->fmtctx, pkt); -} - -static int libquvi_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) -{ - LibQuviContext *qc = s->priv_data; - return av_seek_frame(qc->fmtctx, stream_index, timestamp, flags); -} - -static int libquvi_probe(AVProbeData *p) -{ - int score; - quvi_t q; - QUVIcode rc; - - rc = quvi_init(&q); - if (rc != QUVI_OK) - return AVERROR(ENOMEM); - score = quvi_supported(q, (char *)p->filename) == QUVI_OK ? AVPROBE_SCORE_EXTENSION : 0; - quvi_close(&q); - return score; -} - -AVInputFormat ff_libquvi_demuxer = { - .name = "libquvi", - .long_name = NULL_IF_CONFIG_SMALL("libquvi demuxer"), - .priv_data_size = sizeof(LibQuviContext), - .read_probe = libquvi_probe, - .read_header = libquvi_read_header, - .read_packet = libquvi_read_packet, - .read_close = libquvi_close, - .read_seek = libquvi_read_seek, - .priv_class = &libquvi_context_class, - .flags = AVFMT_NOFILE, -}; diff --git a/libavformat/version.h b/libavformat/version.h index a4feab828d..ebfe2ccacd 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -30,7 +30,7 @@ #include "libavutil/version.h" #define LIBAVFORMAT_VERSION_MAJOR 57 -#define LIBAVFORMAT_VERSION_MINOR 22 +#define LIBAVFORMAT_VERSION_MINOR 23 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \