# Streaming "NowPlaying" with embedded Apps (download)



## davidblackledge

So, here's the new version of my "NowPlaying" toy app.
http://David.Blackledge.com/tivo/NowPlayingv2.zip
It can run with its own .bat file, and also includes instructions for installing under Galleon. If you run Galleon be sure to follow those instructions or shut down Galleon before running this...they may not get along very well (or maybe it doesn't matter because they're running different apps...I forget)

Old existing functionality: 

 Vaguely simulate the NowPlaying screen using content served directly from the TiVo, allow you to play videos via Video Streaming (doesn't work well with HD content unless you have a really fast network).

Added functionality:

 Using Zeroconf (JmDNS) find all TiVo HMO Video Sources (i.e. all TiVos plus other Video servers you might be running e.g. Galleon's GoBack) so you can choose which source to get a NowPlaying list from (not just the current TiVo)
 Supports "Play Folder" feature if you hit "play" with a folder selected... when one stream finishes, the next is started up.
 *While playing, open the info box ("info" or "right") and along with the program information there are three new "buttons" that allow you to run another application while playing a video*
 application list button (with icon where available) use up/down to select different applications, select to run the application - list of application is also gotten from ZeroConf functionality.
 application size/location choice (abreviated e.g. default is "B/R" for bottom/right corner at 1/2 size, other options include center, 3/4 size, and Full Screen)
 application transparency choice (0% (default), 25%, 50%, 75%)

The application will start up, shrunk/positioned as requested and will take all remote control input until the application is "exited" 
(upon Exit it will only be deactivated and hidden, so if it is playing e.g. an mp3, you'll still hear it until you start another application up)

This is the "application as a stream" functionality mentioned in the documentation. The Java SDK has a bug that prevents it from working (fix is on the Wiki). Witht his feature, all running applications continue to run, but only the active application receives Remote Control input. When a secondary application is activated, the primary one gets an "active=false" event, then when the secondary application is quit, the primary one gets an "active=true" event... the secondary application doesn't do anything other than what the programmer made it do on an inactivation or when the user selected the application-quitting option (perhaps it cleans up resources, perhaps it just sits there and keeps running).

Bonus: Run a video-streaming application in a non-full-screen mode while viewing a video and stream a second video ... (e.g. select the "Video" app that comes with this) 
Voila! Scaled-down video! It immediately steals the video-viewing port and the application scaling also scales down the video viewing port somehow... Careful, though. It immediately switches the CURRENT video stream to the shrunken port... the fact that it is now trying to stream ANOTHER video could cause you trouble...so I recommend quitting shortly after you start this and see the effect... I think it just pauses until the first/parent video stream is done, though.
The point is, if you open a Video stream resource in a streamed application (maybe even if you just open it in a simpler circumstance, I'm not sure) it will steal the port and apply an scaling, even if that resource is not really valid, so you could purposely open a bogus one to force the video to be small for the moment. (or just make that 2nd application your primary video-runner)

I'll put up a Java quick tutorial for JmDNS to supplement the (not so useful) Rendezvous one on the Wiki as soon as I get a chance.

Enjoy ;]


----------



## bodysoda

thanks will give it a try.


----------



## davidblackledge

jhilla said:


> I opened the port on the router and software firewall, but the app hangs in black screen on the tivo Please wait screen and nothing occurs. What do I still neeed to release?
> 
> C:\apps\NowPlayingv2>java -cp "jmdns-1.0.jar;hme-host-sample.jar;cbd.tivo.hmo.ja
> r;cbd.tivo.widgetsGadgets.jar;cbd.tivo.video.jar;cbd.tivo.jar;cbd.tivo.video.jar
> ;hme.jar;bananas.jar" com.tivo.hme.host.sample.Main --launcher launcher.txt
> Instance ID = 0001692733768350
> hme-host-sample version: 1.4.1 threadsafe-experimental
> debug: Loaded factory: com.blackledge.david.tivo.video.Video
> debug: Class loader for com.blackledge.david.tivo.video.Video: sun.misc.Launcher
> $AppClassLoader
> debug: Context class loader: sun.misc.Launcher$AppClassLoader
> debug: Loaded factory: com.blackledge.david.tivo.nowplaying.NowPlaying
> debug: Class loader for com.blackledge.david.tivo.nowplaying.NowPlaying: sun.mis
> c.Launcher$AppClassLoader
> debug: Context class loader: sun.misc.Launcher$AppClassLoader
> added factory
> added factory
> MDNS ADD: http://192.168.0.3:7288/video/
> Contacting mDNS localhost daemon at 127.0.0.1:5354
> mDNS localhost daemon: register [start]: http://192.168.0.3:7288/video/
> Registering service with mDNS daemon at 127.0.0.1:5354 : Video, _tivo-hme._tcp,
> 7288
> mDNS localhost daemon: registration failed: java.net.SocketException: Connection
> reset
> mDNS localhost daemon: register [FAIL]: http://192.168.0.3:7288/video/
> jmdns library: register [start]: http://192.168.0.3:7288/video/
> jmdns library: register [done]: http://192.168.0.3:7288/video/
> MDNS ADD: http://192.168.0.3:7288/nowplaying/
> Contacting mDNS localhost daemon at 127.0.0.1:5354
> mDNS localhost daemon: register [start]: http://192.168.0.3:7288/nowplaying/
> Registering service with mDNS daemon at 127.0.0.1:5354 : NowPlaying, _tivo-hme._
> tcp, 7288
> mDNS localhost daemon: registration failed: java.net.SocketException: Connection
> reset
> mDNS localhost daemon: register [FAIL]: http://192.168.0.3:7288/nowplaying/
> jmdns library: register [start]: http://192.168.0.3:7288/nowplaying/
> jmdns library: register [done]: http://192.168.0.3:7288/nowplaying/


Hmm... Have you tried starting the "Video" app that goes with this also sets up? If that comes up OK, then the problem is nowplaying is having trouble seeing TiVo video sources.

If the "Video" app doesn't come up either, then there is something else going on.

If you're desperate, I'd suggest rebooting the TiVo.

Other things to consider: if you're running another app on that computer, try quitting all of them, then only starting nowplaying. If you've never run an app on that computer, try running a different one and see if it works... maybe there is a configuration problem.


----------

