diff options
author | Wout Mertens <Wout.Mertens@gmail.com> | 2014-05-04 01:23:13 +0200 |
---|---|---|
committer | Wout Mertens <Wout.Mertens@gmail.com> | 2014-05-04 01:56:48 +0200 |
commit | c02f80375f9bcc550f3e8b530262c85e585e516a (patch) | |
tree | 1868813133dc37c35600637e0774f658f260ffe0 /pkgs/development/libraries | |
parent | 66216ea6db71c59505b1144432233f6fbb1d1561 (diff) | |
download | nixpkgs-c02f80375f9bcc550f3e8b530262c85e585e516a.tar nixpkgs-c02f80375f9bcc550f3e8b530262c85e585e516a.tar.gz nixpkgs-c02f80375f9bcc550f3e8b530262c85e585e516a.tar.bz2 nixpkgs-c02f80375f9bcc550f3e8b530262c85e585e516a.tar.lz nixpkgs-c02f80375f9bcc550f3e8b530262c85e585e516a.tar.xz nixpkgs-c02f80375f9bcc550f3e8b530262c85e585e516a.tar.zst nixpkgs-c02f80375f9bcc550f3e8b530262c85e585e516a.zip |
libdvd{read,nav}: Version bump and patch from Handbrake project
- API-compatible version bumps to latest upstream Patches: - A08: Adds API call to duplicate a DVD VM to libdvdnav - P00: Skip making examples
Diffstat (limited to 'pkgs/development/libraries')
4 files changed, 175 insertions, 15 deletions
diff --git a/pkgs/development/libraries/libdvdnav/A08-dvdnav-dup.patch b/pkgs/development/libraries/libdvdnav/A08-dvdnav-dup.patch new file mode 100644 index 00000000000..c0991b43555 --- /dev/null +++ b/pkgs/development/libraries/libdvdnav/A08-dvdnav-dup.patch @@ -0,0 +1,137 @@ +Index: src/dvdnav.c +=================================================================== +--- libdvdnav.orig/src/dvdnav.c (revision 1168) ++++ libdvdnav/src/dvdnav.c (working copy) +@@ -71,6 +71,67 @@ + return DVDNAV_STATUS_OK; + } + ++dvdnav_status_t dvdnav_dup(dvdnav_t **dest, dvdnav_t *src) { ++ dvdnav_t *this; ++ ++ (*dest) = NULL; ++ this = (dvdnav_t*)malloc(sizeof(dvdnav_t)); ++ if(!this) ++ return DVDNAV_STATUS_ERR; ++ ++ memcpy(this, src, sizeof(dvdnav_t)); ++ this->file = NULL; ++ ++ pthread_mutex_init(&this->vm_lock, NULL); ++ ++ this->vm = vm_new_copy(src->vm); ++ if(!this->vm) { ++ printerr("Error initialising the DVD VM."); ++ pthread_mutex_destroy(&this->vm_lock); ++ free(this); ++ return DVDNAV_STATUS_ERR; ++ } ++ ++ /* Start the read-ahead cache. */ ++ this->cache = dvdnav_read_cache_new(this); ++ ++ (*dest) = this; ++ return DVDNAV_STATUS_OK; ++} ++ ++dvdnav_status_t dvdnav_free_dup(dvdnav_t *this) { ++ ++#ifdef LOG_DEBUG ++ fprintf(MSG_OUT, "libdvdnav: free_dup:called\n"); ++#endif ++ ++ if (this->file) { ++ pthread_mutex_lock(&this->vm_lock); ++ DVDCloseFile(this->file); ++#ifdef LOG_DEBUG ++ fprintf(MSG_OUT, "libdvdnav: close:file closing\n"); ++#endif ++ this->file = NULL; ++ pthread_mutex_unlock(&this->vm_lock); ++ } ++ ++ /* Free the VM */ ++ if(this->vm) ++ vm_free_copy(this->vm); ++ ++ pthread_mutex_destroy(&this->vm_lock); ++ ++ /* We leave the final freeing of the entire structure to the cache, ++ * because we don't know, if there are still buffers out in the wild, ++ * that must return first. */ ++ if(this->cache) ++ dvdnav_read_cache_free(this->cache); ++ else ++ free(this); ++ ++ return DVDNAV_STATUS_OK; ++} ++ + dvdnav_status_t dvdnav_open(dvdnav_t** dest, const char *path) { + dvdnav_t *this; + struct timeval time; +Index: src/dvdnav/dvdnav.h +=================================================================== +--- libdvdnav.orig/src/dvdnav/dvdnav.h (revision 1168) ++++ libdvdnav/src/dvdnav.h (working copy) +@@ -89,6 +89,9 @@ + */ + dvdnav_status_t dvdnav_open(dvdnav_t **dest, const char *path); + ++dvdnav_status_t dvdnav_dup(dvdnav_t **dest, dvdnav_t *src); ++dvdnav_status_t dvdnav_free_dup(dvdnav_t *this); ++ + /* + * Closes a dvdnav_t previously opened with dvdnav_open(), freeing any + * memory associated with it. +Index: src/vm/vm.c +=================================================================== +--- libdvdnav.orig/src/vm/vm.c (revision 1168) ++++ libdvdnav/src/vm/vm.c (working copy) +@@ -96,6 +98,7 @@ + + static pgcit_t* get_MENU_PGCIT(vm_t *vm, ifo_handle_t *h, uint16_t lang); + static pgcit_t* get_PGCIT(vm_t *vm); ++static void vm_close(vm_t *vm); + + + /* Helper functions */ +@@ -262,7 +265,7 @@ + } + + void vm_free_vm(vm_t *vm) { +- vm_stop(vm); ++ vm_close(vm); + free(vm); + } + +@@ -289,12 +292,20 @@ + + int vm_start(vm_t *vm) { + /* Set pgc to FP (First Play) pgc */ ++ if (vm->stopped) { ++ vm_reset(vm, NULL); ++ vm->stopped = 0; ++ } + set_FP_PGC(vm); + process_command(vm, play_PGC(vm)); + return !vm->stopped; + } + + void vm_stop(vm_t *vm) { ++ vm->stopped = 1; ++} ++ ++static void vm_close(vm_t *vm) { + if(vm->vmgi) { + ifoClose(vm->vmgi); + vm->vmgi=NULL; +@@ -346,7 +357,7 @@ + + if (vm->dvd && dvdroot) { + /* a new dvd device has been requested */ +- vm_stop(vm); ++ vm_close(vm); + } + if (!vm->dvd) { + vm->dvd = DVDOpen(dvdroot); diff --git a/pkgs/development/libraries/libdvdnav/P00-mingw-no-examples.patch b/pkgs/development/libraries/libdvdnav/P00-mingw-no-examples.patch new file mode 100644 index 00000000000..0e061861735 --- /dev/null +++ b/pkgs/development/libraries/libdvdnav/P00-mingw-no-examples.patch @@ -0,0 +1,21 @@ +diff -Naur libdvdnav.orig/Makefile.am libdvdnav/Makefile.am +--- libdvdnav.orig/Makefile.am 2008-10-03 16:11:46.000000000 -0400 ++++ libdvdnav/Makefile.am 2009-04-24 02:53:15.000000000 -0400 +@@ -1,7 +1,7 @@ + include $(top_srcdir)/misc/Makefile.common + + +-SUBDIRS = src examples doc misc m4 ++SUBDIRS = src doc misc m4 + + EXTRA_DIST = autogen.sh \ + AUTHORS \ +diff -Naur libdvdnav.orig/configure.ac libdvdnav/configure.ac +--- libdvdnav.orig/configure.ac 2009-01-08 17:57:11.000000000 -0500 ++++ libdvdnav/configure.ac 2009-04-24 02:52:34.000000000 -0400 +@@ -252,5 +252,4 @@ + misc/relchk.sh + m4/Makefile + doc/Makefile +-examples/Makefile + ]) diff --git a/pkgs/development/libraries/libdvdnav/default.nix b/pkgs/development/libraries/libdvdnav/default.nix index 4ba938911a4..9b4e912772b 100644 --- a/pkgs/development/libraries/libdvdnav/default.nix +++ b/pkgs/development/libraries/libdvdnav/default.nix @@ -1,13 +1,14 @@ -{stdenv, fetchurl, libdvdread}: +{stdenv, fetchurl, pkgconfig, libdvdread}: stdenv.mkDerivation { - name = "libdvdnav-4.1.3"; + name = "libdvdnav-4.2.1"; src = fetchurl { - url = http://www2.mplayerhq.hu/MPlayer/releases/dvdnav/libdvdnav-4.1.3.tar.bz2; - sha1 = "d1b95eb8a7caee1fa7580a1abad84d6cb3cad046"; + url = http://dvdnav.mplayerhq.hu/releases/libdvdnav-4.2.1.tar.xz; + sha256 = "7fca272ecc3241b6de41bbbf7ac9a303ba25cb9e0c82aa23901d3104887f2372"; }; + nativeBuildInputs = [ pkgconfig ]; buildInputs = [libdvdread]; configureScript = "./configure2"; # wtf? @@ -16,9 +17,14 @@ stdenv.mkDerivation { mkdir -p $out ''; + # From Handbrake + patches = [ ./A08-dvdnav-dup.patch ./P00-mingw-no-examples.patch ]; + meta = { - homepage = http://www.mplayerhq.hu/; + homepage = http://dvdnav.mplayerhq.hu/; description = "A library that implements DVD navigation features such as DVD menus"; + license = stdenv.lib.licenses.gpl2; + maintainers = [ stdenv.lib.maintainers.wmertens ]; }; passthru = { inherit libdvdread; }; diff --git a/pkgs/development/libraries/libdvdread/default.nix b/pkgs/development/libraries/libdvdread/default.nix index 2593274d89b..eb5a48a99f1 100644 --- a/pkgs/development/libraries/libdvdread/default.nix +++ b/pkgs/development/libraries/libdvdread/default.nix @@ -1,29 +1,25 @@ {stdenv, fetchurl, libdvdcss}: stdenv.mkDerivation { - name = "libdvdread-4.2.1"; + name = "libdvdread-4.9.9"; src = fetchurl { - url = http://dvdnav.mplayerhq.hu/releases/libdvdread-4.2.1.tar.xz; - sha256 = "af9b98f049580a6521d56c978b736d3d609562dd12955e11d50e26d97542dcd4"; + url = http://dvdnav.mplayerhq.hu/releases/libdvdread-4.9.9.tar.xz; + sha256 = "d91275471ef69d488b05cf15c60e1cd65e17648bfc692b405787419f47ca424a"; }; buildInputs = [libdvdcss]; NIX_LDFLAGS = "-ldvdcss"; - configureScript = "./configure2"; # wtf? - - preConfigure = '' - mkdir -p $out - ''; - postInstall = '' ln -s dvdread $out/include/libdvdread ''; meta = { - homepage = http://www.mplayerhq.hu/; + homepage = http://dvdnav.mplayerhq.hu/; description = "A library for reading DVDs"; + license = stdenv.lib.licenses.gpl2; + maintainers = [ stdenv.lib.maintainers.wmertens ]; }; } |