dirac: remove old dirac-research library based codec

It's not developed any more and replaced by the
libschroedinger-based elements in gst-plugins-good.
(The libschroedinger 1.0.9 release notes state "This
is an exciting release: most of the encoding tools in
dirac-research have been ported over to Schrödinger, so
now schro has the same or better compression efficiency
as dirac-research.")
This commit is contained in:
Tim-Philipp Müller 2013-05-12 23:51:32 +01:00
parent 020c93b973
commit 0c1f059245
11 changed files with 1 additions and 1833 deletions

View file

@ -30,8 +30,6 @@ This file lists supporting libraries for which gst-plugins contains plugins,
as well as their minimum version. You can find the corresponding plugins in
ext/(library)
dirac (Dirac video codec)
http://www.bbc.co.uk/rd/projects/dirac/index.shtml
libdvdread (for the dvdsrc)
http://www.dtek.chalmers.se/groups/dvd/
(optional: libcss for encrypted DVDs)

View file

@ -344,7 +344,7 @@ GST_PLUGINS_NONPORTED=" cdxaparse \
sdi stereo tta \
videomeasure videosignal vmnc \
linsys vcd \
apexsink cdaudio dc1394 dirac directfb \
apexsink cdaudio dc1394 directfb \
gsettings \
musepack nas openal sdl sndfile timidity \
directdraw direct3d9 acm wininet \
@ -1251,14 +1251,6 @@ AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
])
])
dnl **** Dirac ****
translit(dnm, m, l) AM_CONDITIONAL(USE_DIRAC, true)
AG_GST_CHECK_FEATURE(DIRAC, [dirac], dirac, [
PKG_CHECK_MODULES(DIRAC, dirac >= 0.10, HAVE_DIRAC="yes", [
HAVE_DIRAC="no"
])
])
dnl *** DTS ***
translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
AG_GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
@ -2207,7 +2199,6 @@ AM_CONDITIONAL(USE_DECKLINK, false)
AM_CONDITIONAL(DECKLINK_OSX, false)
AM_CONDITIONAL(USE_DIRECTFB, false)
AM_CONDITIONAL(USE_WAYLAND, false)
AM_CONDITIONAL(USE_DIRAC, false)
AM_CONDITIONAL(USE_DTS, false)
AM_CONDITIONAL(USE_EXIF, false)
AM_CONDITIONAL(USE_RESINDVD, false)
@ -2470,7 +2461,6 @@ ext/chromaprint/Makefile
ext/curl/Makefile
ext/dash/Makefile
ext/dc1394/Makefile
ext/dirac/Makefile
ext/directfb/Makefile
ext/wayland/Makefile
ext/dts/Makefile

View file

@ -106,7 +106,6 @@
<xi:include href="xml/plugin-curl.xml" />
<xi:include href="xml/plugin-dataurisrc.xml" />
<xi:include href="xml/plugin-debugutilsbad.xml" />
<xi:include href="xml/plugin-dirac.xml" />
<xi:include href="xml/plugin-dtsdec.xml" />
<xi:include href="xml/plugin-dvb.xml" />
<xi:include href="xml/plugin-dvdspu.xml" />

View file

@ -1,34 +0,0 @@
<plugin>
<name>dirac</name>
<description>Dirac plugin</description>
<filename>../../ext/dirac/.libs/libgstdirac.so</filename>
<basename>libgstdirac.so</basename>
<version>0.10.23.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins git</package>
<origin>Unknown package origin</origin>
<elements>
<element>
<name>diracenc</name>
<longname>Dirac Encoder</longname>
<class>Codec/Encoder/Video</class>
<description>Encode raw YUV video into Dirac stream</description>
<author>David Schleef &lt;ds@schleef.org&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>video/x-raw-yuv, format=(fourcc){ I420, YUY2, UYVY, AYUV }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>video/x-dirac; video/x-qt-part; video/x-mp4-part</details>
</caps>
</pads>
</element>
</elements>
</plugin>

View file

@ -64,12 +64,6 @@ else
DC1394_DIR=
endif
if USE_DIRAC
DIRAC_DIR=dirac
else
DIRAC_DIR=
endif
if USE_DIRECTFB
DIRECTFB_DIR=directfb
else
@ -396,7 +390,6 @@ SUBDIRS=\
$(CURL_DIR) \
$(DASH_DIR) \
$(DC1394_DIR) \
$(DIRAC_DIR) \
$(DIRECTFB_DIR) \
$(WAYLAND_DIR) \
$(DTS_DIR) \
@ -457,7 +450,6 @@ DIST_SUBDIRS = \
chromaprint \
curl \
dc1394 \
dirac \
directfb \
wayland \
faac \

View file

@ -1,21 +0,0 @@
plugin_LTLIBRARIES = libgstdirac.la
libgstdirac_la_SOURCES = \
gstdirac.cc \
gstdiracenc.cc
libgstdirac_la_CXXFLAGS = \
$(GST_PLUGINS_BASE_CFLAGS) \
$(GST_CXXFLAGS) \
$(DIRAC_CFLAGS) \
-DGST_USE_UNSTABLE_API
libgstdirac_la_LIBADD = \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_MAJORMINOR@\
$(GST_BASE_LIBS) $(GST_LIBS) \
$(DIRAC_LIBS) -lz $(LIBM)
libgstdirac_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstdirac_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
noinst_HEADERS = \
gstdiracdec.h

View file

@ -1,55 +0,0 @@
/* GStreamer
* Copyright (C) 2004 David A. Schleef <ds@schleef.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <gst/gst.h>
GType gst_dirac_dec_get_type (void);
GType gst_dirac_enc_get_type (void);
GST_DEBUG_CATEGORY (dirac_debug);
#define GST_CAT_DEFAULT dirac_debug
static gboolean
plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (dirac_debug, "dirac", 0, "Dirac elements");
if (!gst_element_register (plugin, "diracenc", GST_RANK_MARGINAL,
gst_dirac_enc_get_type ())) {
return FALSE;
}
#if 0
if (!gst_element_register (plugin, "diracdec", GST_RANK_MARGINAL,
gst_dirac_dec_get_type ())) {
return FALSE;
}
#endif
return TRUE;
}
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"dirac",
"Dirac plugin", plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME,
GST_PACKAGE_ORIGIN)

View file

@ -1,359 +0,0 @@
/* GStreamer
* Copyright (C) 2004 David A. Schleef <ds@schleef.org>
* Copyright (C) 2004 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <string.h>
#include <gst/video/video.h>
#include "gstdiracdec.h"
GST_DEBUG_CATEGORY (diracdec_debug);
#define GST_CAT_DEFAULT diracdec_debug
enum
{
/* FILL ME */
LAST_SIGNAL
};
enum
{
ARG_0
/* FILL ME */
};
static void gst_diracdec_base_init (gpointer g_class);
static void gst_diracdec_class_init (GstDiracDec * klass);
static void gst_diracdec_init (GstDiracDec * diracdec);
static void gst_diracdec_dispose (GObject * object);
static void gst_diracdec_chain (GstPad * pad, GstData * data);
static GstStateChangeReturn gst_diracdec_change_state (GstElement * element,
GstStateChange transition);
static GstElementClass *parent_class = NULL;
/*static guint gst_diracdec_signals[LAST_SIGNAL] = { 0 }; */
GType
gst_diracdec_get_type (void)
{
static GType diracdec_type = 0;
if (!diracdec_type) {
static const GTypeInfo diracdec_info = {
sizeof (GstDiracDecClass),
gst_diracdec_base_init,
NULL,
(GClassInitFunc) gst_diracdec_class_init,
NULL,
NULL,
sizeof (GstDiracDec),
0,
(GInstanceInitFunc) gst_diracdec_init,
};
diracdec_type =
g_type_register_static (GST_TYPE_ELEMENT, "GstDiracDec", &diracdec_info,
(GTypeFlags) 0);
}
return diracdec_type;
}
static GstStaticPadTemplate gst_diracdec_src_pad_template =
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
/* FIXME: 444 (planar? packed?), 411 (Y41B? Y41P?) */
GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{ I420, YUY2, Y800 }"))
);
static GstStaticPadTemplate gst_diracdec_sink_pad_template =
GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("video/x-dirac")
);
static void
gst_diracdec_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
gst_element_class_add_static_pad_template (element_class,
&gst_diracdec_src_pad_template);
gst_element_class_add_static_pad_template (element_class,
&gst_diracdec_sink_pad_template);
gst_element_class_set_static_metadata (element_class, "Dirac stream decoder",
"Codec/Decoder/Video", "Decode DIRAC streams",
"David Schleef <ds@schleef.org>, "
"Ronald Bultje <rbultje@ronald.bitfreak.net>");
}
static void
gst_diracdec_class_init (GstDiracDec * klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
parent_class = GST_ELEMENT_CLASS (g_type_class_ref (GST_TYPE_ELEMENT));
gobject_class->dispose = gst_diracdec_dispose;
element_class->change_state = gst_diracdec_change_state;
GST_DEBUG_CATEGORY_INIT (diracdec_debug, "diracdec", 0, "DIRAC decoder");
}
static void
gst_diracdec_dispose (GObject * object)
{
G_OBJECT_CLASS (parent_class)->dispose (object);
}
static void
gst_diracdec_init (GstDiracDec * diracdec)
{
GST_DEBUG ("gst_diracdec_init: initializing");
/* create the sink and src pads */
diracdec->sinkpad =
gst_pad_new_from_static_template (&gst_diracdec_sink_pad_template,
"sink");
gst_pad_set_chain_function (diracdec->sinkpad, gst_diracdec_chain);
gst_element_add_pad (GST_ELEMENT (diracdec), diracdec->sinkpad);
diracdec->srcpad =
gst_pad_new_from_static_template (&gst_diracdec_src_pad_template, "src");
gst_pad_use_explicit_caps (diracdec->srcpad);
gst_element_add_pad (GST_ELEMENT (diracdec), diracdec->srcpad);
/* no capsnego done yet */
diracdec->width = -1;
diracdec->height = -1;
diracdec->fps = 0;
diracdec->fcc = 0;
}
static guint32
gst_diracdec_chroma_to_fourcc (dirac_chroma_t chroma)
{
guint32 fourcc = 0;
switch (chroma) {
case Yonly:
fourcc = GST_MAKE_FOURCC ('Y', '8', '0', '0');
break;
case format422:
fourcc = GST_MAKE_FOURCC ('Y', 'U', 'Y', '2');
break;
/* planar? */
case format420:
case format444:
case format411:
default:
break;
}
return fourcc;
}
static gboolean
gst_diracdec_link (GstDiracDec * diracdec,
gint width, gint height, gdouble fps, guint32 fourcc)
{
GstCaps *caps;
if (width == diracdec->width &&
height == diracdec->height &&
fps == diracdec->fps && fourcc == diracdec->fcc) {
return TRUE;
}
if (!fourcc) {
g_warning ("Chroma not supported\n");
return FALSE;
}
caps = gst_caps_new_simple ("video/x-raw-yuv",
"width", G_TYPE_INT, width,
"height", G_TYPE_INT, height,
"format", GST_TYPE_FOURCC, fourcc, "framerate", G_TYPE_DOUBLE, fps, NULL);
if (gst_pad_set_explicit_caps (diracdec->srcpad, caps)) {
diracdec->width = width;
diracdec->height = height;
switch (fourcc) {
case GST_MAKE_FOURCC ('Y', 'U', 'Y', '2'):
diracdec->size = width * height * 2;
break;
case GST_MAKE_FOURCC ('Y', '8', '0', '0'):
diracdec->size = width * height;
break;
}
diracdec->fcc = fourcc;
diracdec->fps = fps;
return TRUE;
}
return FALSE;
}
static void
gst_diracdec_chain (GstPad * pad, GstData * _data)
{
GstDiracDec *diracdec = GST_DIRACDEC (gst_pad_get_parent (pad));
GstBuffer *buf = GST_BUFFER (_data), *out;
gboolean c = TRUE;
/* get state and do something */
while (c) {
switch (dirac_parse (diracdec->decoder)) {
case STATE_BUFFER:
if (buf) {
/* provide data to decoder */
dirac_buffer (diracdec->decoder, GST_BUFFER_DATA (buf),
GST_BUFFER_DATA (buf) + GST_BUFFER_SIZE (buf));
gst_buffer_unref (buf);
buf = NULL;
} else {
/* need more data */
c = FALSE;
}
break;
case STATE_SEQUENCE:{
guint8 *buf[3];
gint fps_num, fps_denom;
fps_num = diracdec->decoder->seq_params.frame_rate.numerator;
fps_denom = diracdec->decoder->seq_params.frame_rate.denominator;
/* start-of-sequence - allocate buffer */
if (!gst_diracdec_link (diracdec,
diracdec->decoder->seq_params.width,
diracdec->decoder->seq_params.height,
(gdouble) fps_num / (gdouble) fps_denom,
gst_diracdec_chroma_to_fourcc (diracdec->decoder->
seq_params.chroma))) {
GST_ELEMENT_ERROR (diracdec, CORE, NEGOTIATION, (NULL),
("Failed to set caps to %dx%d @ %d fps (format=" GST_FOURCC_FORMAT
"/%d)", diracdec->decoder->seq_params.width,
diracdec->decoder->seq_params.height,
diracdec->decoder->seq_params.frame_rate,
gst_diracdec_chroma_to_fourcc (diracdec->decoder->
seq_params.chroma),
diracdec->decoder->seq_params.chroma));
c = FALSE;
break;
}
g_free (diracdec->decoder->fbuf->buf[0]);
g_free (diracdec->decoder->fbuf->buf[1]);
g_free (diracdec->decoder->fbuf->buf[2]);
buf[0] = (guchar *) g_malloc (diracdec->decoder->seq_params.width *
diracdec->decoder->seq_params.height);
if (diracdec->decoder->seq_params.chroma != Yonly) {
buf[1] =
(guchar *) g_malloc (diracdec->decoder->seq_params.chroma_width *
diracdec->decoder->seq_params.chroma_height);
buf[2] =
(guchar *) g_malloc (diracdec->decoder->seq_params.chroma_width *
diracdec->decoder->seq_params.chroma_height);
}
dirac_set_buf (diracdec->decoder, buf, NULL);
break;
}
case STATE_SEQUENCE_END:
/* end-of-sequence - free buffer */
g_free (diracdec->decoder->fbuf->buf[0]);
diracdec->decoder->fbuf->buf[0] = NULL;
g_free (diracdec->decoder->fbuf->buf[1]);
diracdec->decoder->fbuf->buf[1] = NULL;
g_free (diracdec->decoder->fbuf->buf[2]);
diracdec->decoder->fbuf->buf[2] = NULL;
break;
case STATE_PICTURE_START:
/* start of one picture */
break;
case STATE_PICTURE_AVAIL:
/* one picture is decoded */
out = gst_pad_alloc_buffer (diracdec->srcpad, 0, diracdec->size);
memcpy (GST_BUFFER_DATA (out), diracdec->decoder->fbuf->buf[0],
diracdec->width * diracdec->height);
if (diracdec->fcc != GST_MAKE_FOURCC ('Y', '8', '0', '0')) {
memcpy (GST_BUFFER_DATA (out) + (diracdec->width *
diracdec->height), diracdec->decoder->fbuf->buf[1],
diracdec->decoder->seq_params.chroma_width *
diracdec->decoder->seq_params.chroma_height);
memcpy (GST_BUFFER_DATA (out) +
(diracdec->decoder->seq_params.chroma_width *
diracdec->decoder->seq_params.chroma_height) +
(diracdec->width * diracdec->height),
diracdec->decoder->fbuf->buf[2],
diracdec->decoder->seq_params.chroma_width *
diracdec->decoder->seq_params.chroma_height);
}
GST_BUFFER_TIMESTAMP (out) = (guint64) (GST_SECOND *
diracdec->decoder->frame_params.fnum / diracdec->fps);
GST_BUFFER_DURATION (out) = (guint64) (GST_SECOND / diracdec->fps);
gst_pad_push (diracdec->srcpad, GST_DATA (out));
break;
case STATE_INVALID:
default:
GST_ELEMENT_ERROR (diracdec, LIBRARY, TOO_LAZY, (NULL), (NULL));
c = FALSE;
break;
}
}
}
static GstStateChangeReturn
gst_diracdec_change_state (GstElement * element, GstStateChange transition)
{
GstDiracDec *diracdec = GST_DIRACDEC (element);
switch (transition) {
case GST_STATE_CHANGE_NULL_TO_READY:
if (!(diracdec->decoder = dirac_decoder_init (0)))
return GST_STATE_CHANGE_FAILURE;
break;
case GST_STATE_CHANGE_READY_TO_NULL:
dirac_decoder_close (diracdec->decoder);
diracdec->width = diracdec->height = -1;
diracdec->fps = 0.;
diracdec->fcc = 0;
break;
default:
break;
}
return parent_class->change_state (element, transition);
}

View file

@ -1,69 +0,0 @@
/* GStreamer
* Copyright (C) 2004 David A. Schleef <ds@schleef.org>
* Copyright (C) 2004 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef __GST_DIRACDEC_H__
#define __GST_DIRACDEC_H__
#include <gst/gst.h>
#include <libdirac_decoder/decoder_types.h>
#include <libdirac_decoder/dirac_parser.h>
G_BEGIN_DECLS
#define GST_TYPE_DIRACDEC \
(gst_diracdec_get_type())
#define GST_DIRACDEC(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DIRACDEC,GstDiracDec))
#define GST_DIRACDEC_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DIRACDEC,GstDiracDecClass))
#define GST_IS_DIRACDEC(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DIRACDEC))
#define GST_IS_DIRACDEC_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DIRACDEC))
typedef struct _GstDiracDec GstDiracDec;
typedef struct _GstDiracDecClass GstDiracDecClass;
struct _GstDiracDec
{
GstElement element;
/* pads */
GstPad *sinkpad, *srcpad;
dirac_decoder_t *decoder;
/* size is size of buf */
gint width, height, size;
gdouble fps;
guint32 fcc;
};
struct _GstDiracDecClass
{
GstElementClass parent_class;
};
GType gst_diracdec_get_type (void);
G_END_DECLS
#endif /* __GST_DIRACDEC_H__ */

File diff suppressed because it is too large Load diff

View file

@ -307,7 +307,6 @@ make ERROR_CFLAGS='' ERROR_CXXFLAGS=''
#%ifnarch s390 s390x
#%{_libdir}/gstreamer-%{majorminor}/libgstdc1394.so
#%endif
#%{_libdir}/gstreamer-%{majorminor}/libgstdirac.so
# %{_libdir}/gstreamer-%{majorminor}/libgstgsm.so
#%{_libdir}/gstreamer-%{majorminor}/libgstjp2k.so
#%{_libdir}/gstreamer-%{majorminor}/libgstkate.so