NMT:cross: Difference between revisions

From Lundman Wiki
No edit summary
No edit summary
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
export CTARGET=mipsel-linux-uclibc
'''llink is a media streamer''' that lets you play movies, view online trailers, browse images or play music over a network using the http protocol. It should work with most Syabas NMT hardware (NetworkedMediaTank middleware based players), such as the Popcorn Hour A- and B-series, HDX, iSTAR, Egreat a whole range of others, possibly even a couple of older ones like the LinkTheater. Some of the best reasons to run llink is that it can run on a great many platforms, including most popular NAS devices - even on the NMT player itself - and it can play media directly from RAR files.  '''llink''' is also a '''UPNP MediaServer''', sometimes called DNLA/UPNP, and is able to talk to many UPNP devices.  
export ARCH=mips
rm -rf build
mkdir build
cd build
../binutils-2.17/configure \
--target=$CTARGET \
--prefix=/usr/local/$ARCH/ \
--with-sysroot=/usr/local/$ARCH/$CTARGET \
--disable-werror
make
make install
# It installs things we don't want (and will fail later)
rm -rf /usr/local/$ARCH/{info,lib,man,share}
export PATH=/usr/local/$ARCH/bin:$PATH
cd ../linux-2.6.15.7
yes "" | make ARCH=$ARCH oldconfig prepare
#With 2.6.x, this will probably end in an error because you don't have a gcc
#cross-compiler yet, but you can ignore that. Just copy over the headers:
mkdir -p /usr/local/$ARCH/$CTARGET/usr/include/
rsync -arv include/linux include/asm-generic /usr/local/$ARCH/$CTARGET/usr/include/
rsync -arv include/asm-$ARCH/ /usr/local/$ARCH/$CTARGET/usr/include/asm
 
cd ../uClibc-0.9.28.3/
make menuconfig
#Target Architecture: mips
#Target Architecture Features and Options:
#  Target Process Architecture: MIPS I
#  Target Process Endianness: Little Endian
#  Target CPU has a memory management unit (MMU): YES
#  Enable floating point number support: YES
#  Target CPU has a floating point unit: NO
#  (/usr/local/mips/mipsel-linux-uclibc/usr) Linux kernel header location
#
#Library Installation Options
#  (/usr/local/mips/mipsel-linux-uclibc) uClibc runtime library directory
#  (/usr/local/mips/mipsel-linux-uclibc/usr) uClibc development environment
#
#uClibc development/debugging options
#  (mipsel-linux-uclibc-) Cross-compiling toolchain prefix
# This command should fail.
make CROSS=mipsel-linux-uclibc- 
# Copy the new include files
rsync -arvL include/ /usr/local/$ARCH/$CTARGET/sys-include
cd ../build/
  rm -rf *
../gcc-4.0.4/configure \
--target=$CTARGET \
--prefix=/usr/local/mips \
--with-sysroot=/usr/local/mips/$CTARGET \
--enable-languages=c \
--disable-shared \
--disable-checking \
--disable-werror \
        --disable-__cxa_atexit \
        --enable-target-optspace \
        --disable-nls \
        --enable-multilib \
        --with-float=soft \
        --enable-sjlj-exceptions \
        --disable-threads
make
make install
# Remove the temporary headers, and compile it properly.
rm -rf /usr/local/$ARCH/$CTARGET/sys-include
cd ../uClibc-0.9.28.3/
make CROSS=mipsel-linux-uclibc-
make install


# This bit fixes the C++ issue. But should not be required. TODO: Figure out why
cd /usr/local/mips/$CTARGET/lib
ln -s ../usr/lib//crti.o .
ln -s ../usr/lib//crtn.o .
ln -s ../usr/lib//crt1.o .
# Now recompile gcc fully.
cd ../build/
rm -rf *
../gcc-4.0.4/configure \
        --target=$CTARGET \
        --prefix=/usr/local/mips \
        --with-sysroot=/usr/local/mips/$CTARGET \
        --enable-languages=c,c++ \
        --enable-shared \
        --disable-checking \
        --disable-werror \
        --disable-__cxa_atexit \
        --enable-target-optspace \
        --disable-nls \
        --enable-multilib \
        --with-float=soft \
        --enable-sjlj-exceptions \
        --enable-threads=posix


[[Image:llink.screen2.jpg|right|thumb|100px|llink-2.2.0 aqua skin]]
# It is likely it will fail on '''__ctype_touplow_t*''', this is quite easy to fix.
[[Image:llink.screen3.jpg|right|thumb|100px|llink-1.9.9 jukebox skin]]
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14939
[[Image:llink.screen4.jpg|right|thumb|100px|llink-2.2.0 clterm skin]]
# I went with the #ifdef changes of ../gcc-4.0.4/libstdc++-v3/config/locale/generic/c_locale.h
[[Image:llink.screen5.jpg|right|thumb|100px|llink-2.2.0 nmt skin]]
# and ../gcc-4.0.4/libstdc++-v3/config/os/gnu-linux/ctype_base.h
[[Image:Kamaishi_skies.jpg|right|thumb|100px|llink-2.2.0 kamaishi_skies skin]]
make
make install




Unfortunately this will use libc dynamic linker, which is incorrect. So at the moment, use the following line to compile your executables.


# gcc -Wl,--dynamic-linker,/lib/ld-uClibc.so.0 -o hello hello.c
=== llink overview ===


I will attempt to find out how to make it use the correct dynamic linker by default.
 
* [[Llink:compatible_players|List of compatible players]]
==== Features ====
 
* Parses various video containers: vob, avi, ts, mkv, tp, mov, m2ts, evo.
* Streams any file type the NMT player can handle: mp3, flac, jpeg, png etc.
* Can play straight '''from rar files''': no more need to unrar your media. (Comes with special unrar-3.7.8-seek.)
* [[Llink:skins|Skin support]]: make your own html templates  or choose from pre-built.
* Simple iMDb querying to look up media information for Jukebox skins.
* Both HD and SD skins available.
* Light, tiny and clean code for Unix, OsX and Windows. Compiles to most platforms.
* Paginating: support to send listings in pages, with tags for Next/Prev.
* PlayAll cgi tag, and PlayAllFrom.
* External subtitles: subtitle files can be consolidated in one directory.
* libdvdnav support (and libdvdcss): provides basic playback of DVD .iso and .img files and from DVD drives.
* UDF 2.50 BD5-ISO support: provides basic playback of Bluray and HD-DVD.
* (External process support, like mencoder: incomplete).
* Can initiate custom shell scripts.
* Keep track of what you have already seen: small database for 'watched' media.
* UPNP MediaServer
* Transcoding Streaming support added to 2.3.2
 
<paypal></paypal>
 
 
=== Todo ===
 
In no particular order:
* Add a transparent FTP fs layer? this would be well nice if it worked with RAR. ''Be quite easy to do now as a 'unrar' replacement, 'unftp'.''
* Scraping/parsing of .NFO files (for media info).
* mms:// protocol support (libmms looks ok, but has own select() call, needs deeper inspection).
** Implemented as unmms (unrar clone) but Stream support on PCH is lacking. Please bug Syabas about letting us set stream-mode
* Scrape/look for subtitles (ex. http://www.subtitlesource.org/title/tt0325710/).
* Proposed [[llink:menus|menus]]. Partly working since v2.2.0
* Configuration via web page.
* [http://www.teamavalaunch.com/ Avalaunch] style backgrounds. (Ex. fetch picture from [http://apod.nasa.gov/apod/archivepix.html NASA] every 30s and refresh) for mp3/playlists.
* Playing mp3s, and photos from RAR files don't appear to work.
* When playing music, allow to specify pictures to view.
* <s>Explore what more power we get from libdvdnav: choose audio tracks etc.</s> ALso, subtitle streams since C200 can display!
* Support [http://www.antp.be/software/moviecatalog ANT's Movie Database] .xml files.
** Difficult. ANT did weird things like put entire DB in one giant XML, with no references to the disk path.
* Support [http://www.movienizer.com Movienizer's Movie Database] .xml files.  Please provide sample .xml files for inspection.
* Remote skin support, e.g. invoke play from an iPhone or any other web enabled device.
* Apparently directories/files with "&" may not get a tick in the visited db. URL decoding?
* Make ticked directories become un-ticked when new files (unticked) files are added to the directory.
* Add NMJ sqlite DB support. Test MediaInfo source [http://www.lundman.net/ftp/test-mediainfo.c] is working.
* BUG: upnp missing filters/sortcriteria.
 
=== User guide and other documentation  ===
 
Feel free to contribute to the wiki documentation:
 
* [[Llink:user_guide|User guide]] for functions.
* [[Llink:Windows_installation|Installation guide]] for Windows.
* [[llink:Linux_installation|Installation guide]] for Linux.
* [[llink:macros|Macros]] supported by the HTML engine in llink.
* [[llink:Samples|Sample Files]] for configuring llink Jukebox xml.
* [[llink:Compiling|Compiling]] Guide for compiling, cross-compiling and compiling on Windows.
 
=== Download binaries ===
 
Note: if you are in luck, devices not listed here may share platform and architecture.
Please report your success/failure.
 
* [[llink:windows|Windows]] 2.3.2 binaries for Windows OS
* [[llink:osx|OsX]] 2.3.1 binaries for Apple Macintosh Os X. App Store submitted.
* [[llink:nmt|NMT]] 2.3.0 binaries for the Network Media Tank (Popcornhour A-100, C200 etc.) '''Please use CSI to install'''
* [[llink:linux|Linux]] 2.3.0 binaries for Linux OS, Intel (add more if you can)
* [[llink:opensolaris|OpenSolaris]] 2.2.5 binaries for OpenSolaris (Solaris 11) OS, Intel
* [[llink:readynas|ReadyNAS]] 2.2.2 binaries and instructions for Infrant/Netgear ReadyNAS
* [[llink:synology|Synology]] 2.3.2 binaries and older, instructions for Synology NAS (ppc, arm and x86)
* [[llink:asus_wl-500gl|Asus WL-500GL]] binaries for Asus router running OpenWrt
* [[llink:Asus WL-500g Premium|Asus WL-500g Premium]] binaries for Asus router running Oleg's firmware
* [[llink:landisk|landisk]] binaries for IO-Data landisk uhdl-av, cpu-SH4
* "[[llink on a stick]]" let's you run llink from a USB stick or external USB drive (unmaintained)
* [[Llink:dlink_dns323|D-Link DNS-323]] binaries and instructions for D-Link NAS
* [http://forum.excito.net/viewtopic.php?p=6195 Bubba server] 2.2.0 Linux compile instructions (no binaries)
* [http://www.azboxworld.com/index.php?page=Thread&postID=66741#post66741 AzBox HD] 2.2.0 plugin binaries
* [[llink:buffalo|Buffalo]] 2.2.3 binaries and instructions for Buffalo Linkstation (arm)
* [[llink:Thecus|Thecus]] N5200-N0503 2.2.2 binaries (intel Atom)
* [[llink:qnap|QNAP]] 2.2.4 binaries for QNAP TS-109/209 series (arm)
 
''(Compilers, you can upload new versions directly in the wiki, see Synology page as example)''
 
=== Sources ===
 
* [[llink:sources|Sources]] Build your own for your platform. Includes autoconf for Unix and project files for Windows Visual Studio.
* libdvdcss sources are: [http://download.videolan.org/pub/libdvdcss/1.2.10/ libdvdcss-1.2.10.tar.gz]
* [[llink:mime|mime.types]] defining MIME types, generally not needed, only if you use it with a browser.
* <s>libdvdnav sources are: [http://www.mplayerhq.hu/MPlayer/releases/dvdnav/ libdvdnav-4.1.2]</s> ''libdvdnav sources now included.''
* <s>libdvdread with MSVC++ Project files: [http://www.lundman.net/ftp/llink/libdvdread-0.9.7-win32.tar.gz</s>
* <s>libdvdread sources for llink v2.0.8 to 2.1.1 only are: [http://www.dtek.chalmers.se/groups/dvd/downloads.shtml libdvdread-0.9.7.tar.bz]</s>
 
=== Known issues ===
 
Although llink is capable of many things, there are limitations that should be known to users.
Please read here for details: [[Llink:Known_issues]]
 
=== Changelog ===
 
The [[llink:changelog|llink changelog]] contains the basic release notes history.
 
 
=== Transcoding ===
 
* [[llink:transcoding|Transcoding]] is a large subject, full of endless tweaks and hacks. I am hoping there are users willing to help find the correct settings that will work for most.

Latest revision as of 23:32, 31 December 2011

llink is a media streamer that lets you play movies, view online trailers, browse images or play music over a network using the http protocol. It should work with most Syabas NMT hardware (NetworkedMediaTank middleware based players), such as the Popcorn Hour A- and B-series, HDX, iSTAR, Egreat a whole range of others, possibly even a couple of older ones like the LinkTheater. Some of the best reasons to run llink is that it can run on a great many platforms, including most popular NAS devices - even on the NMT player itself - and it can play media directly from RAR files. llink is also a UPNP MediaServer, sometimes called DNLA/UPNP, and is able to talk to many UPNP devices.


llink-2.2.0 aqua skin
llink-1.9.9 jukebox skin
llink-2.2.0 clterm skin
llink-2.2.0 nmt skin
llink-2.2.0 kamaishi_skies skin


llink overview

Features

  • Parses various video containers: vob, avi, ts, mkv, tp, mov, m2ts, evo.
  • Streams any file type the NMT player can handle: mp3, flac, jpeg, png etc.
  • Can play straight from rar files: no more need to unrar your media. (Comes with special unrar-3.7.8-seek.)
  • Skin support: make your own html templates or choose from pre-built.
  • Simple iMDb querying to look up media information for Jukebox skins.
  • Both HD and SD skins available.
  • Light, tiny and clean code for Unix, OsX and Windows. Compiles to most platforms.
  • Paginating: support to send listings in pages, with tags for Next/Prev.
  • PlayAll cgi tag, and PlayAllFrom.
  • External subtitles: subtitle files can be consolidated in one directory.
  • libdvdnav support (and libdvdcss): provides basic playback of DVD .iso and .img files and from DVD drives.
  • UDF 2.50 BD5-ISO support: provides basic playback of Bluray and HD-DVD.
  • (External process support, like mencoder: incomplete).
  • Can initiate custom shell scripts.
  • Keep track of what you have already seen: small database for 'watched' media.
  • UPNP MediaServer
  • Transcoding Streaming support added to 2.3.2

<paypal></paypal>


Todo

In no particular order:

  • Add a transparent FTP fs layer? this would be well nice if it worked with RAR. Be quite easy to do now as a 'unrar' replacement, 'unftp'.
  • Scraping/parsing of .NFO files (for media info).
  • mms:// protocol support (libmms looks ok, but has own select() call, needs deeper inspection).
    • Implemented as unmms (unrar clone) but Stream support on PCH is lacking. Please bug Syabas about letting us set stream-mode
  • Scrape/look for subtitles (ex. http://www.subtitlesource.org/title/tt0325710/).
  • Proposed menus. Partly working since v2.2.0
  • Configuration via web page.
  • Avalaunch style backgrounds. (Ex. fetch picture from NASA every 30s and refresh) for mp3/playlists.
  • Playing mp3s, and photos from RAR files don't appear to work.
  • When playing music, allow to specify pictures to view.
  • Explore what more power we get from libdvdnav: choose audio tracks etc. ALso, subtitle streams since C200 can display!
  • Support ANT's Movie Database .xml files.
    • Difficult. ANT did weird things like put entire DB in one giant XML, with no references to the disk path.
  • Support Movienizer's Movie Database .xml files. Please provide sample .xml files for inspection.
  • Remote skin support, e.g. invoke play from an iPhone or any other web enabled device.
  • Apparently directories/files with "&" may not get a tick in the visited db. URL decoding?
  • Make ticked directories become un-ticked when new files (unticked) files are added to the directory.
  • Add NMJ sqlite DB support. Test MediaInfo source [1] is working.
  • BUG: upnp missing filters/sortcriteria.

User guide and other documentation

Feel free to contribute to the wiki documentation:

Download binaries

Note: if you are in luck, devices not listed here may share platform and architecture. Please report your success/failure.

  • Windows 2.3.2 binaries for Windows OS
  • OsX 2.3.1 binaries for Apple Macintosh Os X. App Store submitted.
  • NMT 2.3.0 binaries for the Network Media Tank (Popcornhour A-100, C200 etc.) Please use CSI to install
  • Linux 2.3.0 binaries for Linux OS, Intel (add more if you can)
  • OpenSolaris 2.2.5 binaries for OpenSolaris (Solaris 11) OS, Intel
  • ReadyNAS 2.2.2 binaries and instructions for Infrant/Netgear ReadyNAS
  • Synology 2.3.2 binaries and older, instructions for Synology NAS (ppc, arm and x86)
  • Asus WL-500GL binaries for Asus router running OpenWrt
  • Asus WL-500g Premium binaries for Asus router running Oleg's firmware
  • landisk binaries for IO-Data landisk uhdl-av, cpu-SH4
  • "llink on a stick" let's you run llink from a USB stick or external USB drive (unmaintained)
  • D-Link DNS-323 binaries and instructions for D-Link NAS
  • Bubba server 2.2.0 Linux compile instructions (no binaries)
  • AzBox HD 2.2.0 plugin binaries
  • Buffalo 2.2.3 binaries and instructions for Buffalo Linkstation (arm)
  • Thecus N5200-N0503 2.2.2 binaries (intel Atom)
  • QNAP 2.2.4 binaries for QNAP TS-109/209 series (arm)

(Compilers, you can upload new versions directly in the wiki, see Synology page as example)

Sources

Known issues

Although llink is capable of many things, there are limitations that should be known to users. Please read here for details: Llink:Known_issues

Changelog

The llink changelog contains the basic release notes history.


Transcoding

  • Transcoding is a large subject, full of endless tweaks and hacks. I am hoping there are users willing to help find the correct settings that will work for most.