[FFmpeg-cvslog] Remove libdirac decoder.

Diego Biurrun git at videolan.org
Tue Apr 24 02:43:16 CEST 2012


ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Sat Apr 14 14:54:03 2012 +0200| [a229d6c2856a03654942ad8cb8a77003f688fea2] | committer: Diego Biurrun

Remove libdirac decoder.

libschroedinger is the preferred way to decode Dirac video.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a229d6c2856a03654942ad8cb8a77003f688fea2
---

 configure                |    7 --
 doc/general.texi         |    2 +-
 doc/platform.texi        |    5 +-
 libavcodec/Makefile      |    2 -
 libavcodec/allcodecs.c   |    1 -
 libavcodec/libdirac.h    |   44 ----------
 libavcodec/libdiracdec.c |  208 ----------------------------------------------
 7 files changed, 3 insertions(+), 266 deletions(-)

diff --git a/configure b/configure
index 172e1d6..a73d666 100755
--- a/configure
+++ b/configure
@@ -171,7 +171,6 @@ External library support:
   --enable-libcdio         enable audio CD grabbing with libcdio
   --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
                            and libraw1394 [no]
-  --enable-libdirac        enable Dirac support via libdirac [no]
   --enable-libfaac         enable FAAC support via libfaac [no]
   --enable-libfreetype     enable libfreetype [no]
   --enable-libgsm          enable GSM support via libgsm [no]
@@ -943,7 +942,6 @@ CONFIG_LIST="
     hardcoded_tables
     libcdio
     libdc1394
-    libdirac
     libfaac
     libfreetype
     libgsm
@@ -1422,7 +1420,6 @@ vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
 h264_parser_select="golomb h264dsp h264pred"
 
 # external libraries
-libdirac_decoder_deps="libdirac !libschroedinger"
 libfaac_encoder_deps="libfaac"
 libgsm_decoder_deps="libgsm"
 libgsm_encoder_deps="libgsm"
@@ -2963,9 +2960,6 @@ check_mathfunc truncf
 enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
 enabled frei0r     && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
 enabled gnutls     && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
-enabled libdirac   && require_pkg_config dirac                          \
-    "libdirac_decoder/dirac_parser.h"  \
-    "dirac_decoder_init"
 enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
 enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
 enabled libgsm     && require  libgsm gsm/gsm.h gsm_create -lgsm
@@ -3255,7 +3249,6 @@ echo "frei0r enabled            ${frei0r-no}"
 echo "gnutls enabled            ${gnutls-no}"
 echo "libcdio support           ${libcdio-no}"
 echo "libdc1394 support         ${libdc1394-no}"
-echo "libdirac enabled          ${libdirac-no}"
 echo "libfaac enabled           ${libfaac-no}"
 echo "libgsm enabled            ${libgsm-no}"
 echo "libmp3lame enabled        ${libmp3lame-no}"
diff --git a/doc/general.texi b/doc/general.texi
index 0c14003..090e4c5 100644
--- a/doc/general.texi
+++ b/doc/general.texi
@@ -454,7 +454,7 @@ following image formats are supported:
 @item DFA                    @tab     @tab  X
     @tab Codec used in Chronomaster game.
 @item Dirac                  @tab  E  @tab  E
-    @tab supported through external libdirac/libschroedinger libraries
+    @tab supported through external library libschroedinger
 @item Deluxe Paint Animation @tab     @tab  X
 @item DNxHD                  @tab   X @tab  X
     @tab aka SMPTE VC3
diff --git a/doc/platform.texi b/doc/platform.texi
index 7ec7cb3..97e97c2 100644
--- a/doc/platform.texi
+++ b/doc/platform.texi
@@ -323,9 +323,8 @@ These library packages are only available from
 @uref{http://sourceware.org/cygwinports/, Cygwin Ports}:
 
 @example
-yasm, libSDL-devel, libdirac-devel, libfaac-devel, libgsm-devel,
-libmp3lame-devel, libschroedinger1.0-devel, speex-devel, libtheora-devel,
-libxvidcore-devel
+yasm, libSDL-devel, libfaac-devel, libgsm-devel, libmp3lame-devel,
+libschroedinger1.0-devel, speex-devel, libtheora-devel, libxvidcore-devel
 @end example
 
 The recommendation for libnut and x264 is to build them from source by
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index b3309e5..657f6a0 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -582,7 +582,6 @@ OBJS-$(CONFIG_WEBM_MUXER)              += xiph.o mpeg4audio.o \
 OBJS-$(CONFIG_WTV_DEMUXER)             += mpeg4audio.o mpegaudiodata.o
 
 # external codec libraries
-OBJS-$(CONFIG_LIBDIRAC_DECODER)           += libdiracdec.o
 OBJS-$(CONFIG_LIBFAAC_ENCODER)            += libfaac.o audio_frame_queue.o
 OBJS-$(CONFIG_LIBGSM_DECODER)             += libgsm.o
 OBJS-$(CONFIG_LIBGSM_ENCODER)             += libgsm.o
@@ -692,7 +691,6 @@ SKIPHEADERS                            += %_tablegen.h                  \
                                           tableprint.h                  \
                                           $(ARCH)/vp56_arith.h
 SKIPHEADERS-$(CONFIG_DXVA2)            += dxva2.h dxva2_internal.h
-SKIPHEADERS-$(CONFIG_LIBDIRAC)         += libdirac.h
 SKIPHEADERS-$(CONFIG_LIBSCHROEDINGER)  += libschroedinger.h
 SKIPHEADERS-$(CONFIG_MPEG_XVMC_DECODER) += xvmc.h
 SKIPHEADERS-$(CONFIG_VAAPI)            += vaapi_internal.h
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 0b519bb..a1df47a 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -375,7 +375,6 @@ void avcodec_register_all(void)
     REGISTER_ENCDEC  (XSUB, xsub);
 
     /* external libraries */
-    REGISTER_DECODER (LIBDIRAC, libdirac);
     REGISTER_ENCODER (LIBFAAC, libfaac);
     REGISTER_ENCDEC  (LIBGSM, libgsm);
     REGISTER_ENCDEC  (LIBGSM_MS, libgsm_ms);
diff --git a/libavcodec/libdirac.h b/libavcodec/libdirac.h
deleted file mode 100644
index 4403fb2..0000000
--- a/libavcodec/libdirac.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2008 BBC, Anuradha Suraparaju <asuraparaju at gmail dot 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
- */
-
-/**
-* @file
-* data structures common to libdirac encoder and decoder
-*/
-
-#ifndef AVCODEC_LIBDIRAC_H
-#define AVCODEC_LIBDIRAC_H
-
-#include "avcodec.h"
-#include <libdirac_common/dirac_types.h>
-
-/**
-* Table providing a Dirac chroma format to Libav pixel format mapping.
-*/
-static const struct {
-    enum PixelFormat ff_pix_fmt;
-    dirac_chroma_t dirac_pix_fmt;
-} dirac_pixel_format_map[] = {
-    { PIX_FMT_YUV420P, format420 },
-    { PIX_FMT_YUV422P, format422 },
-    { PIX_FMT_YUV444P, format444 },
-};
-
-#endif /* AVCODEC_LIBDIRAC_H */
diff --git a/libavcodec/libdiracdec.c b/libavcodec/libdiracdec.c
deleted file mode 100644
index cbd2985..0000000
--- a/libavcodec/libdiracdec.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Dirac decoder support via libdirac library
- * Copyright (c) 2005 BBC, Andrew Kennedy <dirac at rd dot bbc dot co dot uk>
- * Copyright (c) 2006-2008 BBC, Anuradha Suraparaju <asuraparaju at gmail dot 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
- */
-
-/**
-* @file
-* Dirac decoder support via libdirac library; more details about the Dirac
-* project can be found at http://dirac.sourceforge.net/.
-* The libdirac_decoder library implements Dirac specification version 2.2
-* (http://dirac.sourceforge.net/specification.html).
-*/
-
-#include "libavutil/imgutils.h"
-#include "libdirac.h"
-
-#undef NDEBUG
-#include <assert.h>
-
-#include <libdirac_decoder/dirac_parser.h>
-
-/** contains a single frame returned from Dirac */
-typedef struct DiracDecoderParams {
-    /** decoder handle */
-    dirac_decoder_t* p_decoder;
-
-    /** buffer to hold decoded frame */
-    unsigned char* p_out_frame_buf;
-} DiracDecoderParams;
-
-
-/**
-* returns Libav chroma format
-*/
-static enum PixelFormat get_chroma_format(dirac_chroma_t dirac_pix_fmt)
-{
-    int num_formats = sizeof(dirac_pixel_format_map) /
-                      sizeof(dirac_pixel_format_map[0]);
-    int idx;
-
-    for (idx = 0; idx < num_formats; ++idx)
-        if (dirac_pixel_format_map[idx].dirac_pix_fmt == dirac_pix_fmt)
-            return dirac_pixel_format_map[idx].ff_pix_fmt;
-    return PIX_FMT_NONE;
-}
-
-static av_cold int libdirac_decode_init(AVCodecContext *avccontext)
-{
-
-    DiracDecoderParams *p_dirac_params = avccontext->priv_data;
-    p_dirac_params->p_decoder =  dirac_decoder_init(avccontext->debug);
-
-    if (!p_dirac_params->p_decoder)
-        return -1;
-
-    return 0;
-}
-
-static int libdirac_decode_frame(AVCodecContext *avccontext,
-                                 void *data, int *data_size,
-                                 AVPacket *avpkt)
-{
-    const uint8_t *buf = avpkt->data;
-    int buf_size = avpkt->size;
-
-    DiracDecoderParams *p_dirac_params = avccontext->priv_data;
-    AVPicture *picture = data;
-    AVPicture pic;
-    int pict_size;
-    unsigned char *buffer[3];
-
-    *data_size = 0;
-
-    if (buf_size > 0) {
-        /* set data to decode into buffer */
-        dirac_buffer(p_dirac_params->p_decoder, buf, buf + buf_size);
-        if ((buf[4] & 0x08) == 0x08 && (buf[4] & 0x03))
-            avccontext->has_b_frames = 1;
-    }
-    while (1) {
-         /* parse data and process result */
-        DecoderState state = dirac_parse(p_dirac_params->p_decoder);
-        switch (state) {
-        case STATE_BUFFER:
-            return buf_size;
-
-        case STATE_SEQUENCE:
-        {
-            /* tell Libav about sequence details */
-            dirac_sourceparams_t *src_params = &p_dirac_params->p_decoder->src_params;
-
-            if (av_image_check_size(src_params->width, src_params->height,
-                                    0, avccontext) < 0) {
-                av_log(avccontext, AV_LOG_ERROR, "Invalid dimensions (%dx%d)\n",
-                       src_params->width, src_params->height);
-                avccontext->height = avccontext->width = 0;
-                return -1;
-            }
-
-            avccontext->height = src_params->height;
-            avccontext->width  = src_params->width;
-
-            avccontext->pix_fmt = get_chroma_format(src_params->chroma);
-            if (avccontext->pix_fmt == PIX_FMT_NONE) {
-                av_log(avccontext, AV_LOG_ERROR,
-                       "Dirac chroma format %d not supported currently\n",
-                       src_params->chroma);
-                return -1;
-            }
-
-            avccontext->time_base.den = src_params->frame_rate.numerator;
-            avccontext->time_base.num = src_params->frame_rate.denominator;
-
-            /* calculate output dimensions */
-            avpicture_fill(&pic, NULL, avccontext->pix_fmt,
-                           avccontext->width, avccontext->height);
-
-            pict_size = avpicture_get_size(avccontext->pix_fmt,
-                                           avccontext->width,
-                                           avccontext->height);
-
-            /* allocate output buffer */
-            if (!p_dirac_params->p_out_frame_buf)
-                p_dirac_params->p_out_frame_buf = av_malloc(pict_size);
-            buffer[0] = p_dirac_params->p_out_frame_buf;
-            buffer[1] = p_dirac_params->p_out_frame_buf +
-                        pic.linesize[0] * avccontext->height;
-            buffer[2] = buffer[1] +
-                        pic.linesize[1] * src_params->chroma_height;
-
-            /* tell Dirac about output destination */
-            dirac_set_buf(p_dirac_params->p_decoder, buffer, NULL);
-            break;
-        }
-        case STATE_SEQUENCE_END:
-            break;
-
-        case STATE_PICTURE_AVAIL:
-            /* fill picture with current buffer data from Dirac */
-            avpicture_fill(picture, p_dirac_params->p_out_frame_buf,
-                           avccontext->pix_fmt,
-                           avccontext->width, avccontext->height);
-            *data_size = sizeof(AVPicture);
-            return buf_size;
-
-        case STATE_INVALID:
-            return -1;
-
-        default:
-            break;
-        }
-    }
-
-    return buf_size;
-}
-
-
-static av_cold int libdirac_decode_close(AVCodecContext *avccontext)
-{
-    DiracDecoderParams *p_dirac_params = avccontext->priv_data;
-    dirac_decoder_close(p_dirac_params->p_decoder);
-
-    av_freep(&p_dirac_params->p_out_frame_buf);
-
-    return 0;
-}
-
-static void libdirac_flush(AVCodecContext *avccontext)
-{
-    /* Got a seek request. We will need free memory held in the private
-     * context and free the current Dirac decoder handle and then open
-     * a new decoder handle. */
-    libdirac_decode_close(avccontext);
-    libdirac_decode_init(avccontext);
-    return;
-}
-
-
-
-AVCodec ff_libdirac_decoder = {
-    .name           = "libdirac",
-    .type           = AVMEDIA_TYPE_VIDEO,
-    .id             = CODEC_ID_DIRAC,
-    .priv_data_size = sizeof(DiracDecoderParams),
-    .init           = libdirac_decode_init,
-    .close          = libdirac_decode_close,
-    .decode         = libdirac_decode_frame,
-    .capabilities   = CODEC_CAP_DELAY,
-    .flush          = libdirac_flush,
-    .long_name      = NULL_IF_CONFIG_SMALL("libdirac Dirac 2.2"),
-};



More information about the ffmpeg-cvslog mailing list