summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure86
-rw-r--r--etc/codecs.conf16
-rw-r--r--libmpcodecs/ve_lavc.c4
3 files changed, 106 insertions, 0 deletions
diff --git a/configure b/configure
index 3222e245d0..071e27393b 100755
--- a/configure
+++ b/configure
@@ -292,6 +292,9 @@ Codecs:
--disable-xvid-lavc disable Xvid in libavcodec [autodetect]
--disable-x264 disable x264 [autodetect]
--disable-x264-lavc disable x264 in libavcodec [autodetect]
+ --disable-libdirac-lavc disable Dirac in libavcodec [autodetect]
+ --disable-libschroedinger-lavc disable Dirac in libavcodec (Schroedinger
+ decoder) [autodetect]
--disable-libnut disable libnut [autodetect]
--disable-libavutil_a disable static libavutil [autodetect]
--disable-libavcodec_a disable static libavcodec [autodetect]
@@ -633,6 +636,8 @@ _xvid=auto
_xvid_lavc=auto
_x264=auto
_x264_lavc=auto
+_libdirac_lavc=auto
+_libschroedinger_lavc=auto
_libnut=auto
_lirc=auto
_lircc=auto
@@ -1044,6 +1049,10 @@ for ac_option do
--disable-x264) _x264=no ;;
--enable-x264-lavc) _x264_lavc=yes ;;
--disable-x264-lavc) _x264_lavc=no ;;
+ --enable-libdirac-lavc) _libdirac_lavc=yes ;;
+ --disable-libdirac-lavc) _libdirac_lavc=no ;;
+ --enable-libschroedinger-lavc) _libschroedinger_lavc=yes ;;
+ --disable-libschroedinger-lavc) _libschroedinger_lavc=no ;;
--enable-libnut) _libnut=yes ;;
--disable-libnut) _libnut=no ;;
--enable-libavutil_a) _libavutil_a=yes ;;
@@ -6659,6 +6668,79 @@ _res_comment="in libavcodec: $_x264_lavc"
echores "$_x264"
+echocheck "libdirac"
+if test "$_libdirac_lavc" = auto; then
+ _libdirac_lavc=no
+ if test "$_libavcodec_a" != yes; then
+ _res_comment="libavcodec (static) is required by libdirac, sorry"
+ else
+ cat > $TMPC << EOF
+#include <libdirac_encoder/dirac_encoder.h>
+#include <libdirac_decoder/dirac_parser.h>
+int main(void)
+{
+ dirac_encoder_context_t enc_ctx;
+ dirac_decoder_t *dec_handle;
+ dirac_encoder_context_init(&enc_ctx, VIDEO_FORMAT_SD_576I50);
+ dec_handle = dirac_decoder_init(0);
+ if (dec_handle)
+ dirac_decoder_close(dec_handle);
+ return 0;
+}
+EOF
+ if $_pkg_config --exists dirac ; then
+ _inc_dirac=`$_pkg_config --silence-errors --cflags dirac`
+ _ld_dirac=`$_pkg_config --silence-errors --libs dirac`
+ cc_check $_inc_dirac $_ld_dirac &&
+ _libdirac_lavc=yes &&
+ _inc_extra="$_inc_extra $_inc_dirac" &&
+ _ld_extra="$_ld_extra $_ld_dirac"
+ fi
+ fi
+fi
+if test "$_libdirac_lavc" = yes ; then
+ _def_libdirac_lavc='#define CONFIG_LIBDIRAC 1'
+ _libavencoders="$_libavencoders LIBDIRAC_ENCODER"
+ _libavdecoders="$_libavdecoders LIBDIRAC_DECODER"
+ _codecmodules="libdirac $_codecmodules"
+else
+ _def_libdirac_lavc='#undef CONFIG_LIBDIRAC'
+ _nocodecmodules="libdirac $_nocodecmodules"
+fi
+echores "$_libdirac_lavc"
+
+
+echocheck "libschroedinger"
+if test "$_libschroedinger_lavc" = auto ; then
+ _libschroedinger_lavc=no
+ if test "$_libavcodec_a" != yes; then
+ _res_comment="libavcodec (static) is required by libschroedinger, sorry"
+ else
+ cat > $TMPC << EOF
+#include <schroedinger/schro.h>
+int main(void) { schro_init(); return 0; }
+EOF
+ if $_pkg_config --exists schroedinger-1.0 ; then
+ _inc_schroedinger=`$_pkg_config --silence-errors --cflags schroedinger-1.0`
+ _ld_schroedinger=`$_pkg_config --silence-errors --libs schroedinger-1.0`
+ cc_check $_inc_schroedinger $_ld_schroedinger &&
+ _libschroedinger_lavc=yes &&
+ _inc_extra="$_inc_extra $_inc_schroedinger" &&
+ _ld_extra="$_ld_extra $_ld_schroedinger"
+ fi
+ fi
+fi
+if test "$_libschroedinger_lavc" = yes ; then
+ _def_libschroedinger_lavc='#define CONFIG_LIBSCHROEDINGER 1'
+ _libavencoders="$_libavencoders LIBSCHROEDINGER_ENCODER"
+ _libavdecoders="$_libavdecoders LIBSCHROEDINGER_DECODER"
+ _codecmodules="libschroedinger $_codecmodules"
+else
+ _def_libschroedinger_lavc='#undef CONFIG_LIBSCHROEDINGER'
+ _nocodecmodules="libschroedinger $_nocodecmodules"
+fi
+echores "$_libschroedinger_lavc"
+
echocheck "libnut"
if test "$_libnut" = auto ; then
cat > $TMPC << EOF
@@ -7826,8 +7908,10 @@ CONFIG_MUXERS=$_mencoder
CONFIG_LIBAMR=$_libamr
CONFIG_LIBAMR_NB=$_libamr_nb
CONFIG_LIBAMR_WB=$_libamr_wb
+CONFIG_LIBDIRAC=$_libdirac_lavc
CONFIG_LIBFAAC=$_faac_lavc
CONFIG_LIBMP3LAME=$_mp3lame_lavc
+CONFIG_LIBSCHROEDINGER=$_libschroedinger_lavc
CONFIG_LIBVORBIS=$_libvorbis
CONFIG_LIBX264=$_x264_lavc
CONFIG_LIBXVID=$_xvid_lavc
@@ -8223,8 +8307,10 @@ $_def_libamr_wb
`ff_config_enable "$_libavprotocols_all" "$_libavprotocols"`
`ff_config_enable "$_libavbsfs_all" "$_libavbsfs"`
+$_def_libdirac_lavc
$_def_faac_lavc
$_def_mp3lame_lavc
+$_def_libschroedinger_lavc
$_def_x264_lavc
$_def_xvid_lavc
diff --git a/etc/codecs.conf b/etc/codecs.conf
index 5e3847d243..aa539fbdcf 100644
--- a/etc/codecs.conf
+++ b/etc/codecs.conf
@@ -708,6 +708,22 @@ videocodec ffwv1f
dll mpeg4
out YV12,I420,IYUV flip
+videocodec fflibschroedinger
+ info "Dirac (through FFmpeg libschroedinger)"
+ status working
+ fourcc drac
+ driver ffmpeg
+ dll libschroedinger
+ out I420,IYUV,422P,444P
+
+videocodec fflibdirac
+ info "Dirac (through FFmpeg libdirac)"
+ status working
+ fourcc drac
+ driver ffmpeg
+ dll libdirac
+ out I420,IYUV,422P,444P
+
videocodec xvid
info "Xvid (MPEG-4)"
status working
diff --git a/libmpcodecs/ve_lavc.c b/libmpcodecs/ve_lavc.c
index 915c9a583f..4cd59c6c8a 100644
--- a/libmpcodecs/ve_lavc.c
+++ b/libmpcodecs/ve_lavc.c
@@ -1021,6 +1021,10 @@ static int vf_open(vf_instance_t *vf, char* args){
mux_v->bih->biCompression = mmioFOURCC('d', 'v', 's', 'd');
else if (!strcasecmp(lavc_param_vcodec, "libx264"))
mux_v->bih->biCompression = mmioFOURCC('h', '2', '6', '4');
+ else if (!strcasecmp(lavc_param_vcodec, "libschroedinger"))
+ mux_v->bih->biCompression = mmioFOURCC('d', 'r', 'a', 'c');
+ else if (!strcasecmp(lavc_param_vcodec, "libdirac"))
+ mux_v->bih->biCompression = mmioFOURCC('d', 'r', 'a', 'c');
else
mux_v->bih->biCompression = mmioFOURCC(lavc_param_vcodec[0],
lavc_param_vcodec[1], lavc_param_vcodec[2], lavc_param_vcodec[3]); /* FIXME!!! */