NEEOInc / neeo-sdk

NEEO Brain SDK
https://neeoinc.github.io/neeo-sdk/
MIT License
49 stars 17 forks source link

Optimum image format/size #126

Closed tmrobert8 closed 6 years ago

tmrobert8 commented 6 years ago

Could someone document what the optimum image size is for the "small" and the "large" image types for the image url?

What I mean by that - what format (jpeg, png, etc) and what size (HxW) would give us the lowest latency getting the image to the remote?

I ask because my Russound plugin gives the cover art from URLs - however they are gigantic and probably require alot of scaling to be done on the brain (takes quite a few seconds to finally display on the remote). I can preprocess these images (on a much more powerful box) with little time and was wondering what format/size/else I should set them to for optimal?

Note: be nice if this info was documented with the SDK documentation as well..

pfiaux commented 6 years ago

The Brain will post process the images for further optimization before sending them to the remote. The images are displayed directly in the mobile app (so depending on the device screensize targeting the remote might not give optimal results in the app). But if you have a more powerful machine to pre-process it will cut down on the download and post-processing for the Brain.

I'll check where we can add this to the SDK documentation as well so it's easy to find.

Jpeg and PNG are both fine, the jpeg might be faster to download depending on the image since it can be smaller. To avoid downloading and resizing large images on the Brain use these general guidelines:

If you want to optimize for a specific target:

Note: These are specifically for the remote, if you're also concerned about the mobile app images a little larger (maybe double) might offer a good compromise for mobile devices.

I think that covers most of the images accessible, even tho the player isn't finished yet the image size are unlikely to change so I included them. Does that answer your question?

pfiaux commented 6 years ago

Another local optimization would be to proxy them though a local machine with a large cache size (if you often use the same images, you can probably cache more than on the Brain and offer faster downloads than on the web). The Brain already runs its own cache for images as lists are loaded, but depending on your computing resources you could for example prefetch the images for your entire library.

tmrobert8 commented 6 years ago

Answer my question with bonus stuff! I was thinking documentation at https://neeoinc.github.io/neeo-sdk/#lib-device-devicebuilder.js-addimageurl for atleast the img url large/small - probably can find similar spots for the others.

I only care about the remote right now - thanks for the answer!

gvdhoven commented 6 years ago

Fixed (added to docs) with #127 @pfiaux

pfiaux commented 6 years ago

Doc was updated, I think we can close this.