diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gstreamer')
32 files changed, 1387 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/bad/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/bad/default.nix new file mode 100644 index 000000000000..735ab4e6e18e --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/bad/default.nix @@ -0,0 +1,200 @@ +{ stdenv, fetchurl, fetchpatch, meson, ninja, gettext +, config +, pkgconfig, python3, gst-plugins-base, orc +, gobject-introspection +, enableZbar ? true +, faacSupport ? false, faac ? null +, faad2, libass, libkate, libmms, librdf, ladspaH +, libnice, webrtc-audio-processing, lilv, lv2, serd, sord, sratom +, libbs2b, libmodplug, mpeg2dec +, openjpeg, libopus, librsvg +, bluez +, chromaprint +, curl +, directfb +, fdk_aac +, flite +, gsm +, libaom +, libdc1394 +, libde265 +, libdrm +, libdvdnav +, libdvdread +, libgudev +, libofa +, libsndfile +, libusb1 +, neon +, openal +, opencv3 +, openexr +, openh264 +, pango +, rtmpdump +, sbc +, soundtouch +, spandsp +, srtp +, zbar +, wayland-protocols +, wildmidi, fluidsynth, libvdpau, wayland +, libwebp, xvidcore, gnutls, mjpegtools +, libGLU_combined, libintl, libgme +, openssl, x265, libxml2 +, srt +}: + +assert faacSupport -> faac != null; + +let + inherit (stdenv.lib) optional optionals; +in +stdenv.mkDerivation rec { + pname = "gst-plugins-bad"; + version = "1.16.0"; + + meta = with stdenv.lib; { + description = "Gstreamer Bad Plugins"; + homepage = "https://gstreamer.freedesktop.org"; + longDescription = '' + a set of plug-ins that aren't up to par compared to the + rest. They might be close to being good quality, but they're missing + something - be it a good code review, some documentation, a set of tests, + a real live maintainer, or some actual wide use. + ''; + license = licenses.lgpl2Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ matthewbauer ]; + }; + + preConfigure = '' + patchShebangs . + ''; + + patches = [ + ./fix_pkgconfig_includedir.patch + # Remove when https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/312 is merged and available to us + (fetchpatch { + url = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/commit/99790eaad9083cce5ab2b1646489e1a1c0faad1e.patch"; + sha256 = "11bqy4sl05qq5mj4bx5s09rq106s3j0vnpjl4np058im32j69lr3"; + }) + # Remove when https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/312 is merged and available to us + (fetchpatch { + url = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/commit/1872da81c48d3a719bd39955fd97deac7d037d74.patch"; + sha256 = "11zwrr5ggflmvr0qfssj7dmhgd3ybiadmy79b4zh24022zgw3xpz"; + }) + ]; + + src = fetchurl { + url = "${meta.homepage}/src/gst-plugins-bad/${pname}-${version}.tar.xz"; + sha256 = "019b0yqjrcg6jmfd4cc336h1bz5p4wxl58yz1c4sdb96avirs4r2"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ + meson ninja pkgconfig python3 gettext gobject-introspection + ] + ++ optionals stdenv.isLinux [ + wayland-protocols + ]; + + buildInputs = [ + gst-plugins-base orc + faad2 libass libkate libmms + libnice webrtc-audio-processing # webrtc + libbs2b + ladspaH librdf # ladspa plug-in + lilv lv2 serd sord sratom # lv2 plug-in + libmodplug mpeg2dec + openjpeg libopus librsvg + bluez + chromaprint + curl.dev + directfb + fdk_aac + flite + gsm + libaom + libdc1394 + libde265 + libdrm + libdvdnav + libdvdread + libgudev + libofa + libsndfile + libusb1 + neon + openal + opencv3 + openexr + openh264 + rtmpdump + pango + sbc + soundtouch + spandsp + srtp + fluidsynth libvdpau + libwebp xvidcore gnutls libGLU_combined + libgme openssl x265 libxml2 + libintl + srt + ] + ++ optional enableZbar zbar + ++ optional faacSupport faac + ++ optional stdenv.isLinux wayland + # wildmidi requires apple's OpenAL + # TODO: package apple's OpenAL, fix wildmidi, include on Darwin + ++ optional (!stdenv.isDarwin) wildmidi + # TODO: mjpegtools uint64_t is not compatible with guint64 on Darwin + ++ optional (!stdenv.isDarwin) mjpegtools; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + + "-Ddts=disabled" # required `libdca` library not packaged in nixpkgs as of writing, and marked as "BIG FAT WARNING: libdca is still in early development" + "-Dzbar=${if enableZbar then "enabled" else "disabled"}" + "-Dfaac=${if faacSupport then "enabled" else "disabled"}" + "-Diqa=disabled" # required `dssim` library not packaging in nixpkgs as of writing + "-Dmsdk=disabled" # not packaged in nixpkgs as of writing / no Windows support + # As of writing, with `libmpcdec` in `buildInputs` we get + # "Could not find libmpcdec header files, but Musepack was enabled via options" + # This is likely because nixpkgs has the header in libmpc/mpcdec.h + # instead of mpc/mpcdec.h, like Arch does. The situation is not trivial. + # There are apparently 2 things called `libmpcdec` from the same author: + # * http://svn.musepack.net/libmpcdec/trunk/src/ + # * http://svn.musepack.net/libmpc/trunk/include/mpc/ + # Fixing it likely requires to first figure out with upstream which one + # is needed, and then patching upstream to find it (though it probably + # already works on Arch?). + "-Dmusepack=disabled" + "-Dopenmpt=disabled" # `libopenmpt` not packaged in nixpkgs as of writing + "-Dopenni2=disabled" # not packaged in nixpkgs as of writing + "-Dopensles=disabled" # not packaged in nixpkgs as of writing + "-Dsctp=disabled" # required `usrsctp` library not packaged in nixpkgs as of writing + "-Dteletext=disabled" # required `zvbi` library not packaged in nixpkgs as of writing + "-Dtinyalsa=disabled" # not packaged in nixpkgs as of writing + "-Dvoaacenc=disabled" # required `vo-aacenc` library not packaged in nixpkgs as of writing + "-Dvoamrwbenc=disabled" # required `vo-amrwbenc` library not packaged in nixpkgs as of writing + "-Dvulkan=disabled" # Linux-only, and we haven't figured out yet which of the vulkan nixpkgs it needs + "-Dwasapi=disabled" # not packaged in nixpkgs as of writing / no Windows support + "-Dwpe=disabled" # required `wpe-webkit` library not packaged in nixpkgs as of writing + + # Requires CUDA and we haven't figured out how to make Meson find CUDA yet; + # it probably searches via pkgconfig, for which we have no .pc files, + # see https://github.com/NixOS/nixpkgs/issues/54395 + "-Dnvdec=disabled" + "-Dnvenc=disabled" + ]; + + enableParallelBuilding = true; + + doCheck = false; # fails 20 out of 58 tests, expensive + +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..c687fffc9c08 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/bad/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index 271f327f3..7e2afa754 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', join_paths(get_option('prefix'))) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', api_version) + pkgconf.set('VERSION', gst_version) + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix new file mode 100644 index 000000000000..81d914581321 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/base/default.nix @@ -0,0 +1,100 @@ +{ stdenv, fetchurl, fetchpatch, lib +, pkgconfig, meson, ninja, gettext, gobject-introspection +, python3, gstreamer, orc, pango, libtheora +, libintl, libopus +, isocodes +, libjpeg +, libvisual +, tremor # provides 'virbisidec' +, libGL +, gtk-doc, docbook_xsl, docbook_xml_dtd_412 +, enableX11 ? stdenv.isLinux, libXv +, enableWayland ? stdenv.isLinux, wayland +, enableAlsa ? stdenv.isLinux, alsaLib +, enableCocoa ? false, darwin +, enableCdparanoia ? (!stdenv.isDarwin), cdparanoia }: + +stdenv.mkDerivation rec { + pname = "gst-plugins-base"; + version = "1.16.0"; + + meta = with lib; { + description = "Base plugins and helper libraries"; + homepage = https://gstreamer.freedesktop.org; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ matthewbauer ]; + }; + + src = fetchurl { + url = "${meta.homepage}/src/gst-plugins-base/${pname}-${version}.tar.xz"; + sha256 = "1bmmdwbyy89ayb85xc48y217f6wdmpz96f30zm6v53z2a5xsm4s0"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ + pkgconfig python3 gettext gobject-introspection + gtk-doc + # Without these, enabling the 'gtk_doc' gives us `FAILED: meson-install` + docbook_xsl docbook_xml_dtd_412 + ] + # Broken meson with Darwin. Should hopefully be fixed soon. Tracking + # in https://bugzilla.gnome.org/show_bug.cgi?id=781148. + ++ lib.optionals (!stdenv.isDarwin) [ meson ninja ]; + + # On Darwin, we currently use autoconf, on all other systems Meson + # TODO Switch to Meson on Darwin as well + + # TODO How to pass these to Meson? + configureFlags = lib.optionals stdenv.isDarwin [ + "--enable-x11=${if enableX11 then "yes" else "no"}" + "--enable-wayland=${if enableWayland then "yes" else "no"}" + "--enable-cocoa=${if enableCocoa then "yes" else "no"}" + ] + # Introspection fails on my MacBook currently + ++ lib.optional stdenv.isDarwin "--disable-introspection"; + + mesonFlags = lib.optionals (!stdenv.isDarwin) [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Dgl-graphene=disabled" # not packaged in nixpkgs as of writing + # See https://github.com/GStreamer/gst-plugins-base/blob/d64a4b7a69c3462851ff4dcfa97cc6f94cd64aef/meson_options.txt#L15 for a list of choices + "-Dgl_winsys=[${lib.concatStringsSep "," (lib.optional enableX11 "x11" ++ lib.optional enableWayland "wayland" ++ lib.optional enableCocoa "cocoa")}]" + # We must currently disable gtk_doc API docs generation, + # because it is not compatible with some features being disabled. + # See for example + # https://gitlab.gnome.org/GNOME/gnome-build-meta/issues/38 + # for it failing because some Wayland symbols are missing. + # This problem appeared between 1.15.1 and 1.16.0. + "-Dgtk_doc=disabled" + ] + ++ lib.optional (!enableX11) "-Dx11=disabled" + # TODO How to disable Wayland? + ++ lib.optional (!enableAlsa) "-Dalsa=disabled" + ++ lib.optional (!enableCdparanoia) "-Dcdparanoia=disabled" + ; + + buildInputs = [ orc libtheora libintl libopus isocodes libjpeg tremor libGL ] + ++ lib.optional (!stdenv.isDarwin) libvisual + ++ lib.optional enableAlsa alsaLib + ++ lib.optionals enableX11 [ libXv pango ] + ++ lib.optional enableWayland wayland + ++ lib.optional enableCocoa darwin.apple_sdk.frameworks.Cocoa + ++ lib.optional enableCdparanoia cdparanoia; + + propagatedBuildInputs = [ gstreamer ]; + + postPatch = '' + patchShebangs . + ''; + + enableParallelBuilding = true; + + doCheck = false; # fails, wants DRI access for OpenGL + + patches = [ + ./fix_pkgconfig_includedir.patch + ]; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..04486a4647f9 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/base/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index 04abfbee5..88c86b431 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', get_option('prefix')) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', api_version) + pkgconf.set('VERSION', gst_version) + pkgconf.set('LIBM', libm.found() ? '-lm' : '') diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/core/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/core/default.nix new file mode 100644 index 000000000000..f0f01a977fd1 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/core/default.nix @@ -0,0 +1,84 @@ +{ stdenv, fetchurl, fetchpatch, meson, ninja +, pkgconfig, gettext, gobject-introspection +, bison, flex, python3, glib, makeWrapper +, libcap,libunwind, darwin +, elfutils # for libdw +, bash-completion +, docbook_xsl, docbook_xml_dtd_412 +, gtk-doc +, lib +, CoreServices +}: + +stdenv.mkDerivation rec { + pname = "gstreamer"; + version = "1.16.0"; + + meta = with lib ;{ + description = "Open source multimedia framework"; + homepage = https://gstreamer.freedesktop.org; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ ttuegel matthewbauer ]; + }; + + src = fetchurl { + url = "${meta.homepage}/src/gstreamer/${pname}-${version}.tar.xz"; + sha256 = "003wy1p1in85p9sr5jsyhbnwqaiwz069flwkhyx7qhxy31qjz3hf"; + }; + + patches = [ + ./fix_pkgconfig_includedir.patch + ]; + + outputs = [ "out" "dev" ]; + outputBin = "dev"; + + nativeBuildInputs = [ + meson ninja pkgconfig gettext bison flex python3 makeWrapper gobject-introspection + bash-completion + gtk-doc + # Without these, enabling the 'gtk_doc' gives us `FAILED: meson-install` + docbook_xsl docbook_xml_dtd_412 + ]; + + buildInputs = + lib.optionals stdenv.isLinux [ libcap libunwind elfutils ] + ++ lib.optional stdenv.isDarwin CoreServices; + + propagatedBuildInputs = [ glib ]; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Ddbghelp=disabled" # not needed as we already provide libunwind and libdw, and dbghelp is a fallback to those + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + ] + # darwin.libunwind doesn't have pkgconfig definitions so meson doesn't detect it. + ++ stdenv.lib.optionals stdenv.isDarwin [ "-Dlibunwind=disabled" "-Dlibdw=disabled" ]; + + postInstall = '' + for prog in "$dev/bin/"*; do + # We can't use --suffix here due to quoting so we craft the export command by hand + wrapProgram "$prog" --run "export GST_PLUGIN_SYSTEM_PATH=\$GST_PLUGIN_SYSTEM_PATH"$\{GST_PLUGIN_SYSTEM_PATH:+:\}"\$(unset _tmp; for profile in \$NIX_PROFILES; do _tmp="\$profile/lib/gstreamer-1.0''$\{_tmp:+:\}\$_tmp"; done; printf "\$_tmp")" + done + ''; + + preConfigure= + # These files are not executable upstream, so we need to + # make them executable for `patchShebangs` to pick them up. + # Can be removed when this is merged and available: + # https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/141 + '' + chmod +x gst/parse/get_flex_version.py + '' + + '' + patchShebangs . + ''; + + preFixup = '' + moveToOutput "share/bash-completion" "$dev" + ''; + + setupHook = ./setup-hook.sh; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..c388a82fa2a8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/core/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index edb0586c2..7ed46dfce 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', join_paths(get_option('prefix'))) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', apiversion) + pkgconf.set('VERSION', gst_version) + pkgconf.set('LIBM', mathlib.found() ? '-lm' : '') diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/core/setup-hook.sh b/nixpkgs/pkgs/development/libraries/gstreamer/core/setup-hook.sh new file mode 100644 index 000000000000..b8c741af578f --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/core/setup-hook.sh @@ -0,0 +1,9 @@ +addGstreamer1LibPath () { + if test -d "$1/lib/gstreamer-1.0" + then + export GST_PLUGIN_SYSTEM_PATH_1_0="${GST_PLUGIN_SYSTEM_PATH_1_0}${GST_PLUGIN_SYSTEM_PATH_1_0:+:}$1/lib/gstreamer-1.0" + fi +} + +addEnvHooks "$hostOffset" addGstreamer1LibPath + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/default.nix new file mode 100644 index 000000000000..94d71760a7f8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/default.nix @@ -0,0 +1,29 @@ +{ callPackage, CoreServices }: + +rec { + gstreamer = callPackage ./core { inherit CoreServices; }; + + gstreamermm = callPackage ./gstreamermm { }; + + gst-plugins-base = callPackage ./base { inherit gstreamer; }; + + gst-plugins-good = callPackage ./good { inherit gst-plugins-base; }; + + gst-plugins-bad = callPackage ./bad { inherit gst-plugins-base; }; + + gst-plugins-ugly = callPackage ./ugly { inherit gst-plugins-base; }; + + gst-rtsp-server = callPackage ./rtsp-server { inherit gst-plugins-base gst-plugins-bad; }; + + gst-libav = callPackage ./libav { inherit gst-plugins-base; }; + + gst-editing-services = callPackage ./ges { inherit gst-plugins-base; }; + + gst-vaapi = callPackage ./vaapi { + inherit gst-plugins-base gstreamer gst-plugins-bad; + }; + + gst-validate = callPackage ./validate { inherit gst-plugins-base; }; + + # note: gst-python is in ./python/default.nix - called under pythonPackages +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/ges/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/ges/default.nix new file mode 100644 index 000000000000..810cee650ca8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/ges/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, fetchpatch, meson, ninja +, pkgconfig, python, gst-plugins-base, libxml2 +, flex, perl, gettext, gobject-introspection +}: + +stdenv.mkDerivation rec { + pname = "gstreamer-editing-services"; + version = "1.16.0"; + + meta = with stdenv.lib; { + description = "Library for creation of audio/video non-linear editors"; + homepage = "https://gstreamer.freedesktop.org"; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + }; + + src = fetchurl { + url = "${meta.homepage}/src/gstreamer-editing-services/${pname}-${version}.tar.xz"; + sha256 = "1las94jkx83sxmzi5w6b0xm89dqqwzpdsb6h9w9ixndhnbpzm8w2"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ meson ninja pkgconfig gettext gobject-introspection python flex perl ]; + + propagatedBuildInputs = [ gst-plugins-base libxml2 ]; + + mesonFlags = [ + "-Dgtk_doc=disabled" + ]; + + patches = [ + ./fix_pkgconfig_includedir.patch + ]; + + postPatch = '' + sed -i -r -e 's/p(bad|good) = .*/p\1 = pbase/' tests/check/meson.build + ''; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..1e12f3bbfbea --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/ges/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index a612b21b..c017eaff 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', get_option('prefix')) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', apiversion) + pkgconf.set('VERSION', gst_version) + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/good/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/good/default.nix new file mode 100644 index 000000000000..c801684b0659 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/good/default.nix @@ -0,0 +1,94 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, python +, gst-plugins-base, orc, bzip2, gettext +, libv4l, libdv, libavc1394, libiec61883 +, libvpx, speex, flac, taglib, libshout +, cairo, gdk-pixbuf, aalib, libcaca +, libsoup, libpulseaudio, libintl +, darwin, lame, mpg123, twolame +, gtkSupport ? false, gtk3 ? null +# As of writing, jack2 incurs a Qt dependency (big!) via `ffado`. +# In the fuure we should probably split `ffado`. +, enableJack ? false +, libXdamage +, libXext +, libXfixes +, ncurses +, xorg +, libgudev +, wavpack +, jack2 +}: + +assert gtkSupport -> gtk3 != null; + +let + inherit (stdenv.lib) optional optionals; +in +stdenv.mkDerivation rec { + pname = "gst-plugins-good"; + version = "1.16.0"; + + meta = with stdenv.lib; { + description = "Gstreamer Good Plugins"; + homepage = "https://gstreamer.freedesktop.org"; + longDescription = '' + a set of plug-ins that we consider to have good quality code, + correct functionality, our preferred license (LGPL for the plug-in + code, LGPL or LGPL-compatible for the supporting library). + ''; + license = licenses.lgpl2Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ matthewbauer ]; + }; + + src = fetchurl { + url = "${meta.homepage}/src/gst-plugins-good/${pname}-${version}.tar.xz"; + sha256 = "1zdhif1mhf0ihkjpjyrh65g2iz2cawkjjb3h5w8h9ml06grxwjk5"; + }; + + outputs = [ "out" "dev" ]; + + patches = [ ./fix_pkgconfig_includedir.patch ]; + + nativeBuildInputs = [ pkgconfig python meson ninja gettext ]; + + NIX_LDFLAGS = "-lncurses"; + + buildInputs = [ + gst-plugins-base orc bzip2 + libdv libvpx speex flac taglib + cairo gdk-pixbuf aalib libcaca + libsoup libshout lame mpg123 twolame libintl + libXdamage + libXext + libXfixes + ncurses + xorg.libXfixes + xorg.libXdamage + wavpack + ] + ++ optional gtkSupport gtk3 # for gtksink + ++ optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Cocoa ] + ++ optionals stdenv.isLinux [ libv4l libpulseaudio libavc1394 libiec61883 libgudev ] + ++ optionals (stdenv.isLinux && enableJack) [ + jack2 + ]; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Dqt5=disabled" # not clear as of writing how to correctly pass in the required qt5 deps + ] + ++ optional (!gtkSupport) "-Dgtk3=disabled" + ++ optionals (!stdenv.isLinux || !enableJack) [ + "-Djack=disabled" # unclear whether Jack works on Darwin + ] + ++ optionals (!stdenv.isLinux) [ + "-Dv4l2-gudev=disabled" + ]; + + # fails 1 tests with "Unexpected critical/warning: g_object_set_is_valid_property: object class 'GstRtpStorage' has no property named ''" + doCheck = false; + +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch b/nixpkgs/pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch new file mode 100644 index 000000000000..f68ad603a37c --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/good/fix_pkgconfig_includedir.patch @@ -0,0 +1,15 @@ +diff --git a/pkgconfig/meson.build b/pkgconfig/meson.build +index b3bf0d4d4..3e6e576c0 100644 +--- a/pkgconfig/meson.build ++++ b/pkgconfig/meson.build +@@ -2,8 +2,8 @@ pkgconf = configuration_data() + + pkgconf.set('prefix', get_option('prefix')) + pkgconf.set('exec_prefix', '${prefix}') +-pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir'))) +-pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir'))) ++pkgconf.set('libdir', join_paths(get_option('prefix'), get_option('libdir'))) ++pkgconf.set('includedir', join_paths(get_option('prefix'), get_option('includedir'))) + pkgconf.set('GST_API_VERSION', api_version) + pkgconf.set('VERSION', gst_version) + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/gstreamermm/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/gstreamermm/default.nix new file mode 100644 index 000000000000..35c278da03b1 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/gstreamermm/default.nix @@ -0,0 +1,34 @@ +{ stdenv, fetchurl, pkgconfig, file, glibmm, gst_all_1, gnome3 }: +stdenv.mkDerivation rec { + pname = "gstreamermm"; + version = "1.10.0"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "0q4dx9sncqbwgpzma0zvj6zssc279yl80pn8irb95qypyyggwn5y"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ pkgconfig file ]; + + propagatedBuildInputs = [ glibmm gst_all_1.gst-plugins-base ]; + + enableParallelBuilding = true; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + versionPolicy = "none"; # Unpredictable version stability + }; + }; + + meta = with stdenv.lib; { + description = "C++ interface for GStreamer"; + homepage = "https://gstreamer.freedesktop.org/bindings/cplusplus.html"; + license = licenses.lgpl21Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ romildo ]; + }; + +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gnonlin/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gnonlin/default.nix new file mode 100644 index 000000000000..402074a4e5f4 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gnonlin/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, pkgconfig, gst-plugins-base, gstreamer }: + +stdenv.mkDerivation rec { + name = "gnonlin-0.10.17"; + + src = fetchurl { + urls = [ + "https://gstreamer.freedesktop.org/src/gnonlin/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "0dc9kvr6i7sh91cyhzlbx2bchwg84rfa4679ccppzjf0y65dv8p4"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gst-plugins-base gstreamer ]; + + meta = { + homepage = https://gstreamer.freedesktop.org/modules/gnonlin.html; + description = "Gstreamer Non-Linear Multimedia Editing Plugins"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-bad/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-bad/default.nix new file mode 100644 index 000000000000..77465645d237 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-bad/default.nix @@ -0,0 +1,36 @@ +{ fetchurl, stdenv, pkgconfig, glib, gstreamer, gst-plugins-base +, libdvdnav, libdvdread, orc }: + +stdenv.mkDerivation rec { + name = "gst-plugins-bad-0.10.23"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-plugins-bad/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "148lw51dm6pgw8vc6v0fpvm7p233wr11nspdzmvq7bjp2cd7vbhf"; + }; + + postInstall = '' + # Fixes CVE-2016-9447 + # Does not actually impact NSF playback + rm -v $out/lib/gstreamer-0.10/libgstnsf.so + ''; + + buildInputs = + [ pkgconfig glib gstreamer gst-plugins-base libdvdnav libdvdread orc ]; + + enableParallelBuilding = true; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "‘Bad’ (potentially low quality) plug-ins for GStreamer"; + + maintainers = [stdenv.lib.maintainers.raskin]; + platforms = stdenv.lib.platforms.linux; + + license = stdenv.lib.licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/default.nix new file mode 100644 index 000000000000..db75705c825a --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/default.nix @@ -0,0 +1,53 @@ +{ fetchurl, stdenv, pkgconfig, gstreamer, xorg, alsaLib, cdparanoia +, libogg, libtheora, libvorbis, freetype, pango, liboil, glib, cairo, orc +, libintl +, ApplicationServices +, # Whether to build no plugins that have external dependencies + # (except the ALSA plugin). + minimalDeps ? false +}: + +stdenv.mkDerivation rec { + name = "gst-plugins-base-0.10.36"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-plugins-base/${name}.tar.xz" + "mirror://gentoo/distfiles/${name}.tar.xz" + ]; + sha256 = "0jp6hjlra98cnkal4n6bdmr577q8mcyp3c08s3a02c4hjhw5rr0z"; + }; + + patchPhase = '' + sed -i 's@/bin/echo@echo@g' configure + sed -i -e 's/^ /\t/' docs/{libs,plugins}/Makefile.in + + patch -p1 < ${./gcc-4.9.patch} + ''; + + outputs = [ "out" "dev" ]; + + # TODO : v4l, libvisual + buildInputs = + [ pkgconfig glib cairo orc libintl ] + # can't build alsaLib on darwin + ++ stdenv.lib.optional (!stdenv.isDarwin) alsaLib + ++ stdenv.lib.optionals (!minimalDeps) + [ xorg.xlibsWrapper xorg.libXv libogg libtheora libvorbis freetype pango + liboil ] + # can't build cdparanoia on darwin + ++ stdenv.lib.optional (!minimalDeps && !stdenv.isDarwin) cdparanoia + ++ stdenv.lib.optional stdenv.isDarwin ApplicationServices; + + propagatedBuildInputs = [ gstreamer ]; + + postInstall = "rm -rf $out/share/gtk-doc"; + + meta = with stdenv.lib; { + homepage = https://gstreamer.freedesktop.org; + description = "Base plug-ins for GStreamer"; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ lovek323 ]; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/gcc-4.9.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/gcc-4.9.patch new file mode 100644 index 000000000000..fd9f6ea240d2 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-base/gcc-4.9.patch @@ -0,0 +1,38 @@ +https://bugzilla.gnome.org/show_bug.cgi?id=670690 + +From 9bd5a7ae5435469c3557a3d70e762791cb3dc5c7 Mon Sep 17 00:00:00 2001 +From: Antoine Jacoutot <ajacoutot@gnome.org> +Date: Mon, 20 Jan 2014 15:44:09 +0100 +Subject: [PATCH] audioresample: fix build on BSD + +On i386, EMMINTRIN is defined but not usable without sse so check for +__SSE__ and __SSE2__ as well. + +https://bugzilla.gnome.org/show_bug.cgi?id=670690 +--- + gst/audioresample/resample.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gst/audioresample/resample.c b/gst/audioresample/resample.c +index 98d006c..481fa01 100644 +--- a/gst/audioresample/resample.c ++++ b/gst/audioresample/resample.c +@@ -77,13 +77,13 @@ + #define EXPORT G_GNUC_INTERNAL + + #ifdef _USE_SSE +-#ifndef HAVE_XMMINTRIN_H ++#if !defined(__SSE__) || !defined(HAVE_XMMINTRIN_H) + #undef _USE_SSE + #endif + #endif + + #ifdef _USE_SSE2 +-#ifndef HAVE_EMMINTRIN_H ++#if !defined(__SSE2__) || !defined(HAVE_XMMINTRIN_H) + #undef _USE_SSE2 + #endif + #endif +-- +1.8.5.3 + diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/default.nix new file mode 100644 index 000000000000..2b78d4daaf30 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/default.nix @@ -0,0 +1,52 @@ +{ fetchurl, stdenv, lib, pkgconfig, gst-plugins-base, aalib, cairo +, flac, libjpeg, speex, libpng, libdv, libcaca, libvpx +, taglib, libpulseaudio, gdk-pixbuf, orc +, glib, gstreamer, bzip2, libsoup, libshout, ncurses, libintl +, # Whether to build no plugins that have external dependencies + # (except the PulseAudio plugin). + minimalDeps ? false +}: + +stdenv.mkDerivation rec { + name = "gst-plugins-good-0.10.31"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-plugins-good/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "1ijswgcrdp243mfsyza31fpzq6plz40p4b83vkr2x4x7807889vy"; + }; + + patches = [ ./v4l.patch ./linux-headers-3.9.patch ]; + + configureFlags = [ "--enable-experimental" "--disable-oss" ]; + + buildInputs = + [ pkgconfig glib gstreamer gst-plugins-base libintl ] + ++ lib.optional stdenv.isLinux libpulseaudio + ++ lib.optionals (!minimalDeps) + [ aalib libcaca cairo libdv flac libjpeg libpng speex + taglib bzip2 libvpx gdk-pixbuf orc libsoup libshout ]; + + enableParallelBuilding = true; + + postInstall = lib.optionalString (!minimalDeps) '' + substituteInPlace $out/lib/gstreamer-0.10/libgstaasink.la \ + --replace "${ncurses.dev}/lib" "${ncurses.out}/lib" + ''; + + # fails 1 out of 65 tests with "Could not read TLS certificate from '../../tests/files/test-cert.pem': TLS support is not available" + doCheck = false; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "`Good' plug-ins for GStreamer"; + + maintainers = [stdenv.lib.maintainers.raskin]; + platforms = stdenv.lib.platforms.unix; + + license = stdenv.lib.licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/linux-headers-3.9.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/linux-headers-3.9.patch new file mode 100644 index 000000000000..f13d3a166714 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/linux-headers-3.9.patch @@ -0,0 +1,27 @@ +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-plugins/gst-plugins-v4l2/files/gst-plugins-v4l2-0.10.31-linux-headers-3.9.patch + +From 8e633d2059cb835448021cf79becb487aff10975 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera <hadess@hadess.net> +Date: Mon, 18 Mar 2013 14:59:35 +0000 +Subject: v4l2: fix compilation against newer kernel headers as on FC19 + +--- +diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c +index 07d390a..4c10f4f 100644 +--- a/sys/v4l2/v4l2_calls.c ++++ b/sys/v4l2/v4l2_calls.c +@@ -291,8 +291,12 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) + break; + case V4L2_CID_HFLIP: + case V4L2_CID_VFLIP: ++#ifndef V4L2_CID_PAN_RESET + case V4L2_CID_HCENTER: ++#endif ++#ifndef V4L2_CID_TILT_RESET + case V4L2_CID_VCENTER: ++#endif + #ifdef V4L2_CID_PAN_RESET + case V4L2_CID_PAN_RESET: + #endif +-- +cgit v0.9.0.2-2-gbebe diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/v4l.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/v4l.patch new file mode 100644 index 000000000000..22cff574134f --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-good/v4l.patch @@ -0,0 +1,11 @@ +diff -ru -x '*~' gst-plugins-good-0.10.31-orig/sys/v4l2/gstv4l2bufferpool.c gst-plugins-good-0.10.31/sys/v4l2/gstv4l2bufferpool.c +--- gst-plugins-good-0.10.31-orig/sys/v4l2/gstv4l2bufferpool.c 2011-12-30 14:59:13.000000000 +0100 ++++ gst-plugins-good-0.10.31/sys/v4l2/gstv4l2bufferpool.c 2013-01-28 17:41:25.549523708 +0100 +@@ -181,7 +181,6 @@ + GST_LOG_OBJECT (pool->v4l2elem, " MMAP offset: %u", + ret->vbuffer.m.offset); + GST_LOG_OBJECT (pool->v4l2elem, " length: %u", ret->vbuffer.length); +- GST_LOG_OBJECT (pool->v4l2elem, " input: %u", ret->vbuffer.input); + + data = (guint8 *) v4l2_mmap (0, ret->vbuffer.length, + PROT_READ | PROT_WRITE, MAP_SHARED, pool->video_fd, diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-ugly/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-ugly/default.nix new file mode 100644 index 000000000000..2f46016adac8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-plugins-ugly/default.nix @@ -0,0 +1,30 @@ +{ fetchurl, stdenv, pkgconfig, glib, gstreamer, gst-plugins-base +, libmad, libdvdread, a52dec, x264, orc, lame, libintl }: + +stdenv.mkDerivation rec { + name = "gst-plugins-ugly-0.10.19"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-plugins-ugly/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "1w4d5iz9ffvh43l261zdp997i6s2iwd61lflf755s3sw4xch1a8w"; + }; + + buildInputs = + [ pkgconfig glib gstreamer gst-plugins-base libmad libdvdread a52dec x264 orc lame libintl ]; + + enableParallelBuilding = true; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "‘Ugly’ (potentially patent-encumbered) plug-ins for GStreamer"; + + maintainers = [stdenv.lib.maintainers.raskin]; + platforms = stdenv.lib.platforms.unix; + + license = stdenv.lib.licenses.lgpl2Plus; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix new file mode 100644 index 000000000000..c8414a7b681b --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/default.nix @@ -0,0 +1,37 @@ +{ fetchurl, stdenv, pkgconfig, python2Packages, gstreamer, gst-plugins-base +}: + +let + inherit (python2Packages) python pygobject2; +in stdenv.mkDerivation rec { + name = "gst-python-0.10.22"; + + src = fetchurl { + urls = [ + "${meta.homepage}/src/gst-python/${name}.tar.bz2" + "mirror://gentoo/distfiles/${name}.tar.bz2" + ]; + sha256 = "0y1i4n5m1diljqr9dsq12anwazrhbs70jziich47gkdwllcza9lg"; + }; + + hardeningDisable = [ "bindnow" ]; + + # Need to disable the testFake test case due to bug in pygobject. + # See https://bugzilla.gnome.org/show_bug.cgi?id=692479 + patches = [ ./disable-testFake.patch ]; + + buildInputs = + [ pkgconfig gst-plugins-base pygobject2 ] + ; + + propagatedBuildInputs = [ gstreamer python ]; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "Python bindings for GStreamer"; + + license = stdenv.lib.licenses.lgpl2Plus; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/disable-testFake.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/disable-testFake.patch new file mode 100644 index 000000000000..d0c9960e5d22 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gst-python/disable-testFake.patch @@ -0,0 +1,56 @@ +diff -Nurp gst-python-0.10.22.orig/testsuite/test_bin.py gst-python-0.10.22/testsuite/test_bin.py +--- gst-python-0.10.22.orig/testsuite/test_bin.py 2014-10-29 18:58:00.921827721 +0100 ++++ gst-python-0.10.22/testsuite/test_bin.py 2014-10-29 19:00:32.019353092 +0100 +@@ -131,52 +131,6 @@ class BinAddRemove(TestCase): + self.assertRaises(gst.AddError, self.bin.add, src, sink) + self.bin.remove(src, sink) + self.assertRaises(gst.RemoveError, self.bin.remove, src, sink) +- +-class Preroll(TestCase): +- def setUp(self): +- TestCase.setUp(self) +- self.bin = gst.Bin('bin') +- +- def tearDown(self): +- # FIXME: wait for state change thread to settle down +- while self.bin.__gstrefcount__ > 1: +- time.sleep(0.1) +- self.assertEquals(self.bin.__gstrefcount__, 1) +- del self.bin +- TestCase.tearDown(self) +- +- def testFake(self): +- src = gst.element_factory_make('fakesrc') +- sink = gst.element_factory_make('fakesink') +- self.bin.add(src) +- +- # bin will go to paused, src pad task will start and error out +- self.bin.set_state(gst.STATE_PAUSED) +- ret = self.bin.get_state() +- self.assertEquals(ret[0], gst.STATE_CHANGE_SUCCESS) +- self.assertEquals(ret[1], gst.STATE_PAUSED) +- self.assertEquals(ret[2], gst.STATE_VOID_PENDING) +- +- # adding the sink will cause the bin to go in preroll mode +- gst.debug('adding sink and setting to PAUSED, should cause preroll') +- self.bin.add(sink) +- sink.set_state(gst.STATE_PAUSED) +- ret = self.bin.get_state(timeout=0) +- self.assertEquals(ret[0], gst.STATE_CHANGE_ASYNC) +- self.assertEquals(ret[1], gst.STATE_PAUSED) +- self.assertEquals(ret[2], gst.STATE_PAUSED) +- +- # to actually complete preroll, we need to link and re-enable fakesrc +- src.set_state(gst.STATE_READY) +- src.link(sink) +- src.set_state(gst.STATE_PAUSED) +- ret = self.bin.get_state() +- self.assertEquals(ret[0], gst.STATE_CHANGE_SUCCESS) +- self.assertEquals(ret[1], gst.STATE_PAUSED) +- self.assertEquals(ret[2], gst.STATE_VOID_PENDING) +- +- self.bin.set_state(gst.STATE_NULL) +- self.bin.get_state() + + class ConstructorTest(TestCase): + def testGood(self): diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/darwin.patch b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/darwin.patch new file mode 100644 index 000000000000..67dfc34434db --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/darwin.patch @@ -0,0 +1,14 @@ +diff --git a/gst/gstdatetime.c b/gst/gstdatetime.c +index 60f709f..cdc7e75 100644 +--- a/gst/gstdatetime.c ++++ b/gst/gstdatetime.c +@@ -21,8 +21,8 @@ + #include "config.h" + #endif + +-#include "glib-compat-private.h" + #include "gst_private.h" ++#include "glib-compat-private.h" + #include "gstdatetime.h" + #include <glib.h> + #include <math.h> diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/default.nix new file mode 100644 index 000000000000..c70e898a47d8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/default.nix @@ -0,0 +1,85 @@ +{ fetchurl, fetchpatch, stdenv, autoreconfHook +, perl, bison2, flex, pkgconfig, glib, libxml2, libintl, libunwind +}: + +stdenv.mkDerivation rec { + name = "gstreamer-0.10.36"; + + src = fetchurl { + urls = + [ "${meta.homepage}/src/gstreamer/${name}.tar.xz" + "mirror://gentoo/distfiles/${name}.tar.xz" + ]; + sha256 = "1nkid1n2l3rrlmq5qrf5yy06grrkwjh3yxl5g0w58w0pih8allci"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ autoreconfHook flex perl pkgconfig libintl bison2 glib ]; + buildInputs = stdenv.lib.optional stdenv.isDarwin libunwind; + propagatedBuildInputs = [ glib libxml2 ]; + + patches = [ + (fetchpatch { + url = "https://github.com/GStreamer/common/commit/03a0e5736761a72d4ed880e8c485bbf9e4a8ea47.patch"; + sha256 = "0rin3x01yy78ky3smmhbwlph18hhym18q4x9w6ddiqajg5lk4xhm"; + extraPrefix = "common/"; + stripLen = 1; + }) + (fetchpatch { + url = "https://github.com/GStreamer/common/commit/8aadeaaa8a948d7ce62008789ab03e9aa514c2b9.patch"; + sha256 = "0n2mqvq2al7jr2hflhz4l781i3jya5a9i725jvy508ambpgycz3x"; + extraPrefix = "common/"; + stripLen = 1; + }) + (fetchpatch { + url = "https://github.com/GStreamer/common/commit/7bb2bcecda471a0d514a964365a78150f3ee5747.patch"; + sha256 = "0famdj70m7wjvr1dpy7iywhrkqxmrshxz0rizz1bixgp42dvkhbq"; + extraPrefix = "common/"; + stripLen = 1; + }) + ] ++ + # See https://trac.macports.org/ticket/40783 for explanation of patch + stdenv.lib.optional stdenv.isDarwin ./darwin.patch; + + postPatch = '' + sed -i -e 's/^ /\t/' docs/gst/Makefile.in docs/libs/Makefile.in docs/plugins/Makefile.in + ''; + + configureFlags = [ + "--disable-examples" + "--localstatedir=/var" + "--disable-gtk-doc" + "--disable-docbook" + ]; + + doCheck = false; # fails. 2 tests crash + + postInstall = '' + # Hm, apparently --disable-gtk-doc is ignored... + rm -rf $out/share/gtk-doc + ''; + + setupHook = ./setup-hook.sh; + + meta = { + homepage = https://gstreamer.freedesktop.org; + + description = "Library for constructing graphs of media-handling components"; + + longDescription = '' + GStreamer is a library for constructing graphs of media-handling + components. The applications it supports range from simple + Ogg/Vorbis playback, audio/video streaming to complex audio + (mixing) and video (non-linear editing) processing. + + Applications can take advantage of advances in codec and filter + technology transparently. Developers can add new codecs and + filters by writing a simple plugin with a clean, generic + interface. + ''; + + license = stdenv.lib.licenses.lgpl2Plus; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/setup-hook.sh b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/setup-hook.sh new file mode 100644 index 000000000000..65ce26112519 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamer/setup-hook.sh @@ -0,0 +1,8 @@ +addGstreamerLibPath () { + if test -d "$1/lib/gstreamer-0.10" + then + export GST_PLUGIN_SYSTEM_PATH="${GST_PLUGIN_SYSTEM_PATH}${GST_PLUGIN_SYSTEM_PATH:+:}$1/lib/gstreamer-0.10" + fi +} + +addEnvHooks "$hostOffset" addGstreamerLibPath diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamermm/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamermm/default.nix new file mode 100644 index 000000000000..27036ad86edf --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/legacy/gstreamermm/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, glibmm, gstreamer, gst-plugins-base, libsigcxx, libxmlxx, pkgconfig }: + +let + ver_maj = "0.10"; + ver_min = "11"; +in +stdenv.mkDerivation { + name = "gstreamermm-${ver_maj}.${ver_min}"; + + src = fetchurl { + url = "mirror://gnome/sources/gstreamermm/${ver_maj}/gstreamermm-${ver_maj}.${ver_min}.tar.xz"; + sha256 = "12b5f377363594a69cb79f2f5cd0a8b1813ca6553680c3216e6354cfd682ebc6"; + }; + + doCheck = false; # Tests require pulseaudio in /homeless-shelter + + propagatedBuildInputs = [ + glibmm gstreamer gst-plugins-base libsigcxx libxmlxx + ]; + + nativeBuildInputs = [ pkgconfig ]; + + meta = with stdenv.lib; { + description = "C++ bindings for the GStreamer streaming multimedia library"; + homepage = https://www.gtkmm.org/; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ plcplc ]; + platforms = platforms.unix; + }; + +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/libav/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/libav/default.nix new file mode 100644 index 000000000000..1847b8d0c12b --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/libav/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig +, python, yasm, gst-plugins-base, orc, bzip2 +, gettext, withSystemLibav ? true, libav ? null +}: + +# Note that since gst-libav-1.6, libav is actually ffmpeg. See +# https://gstreamer.freedesktop.org/releases/1.6/ for more info. + +assert withSystemLibav -> libav != null; + +stdenv.mkDerivation rec { + pname = "gst-libav"; + version = "1.16.0"; + + meta = { + homepage = https://gstreamer.freedesktop.org; + license = stdenv.lib.licenses.lgpl2Plus; + platforms = stdenv.lib.platforms.unix; + }; + + src = fetchurl { + url = "${meta.homepage}/src/gst-libav/${pname}-${version}.tar.xz"; + sha256 = "16ixqpfrr7plaaz14n3vagr2q5xbfkv7gpmcsyndrkx98f813b6z"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = with stdenv.lib; + [ meson ninja gettext pkgconfig python ] + ++ optional (!withSystemLibav) yasm + ; + + buildInputs = with stdenv.lib; + [ gst-plugins-base orc bzip2 ] + ++ optional withSystemLibav libav + ; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + ]; + +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/rtsp-server/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/rtsp-server/default.nix new file mode 100644 index 000000000000..5c571fa4a1e7 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/rtsp-server/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig +, gettext, gobject-introspection +, gst-plugins-base +, gst-plugins-bad +}: + +stdenv.mkDerivation rec { + pname = "gst-rtsp-server"; + version = "1.16.0"; + + meta = with stdenv.lib; { + description = "Gstreamer RTSP server"; + homepage = "https://gstreamer.freedesktop.org"; + longDescription = '' + a library on top of GStreamer for building an RTSP server. + ''; + license = licenses.lgpl2Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ bkchr ]; + }; + + src = fetchurl { + url = "${meta.homepage}/src/gst-rtsp-server/${pname}-${version}.tar.xz"; + sha256 = "069zy159izy50blci9fli1i2r8jh91qkmgrz1n0xqciy3bn9x3hr"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ meson ninja gettext gobject-introspection pkgconfig ]; + + buildInputs = [ gst-plugins-base gst-plugins-bad ]; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + ]; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/ugly/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/ugly/default.nix new file mode 100644 index 000000000000..552ab1ec2921 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/ugly/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, python +, gst-plugins-base, orc, gettext +, a52dec, libcdio, libdvdread +, libmad, libmpeg2, x264, libintl, lib +, opencore-amr +, darwin +}: + +stdenv.mkDerivation rec { + pname = "gst-plugins-ugly"; + version = "1.16.0"; + + meta = with lib; { + description = "Gstreamer Ugly Plugins"; + homepage = "https://gstreamer.freedesktop.org"; + longDescription = '' + a set of plug-ins that have good quality and correct functionality, + but distributing them might pose problems. The license on either + the plug-ins or the supporting libraries might not be how we'd + like. The code might be widely known to present patent problems. + ''; + license = licenses.lgpl2Plus; + platforms = platforms.unix; + maintainers = with maintainers; [ matthewbauer ]; + }; + + src = fetchurl { + url = "${meta.homepage}/src/gst-plugins-ugly/${pname}-${version}.tar.xz"; + sha256 = "1hm46c1fy9vl1wfwipsj41zp79cm7in1fpmjw24j5hriy32n82g3"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ meson ninja gettext pkgconfig python ]; + + buildInputs = [ + gst-plugins-base orc + a52dec libcdio libdvdread + libmad libmpeg2 x264 + libintl + opencore-amr + ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; + [ IOKit CoreFoundation DiskArbitration ]); + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + "-Dsidplay=disabled" # sidplay / sidplay/player.h isn't packaged in nixpkgs as of writing + ]; + + NIX_LDFLAGS = [ "-lm" ]; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/vaapi/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/vaapi/default.nix new file mode 100644 index 000000000000..adb495689e33 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/vaapi/default.nix @@ -0,0 +1,49 @@ +{ stdenv, fetchurl, meson, ninja, pkgconfig, gst-plugins-base, bzip2, libva, wayland +, libdrm, udev, xorg, libGLU_combined, gstreamer, gst-plugins-bad, nasm +, libvpx, python, fetchpatch +}: + +stdenv.mkDerivation rec { + pname = "gst-vaapi"; + version = "1.16.0"; + + src = fetchurl { + url = "${meta.homepage}/src/gstreamer-vaapi/gstreamer-vaapi-${version}.tar.xz"; + sha256 = "07qpynamiz0lniqajcaijh3n7ixs4lfk9a5mfk50sng0dricwzsf"; + }; + + patches = [ + # See: https://mail.gnome.org/archives/distributor-list/2019-September/msg00000.html + # Note that the patch has now been actually accepted upstream. + (fetchpatch { + url = "https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/commit/a90daabb84f983d2fa05ff3159f7ad59aa648b55.patch"; + sha256 = "0p2qygq6b5h6nxjdfnlzbsyih43hjq5c94ag8sbyyb8pmnids9rb"; + }) + ]; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ meson ninja pkgconfig bzip2 ]; + + buildInputs = [ + gstreamer gst-plugins-base gst-plugins-bad libva wayland libdrm udev + xorg.libX11 xorg.libXext xorg.libXv xorg.libXrandr xorg.libSM + xorg.libICE libGLU_combined nasm libvpx python + ]; + + preConfigure = '' + export GST_PLUGIN_PATH_1_0=$out/lib/gstreamer-1.0 + mkdir -p $GST_PLUGIN_PATH_1_0 + ''; + + mesonFlags = [ + "-Dexamples=disabled" # requires many dependencies and probably not useful for our users + ]; + + meta = { + homepage = https://gstreamer.freedesktop.org; + license = stdenv.lib.licenses.lgpl21Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ tstrobel ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/gstreamer/validate/default.nix b/nixpkgs/pkgs/development/libraries/gstreamer/validate/default.nix new file mode 100644 index 000000000000..ad013d1570e1 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gstreamer/validate/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchurl, pkgconfig, gstreamer, gst-plugins-base +, python, gobject-introspection, json-glib +}: + +stdenv.mkDerivation rec { + pname = "gst-validate"; + version = "1.16.0"; + + meta = { + description = "Integration testing infrastructure for the GStreamer framework"; + homepage = https://gstreamer.freedesktop.org; + license = stdenv.lib.licenses.lgpl2Plus; + platforms = stdenv.lib.platforms.unix; + }; + + src = fetchurl { + url = "${meta.homepage}/src/gst-validate/${pname}-${version}.tar.xz"; + sha256 = "1jfnd0g9hmdbqfxsx96yc9vpf1w6m33hqwrr6lj4i83kl54awcck"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ + pkgconfig gobject-introspection + ]; + + buildInputs = [ + python json-glib + ]; + + propagatedBuildInputs = [ gstreamer gst-plugins-base ]; + + enableParallelBuilding = true; + + mesonFlags = [ + # Enables all features, so that we know when new dependencies are necessary. + "-Dauto_features=enabled" + ]; +} |