Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: foo_upnp (Read 1622549 times) previous topic - next topic
0 Members and 5 Guests are viewing this topic.

foo_upnp

Reply #25
Yes.

foo_upnp

Reply #26
Great plugin, coincidentally I was just looking for a way to access my Album List remotely, keep up the good work. 

Just two features I'm hoping for in the future: Is it possible to expand the program to allow streaming of vorbis files/streams? And is the program expandable to allow transcoding non-streamable formats to MP3/AAC/WMA? (maybe using the builtin foobar converter somehow?)
It's only audiophile if it's inconvenient.


foo_upnp

Reply #28
You got it.

foo_upnp

Reply #29
bubbleguuum,

I can't seem to get .90 (or earlier versions) working with Roku Soundbridge client(s). Tried transcoding FLAC (WAV and LPCM), and also pulling down MP3 w/o transcoding, but in all cases SB displays "can't play selection" error message. Cycling through each selected file displays the same error.

I have 2 SB's connected to the network. Browsing from the client devices works fine.

Also, .90 doesn't retain settings. Relaunching foobar returns to default settings in all cases.

Any ideas?  Anybody else got it working on Roku devices?


foo_upnp

Reply #30
bubbleguuum,

I can't seem to get .90 (or earlier versions) working with Roku Soundbridge client(s). Tried transcoding FLAC (WAV and LPCM), and also pulling down MP3 w/o transcoding, but in all cases SB displays "can't play selection" error message. Cycling through each selected file displays the same error.

I have 2 SB's connected to the network. Browsing from the client devices works fine.


These problems are hard to solve without having the actual hardware to test, each device behaving in its own quircky ways...
I'll put up instructions easy to follow (if you're a bit technical) to sniff the HTTP traffic between the device and the plugin.

Quote
Also, .90 doesn't retain settings. Relaunching foobar returns to default settings in all cases.


That's only the case when running with foo_dockable_panels. I'll have a fix for this tonight.

foo_upnp

Reply #31
hi, with foobar 0.9.6.3 beta 2 it doesn't save changes in upnp media server setting, after foobar restart options go back to default

ps. is it possible to add by album sorting in every playlist (not only in media library) on PS3?

foo_upnp

Reply #32
If you post instructions for sniffing, I'll try to help out. This might help, however:  I have another upnp server that works reliably with the Roku. It maintains and displays a list of quirks for various units.  Here are some examples:

Roku Soundbridge: skip child count.
Netgear MP101: replace empty genre, include sessionID, filter international characters
Buffalo Linktheater: Include sessionID, allow visual content, filter international characters
DLink DSM-320: Shrink large images, include sessionID, no server header, allow visual content, filter international characters

The other quirks on the list (i.e., not mentioned above) are: use flat URLs, omit host portion of URL, experimental DLNA

Perhaps this will help track down some compatibility issues?


foo_upnp

Reply #33
I'm having the same problems as Supertramp with the Popcorn Hour. I see all the pretty lists but can't play any items.

foo_upnp

Reply #34
I stongly suspect those device to not like the very long URLs the plugin generates. I have another naming scheme that produce way shorter and simpler URL at the expense of them
not to be valid between server restart which is usually no problem when used with such devices. I'll send you a test version if you wish we'll see how it goes.
In the meantime, can you say if your device works with WMP or Nero Media Home as the server ?


EDIT: I remember reading somewhere that the Popcorn Hour only support UPnP for video.

foo_upnp

Reply #35
oh. my dreams come true

thank you very much. I must try it immediatly

foo_upnp

Reply #36
Many goodies and polishing in this version! (first post to download)

v 0.91

- new: ability to stream all file formats without any conversion to WAV/LPCM  (option "stream all files in their orignal format if possible").
  Exceptions are tracks with a subsong id (FLAC + CUE for example) which are always streamed as WAV or LPCM.
- new: option to not list the server in the local UPnP browser (by default it is hidden to local browser)
- new: in configuration panel, button to quickly set server settings for use with this plugin as the client
- fix: save config when running under foo_dockable_panels. On first launch this will reset conf but it will be preserved in future versions.
- fix: starting the server in the configuration dialog was using the old settings (not the displayed one)
- fix: plugin was slowing down foobar when exiting app
- fix: better handling of merge of metadata+technical info coming from metadb cache, upnp browse info and http decode info.
- fix: server: ability to stream as WAV/LPCM formats that do not define technical info "samplerate" (hello mods and foo_dumb!)
- chg: server: do not expose upnp:// items to clients else it could get funny!

known issues:

- seeking in FLAC files streamed as FLAC can give random "Unsupported file format" errors
- in pref page, when closing the page and the server is restarted because of a settings change and the server set to be  visible in the local UPnP browser,
  this will freeze foobar (deadlock). This does not happen when doing start/stop server manually.

foo_upnp

Reply #37
Warning against foo_dockable_panels:
I advise against using foo_dockable_panels to use the UPnP browser panel. If you need this switch to using Columns UI instead (it's not that different from Default UI in functionality and has been improved a lot since it's early days).
foo_dockable_panels uses hacks to get around things in foobar2000 which is prohibited expressively. Also it uses unstable code and it actually caused foo_upnp to lock up and crash.
foo_upnp has enough bugs as it is (no offense) so adding other unstable components to the mix is not the smartest thing you can do.
Until buublegum is allowed access to the UI Elements SDK or it's released for everybody, the only sane way to use the UPnP Browser is by using Columns UI.
This is not meant as an assault on anyone particular. I'm just trying to help out.

And now for a bug report:
- Using foo_upnp to stream files to itself within the same foobar2000 instance crashes foobar2000.
- Multiple issues with the preferences page as long as the UPnP browser panel is visible. Users are advised to only use foo_upnp as a server or a client, but not both at the same time in a single foobar2000 instance.

Also a tip when using Windows Media Player on the client side to test foo_upnp:
Windows Media Player caches media items from UPnP servers so be sure to restart WMP and refresh the list view to get rid of non-working items. I was caught by this issue after wondering why some options in foo_upnp didn't take effect.

foo_upnp

Reply #38
v 0.91

- new: ability to stream all file formats without any conversion to WAV/LPCM  (option "stream all files in their orignal format if possible").
  Exceptions are tracks with a subsong id (FLAC + CUE for example) which are always streamed as WAV or LPCM.


yay! 

will try it out later when I'm home.
It's only audiophile if it's inconvenient.

foo_upnp

Reply #39
- Using foo_upnp to stream files to itself within the same foobar2000 instance crashes foobar2000.


More details on this ? It does not crash on my PC but I know it could be problematic.
Send the crash backtrace. It'll be useful as there is debug info and I should now where it crashes.

Quote
- Multiple issues with the preferences page as long as the UPnP browser panel is visible. Users are advised to only use foo_upnp as a server or a client, but not both at the same time in a single foobar2000 instance.


In my experience there are potential problems only when doing loopback [local server visible to local client] (see above), which is not very useful to end user and that I'll disable in the next version.

foo_upnp

Reply #40
v 0.92

- fix broken directories dragged into a playlist
- do not allow browsing local server anymore

foo_upnp

Reply #41
I stongly suspect those device to not like the very long URLs the plugin generates. I have another naming scheme that produce way shorter and simpler URL at the expense of them
not to be valid between server restart which is usually no problem when used with such devices. I'll send you a test version if you wish we'll see how it goes.
In the meantime, can you say if your device works with WMP or Nero Media Home as the server ?

EDIT: I remember reading somewhere that the Popcorn Hour only support UPnP for video.


Here's an excerpt from the PCH Wiki. It states that basic UPnP support is available for both video and audio and a list working controllers:
http://www.networkedmediatank.com/wiki/index.php/UPnP



foo_upnp

Reply #42
- fix broken directories dragged into a playlist
Out of curiosity: how did you break that in first place? We've had components do things like this before, it would be interesting to know how exactly for future reference.
Microsoft Windows: We can't script here, this is bat country.

foo_upnp

Reply #43
- fix broken directories dragged into a playlist
Out of curiosity: how did you break that in first place? We've had components do things like this before, it would be interesting to know how exactly for future reference.


It is due a misuse of the undocumented filesystem::get_canonical_path() API. My plugin which use a filesystem subclass, was returning true in this function. It happens that in some cases (dropping the directory in a playlist is one of them) foobar core calls this function (from filesystem::g_get_canonical_path()) even if filesystem::is_our_path () or file_system::supports_content_type() returns false. 
returning true in filesystem::get_canonical_path()  made the core think my filesystem implementation was handling the directory path, hence the bug.
I'm still not sure what the canonical path is, and what its purpose is.
Curiously since services seems to not be initialized in the same order between foobar runs, sometimes my filesystem impl was registered after the legit file:// impl and there was no bug.

I have another question related to opening files. This plugin defines an input_entry subclass as well as a filesystem subclass. The only filesystem subclass purpose is to allow on upnp:// items the same file operations than http, namely copying remote files. The file operation dialog uses the item path to know what is the file extension for the copied file. I don't have any extension in my upnp:// paths so the copied files would be without extension. To overcome this I added the correct extension to my upnp:// path but in that case, when playing an upnp:// item in most case input_entry::open() was called but to my surprise in other cases it was filesystem::open(). In the case filesystem::open() was called it would then turn to later call the open() function of the http input_entry, which obviously don't work. So it seems the behaviour is different if a path has an extension or not. In my case I'd like it to have an extension to make file operations find the extension, but the call to  filesystem::open() gets in the way in normal decoding. Any idea or workaround to solve that issue ?

 

foo_upnp

Reply #44
I can't see any foobar UPnP servers in the foobar UPnP browser anymore with version 0.92. WMP sees them fine, but crashes when trying to play vorbis (maybe some directshow filter problem), but plays WAV and MP3.

It's only audiophile if it's inconvenient.

foo_upnp

Reply #45
I can't see any foobar UPnP servers in the foobar UPnP browser anymore with version 0.92. WMP sees them fine, but crashes when trying to play vorbis (maybe some directshow filter problem), but plays WAV and MP3.


probably due to a change in the latest versio. I'll check that later today

foo_upnp

Reply #46
It is due a misuse of the undocumented filesystem::get_canonical_path() API. My plugin which use a filesystem subclass, was returning true in this function. It happens that in some cases (dropping the directory in a playlist is one of them) foobar core calls this function (from filesystem::g_get_canonical_path()) even if filesystem::is_our_path () or file_system::supports_content_type() returns false.
That API indeed isn't properly documented, I'm sorry for that. I wasn't really expecting third party components to try to reimplement it. Thanks for bringing this to my attention though, I will provide better documentation with the next SDK update.
Anyway, get_canonical_path() is called without is_our_path() checks because it has to accept local filesystem paths without the file:// and turn them into proper file:// strings. You should perform checks for the path being something that you recognize on your own (as you can figure out from filesystem::g_get_canonical_path() code).
Quote
Curiously since services seems to not be initialized in the same order between foobar runs, sometimes my filesystem impl was registered after the legit file:// impl and there was no bug.
This is by design. Order of services is undefined and randomized on each startup. Otherwise you could end with DLL loading order always giving you the scenario not triggering service order dependency bugs on your system and never notice anything wrong or be unable to reproduce problems reported by users. Some components that were in circulation long ago did exactly that, sometimes even without the author knowing that there was something wrong ("works for me").
Quote
I have another question related to opening files. This plugin defines an input_entry subclass as well as a filesystem subclass. The only filesystem subclass purpose is to allow on upnp:// items the same file operations than http, namely copying remote files. The file operation dialog uses the item path to know what is the file extension for the copied file. I don't have any extension in my upnp:// paths so the copied files would be without extension. To overcome this I added the correct extension to my upnp:// path but in that case, when playing an upnp:// item in most case input_entry::open() was called but to my surprise in other cases it was filesystem::open(). In the case filesystem::open() was called it would then turn to later call the open() function of the http input_entry, which obviously don't work. So it seems the behaviour is different if a path has an extension or not. In my case I'd like it to have an extension to make file operations find the extension, but the call to  filesystem::open() gets in the way in normal decoding. Any idea or workaround to solve that issue ?
I'm sorry but I can't think of any way to deal with this right now. This is an inherent negative side effect of the custom input trick. I suppose you could provide a custom context menu command to download files instead and get rid of the filesystem service entirely. I'll consider adding some other way for the File Operations component to determine target file extensions.
Microsoft Windows: We can't script here, this is bat country.

foo_upnp

Reply #47
Is it possible in upcoming versions to make it possible integrating plugin's UI into built-in user interface (not as a columns_ui panel)?

foo_upnp

Reply #48
already asked:

Quote
Might there be a chance for native default user interface compatible version in the future?


When the UI Elements SDK will be available this will be possible.

fb2k on OSX: flac q8 > rockboxed Sansa e280v1: Vorbis q5.0

foo_upnp

Reply #49
oh, sorry. i must have missed this