SageTV Community  

Go Back   SageTV Community > SageTV Development and Customizations > SageTV Clients Development
Forum Rules FAQs Community Downloads Today's Posts Search

Notices

SageTV Clients Development This forum is for discussions relating to SageTV Open Source Clients Development.

Reply
 
Thread Tools Search this Thread Display Modes
  #101  
Old 01-06-2017, 04:34 PM
Taddeusz Taddeusz is offline
SageTVaholic
 
Join Date: Nov 2004
Location: Yukon, OK
Posts: 3,919
The biggest problem I have with Emby is that it seemed like to do anything good with it you have to pay.
__________________
Server: i5 8400, ASUS Prime H370M-Plus/CSM, 16GB RAM, 15TB drive array + 500GB cache, 2 HDHR's, SageTV 9, unRAID 6.6.3
Client 1: HD300 (latest FW), HDMI to an Insignia 65" 1080p LCD and optical SPDIF to a Sony Receiver
Client 2: HD200 (latest FW), HDMI to an Insignia NS-LCD42HD-09 1080p LCD
Reply With Quote
  #102  
Old 01-06-2017, 05:29 PM
stuckless's Avatar
stuckless stuckless is offline
SageTVaholic
 
Join Date: Oct 2007
Location: London, Ontario, Canada
Posts: 9,713
Quote:
Originally Posted by Taddeusz View Post
The biggest problem I have with Emby is that it seemed like to do anything good with it you have to pay.
That is true for Plex as well... but I think the 99 lifetime fee is probably well worth it... I have a plex lifetime and a play on lifetime and I rarely use either... but it's hard to do continued development on a product when it's entirely free.

I haven't bought an Emby lifetime, yet... but I likely will.
Reply With Quote
  #103  
Old 01-07-2017, 12:44 PM
panteragstk's Avatar
panteragstk panteragstk is offline
SageTVaholic
 
Join Date: Oct 2008
Location: New Braunfels, TX
Posts: 3,312
Quote:
Originally Posted by bialio View Post
Plex's issue I think is that it is a transcoding first engine - I've never had any luck getting it to stream native content - it only 'works' when I let it transcode. It does a fine job transcoding if that's what you need. For most DVR-like locations (i.e. TVs in a permanent room in your house) it just isn't necessary to transcode, not with today's hardware.

btl.
I don't use it for recorded TV unless the kids are watching stuff, but I've never had an issue playing back native content at full resolution. Granted, I just use Plex for movies, but it's still odd that so many of you have that issue.
__________________
SageTV Server: unRAID Docker v9, S2600CPJ, Norco 24 hot swap bay case, 2x Xeon 2670, 64 GB DDR3, 3x Colossus for DirecTV, HDHR for OTA
Living room: nVidia Shield TV, Sage Mini Client, 65" Panasonic VT60
Bedroom: Xiomi Mi Box, Sage Mini Client, 42" Panasonic PZ800u
Theater: nVidia Shield TV, mini client, Plex for movies, 120" screen. Mitsubishi HC4000. Denon X4300H. 7.4.4 speaker setup.
Reply With Quote
  #104  
Old 01-07-2017, 02:38 PM
dgeezer dgeezer is offline
Sage Aficionado
 
Join Date: Oct 2007
Location: Greensboro, NC
Posts: 293
I'm also an emby user but only as a backend library manager for Kodi using the Emby for Kodi addon. I have Emby running as a docker on my unraid server. This way all my playback is set up to use native paths in emby. This means that playback is directly from the share and there is never any transcoding. Emby keeps track of watched status and adds new content to all my Kodi boxes at once.

I have been experimenting with TVHeadend and by pointing Emby at the recording directory, new shows appear in the regular TV Shows library menu. Even comskip works in Kodi with direct playback. I tried using Emby to get SageTV recordings into the Emby database by simply adding the SageTV recording directory, since SageTV can now add the season and episode numbers to the file name, but this didn't work. I think that each show still has to be in a separate directory.
Reply With Quote
  #105  
Old 01-07-2017, 07:47 PM
Fuzzy's Avatar
Fuzzy Fuzzy is offline
SageTVaholic
 
Join Date: Sep 2005
Location: Jurupa Valley, CA
Posts: 9,957
Quote:
Originally Posted by drvnbysound View Post
Sadly, I think you're 100% right but I also think a lot of that is also the inherent problem. There are a lot of people who are 1) unsatisfied with provider based systems and 2) want a centralized media center platform. As you explained, there are a bunch of communities and projects that do it. The problem is that they are all "developmental hobbies." I think that's where the limitation is. It can't grow into the mainstream home (LARGE userbase) because it's not those things you touched on, and the mainstream user doesn't want to tweak it on a regular basis.

I had been following Sage for a few years, and when I decided to pull the trigger I jumped on and tried to purchase a few HD200s to find that the Google buy-out had happened. After some dust had settled, I found used HD200s. I ran the server installer, connected some HDHRs, and HD-PVRs... and I was off. I really didn't touch anything else. It was solid.

For me too, the hardware extender was something that NONE of the other "projects" had. At the time, they either required a HTPC at each TV, or maybe some 3rd party hardware with some rooted software. The extender was a plug-and-play device - with a pretty nice remote that allowed it to be comparable to any other AV gear out there... not a one-off.
There is a gap filler between the 'unsatisfied with provider DVR and wanting a central media server' people and the lack of a 'just works' solution, and frankly, you, as an integrator, are it. Sagetv, once up and running, is a very stable ecosystem - just look through these threads on here about how many people are still happily running v6 and haven't touched the server in years, some not even aware anything even happened with the open sourcing of sagetv. While 'SageTV, LLC' no longer exists to provide support, you as an integrator can choose to do so, if you feel selling the configuration and maintenance of the product will work out well for you on the business front.

I will say this, the use of the Android client, which you are not all that familiar with, may be just what many of your customers want, mainly because it integrates netflix, youtube, and others into the same box, using the same very simplified remote. Combine that with an unRAID box that you configure and provide acting as the server, and you end up with a low maintenance, high reliability system.
__________________
Buy Fuzzy a beer! (Fuzzy likes beer)

unRAID Server: i7-6700, 32GB RAM, Dual 128GB SSD cache and 13TB pool, with SageTVv9, openDCT, Logitech Media Server and Plex Media Server each in Dockers.
Sources: HRHR Prime with Charter CableCard. HDHR-US for OTA.
Primary Client: HD-300 through XBoxOne in Living Room, Samsung HLT-6189S
Other Clients: Mi Box in Master Bedroom, HD-200 in kids room
Reply With Quote
  #106  
Old 01-07-2017, 08:00 PM
Fuzzy's Avatar
Fuzzy Fuzzy is offline
SageTVaholic
 
Join Date: Sep 2005
Location: Jurupa Valley, CA
Posts: 9,957
Quote:
Originally Posted by stuckless View Post
Isn't that what the Android App does now... Although I don't see SageTV app being an aggregator for other online content (outside of the existing play-on support that sagetv does today using tmiranda's plugin.).
Android TV itself, is a very good aggregator. A simple voice search can search through various supported apps to find the media you are looking for, and present it to you. The shortcoming is that not every app supports the search functionality, and sage is one of them. Part of this is because, being a miniclient, the android app doesn't really KNOW what all is in your library/database back on the server. This is nothing that is technically difficult, but would take extra processes on the client to communicate with the server and deal with those requests that a miniclient doesn't typically do.

An android full client, on the other hand, WOULD have all of this information, as it attains a continually updated local copy of the database. All of the devices we are discussing have more than enough hardware to run a full version of the client, instead of just a miniclient - but no work has actually been done - to my knowledge - to make this happen. I do believe that much of the work Stuckless has done on the media and UI rendering side would be portable over to a full sage client, but I have never done any sort of android development, so I'm not sure the level of undertaking it would require.
__________________
Buy Fuzzy a beer! (Fuzzy likes beer)

unRAID Server: i7-6700, 32GB RAM, Dual 128GB SSD cache and 13TB pool, with SageTVv9, openDCT, Logitech Media Server and Plex Media Server each in Dockers.
Sources: HRHR Prime with Charter CableCard. HDHR-US for OTA.
Primary Client: HD-300 through XBoxOne in Living Room, Samsung HLT-6189S
Other Clients: Mi Box in Master Bedroom, HD-200 in kids room
Reply With Quote
  #107  
Old 01-07-2017, 08:07 PM
Taddeusz Taddeusz is offline
SageTVaholic
 
Join Date: Nov 2004
Location: Yukon, OK
Posts: 3,919
Quote:
Originally Posted by Fuzzy View Post
An android full client, on the other hand, WOULD have all of this information, as it attains a continually updated local copy of the database. All of the devices we are discussing have more than enough hardware to run a full version of the client, instead of just a miniclient - but no work has actually been done - to my knowledge - to make this happen. I do believe that much of the work Stuckless has done on the media and UI rendering side would be portable over to a full sage client, but I have never done any sort of android development, so I'm not sure the level of undertaking it would require.
I don't think you would need a full copy of the database to use the Android search feature. I seriously doubt that Netflix keeps a whole copy of their catalog on your device. That's what a good web service is for so you don't need a local copy to do a search.
__________________
Server: i5 8400, ASUS Prime H370M-Plus/CSM, 16GB RAM, 15TB drive array + 500GB cache, 2 HDHR's, SageTV 9, unRAID 6.6.3
Client 1: HD300 (latest FW), HDMI to an Insignia 65" 1080p LCD and optical SPDIF to a Sony Receiver
Client 2: HD200 (latest FW), HDMI to an Insignia NS-LCD42HD-09 1080p LCD
Reply With Quote
  #108  
Old 01-08-2017, 12:15 AM
Fuzzy's Avatar
Fuzzy Fuzzy is offline
SageTVaholic
 
Join Date: Sep 2005
Location: Jurupa Valley, CA
Posts: 9,957
Quote:
Originally Posted by Taddeusz View Post
I don't think you would need a full copy of the database to use the Android search feature. I seriously doubt that Netflix keeps a whole copy of their catalog on your device. That's what a good web service is for so you don't need a local copy to do a search.
Of course it wouldn't need it, and I did mention that a new process could be run along with the miniclient on the android device to deal with those queries to the server - however, the miniclient protocol does not allow those type of queries, so they would either need to be added, or the miniclient would need to use an external protocol like sagex.

My major point, however, was that there is really no technical reason to use a miniclient when the client device has the capability to run the full client. That is an architectural choice that was made for the MediaMVP and Placeshifter - one due to lack of client capabilities, the other for minimal client-side footprint and maximized portability, and simply carried forth to the newer generations of extenders. I don't desire the shift to a full client simply BECAUSE of the ability to do local queries, but the shift to a full client WOULD allow the queries to be done directly, instead of translated through a separate networked api. The full client is simply more capable, higher performing, and would offer far more capabilities to be added going forward (some things it could enable would be locally cached database allowing disconnected use, with synced local content; tighter system integration like the aforementioned google search, customized platform specific UI tweaks installed as part of the package, etc.)
__________________
Buy Fuzzy a beer! (Fuzzy likes beer)

unRAID Server: i7-6700, 32GB RAM, Dual 128GB SSD cache and 13TB pool, with SageTVv9, openDCT, Logitech Media Server and Plex Media Server each in Dockers.
Sources: HRHR Prime with Charter CableCard. HDHR-US for OTA.
Primary Client: HD-300 through XBoxOne in Living Room, Samsung HLT-6189S
Other Clients: Mi Box in Master Bedroom, HD-200 in kids room
Reply With Quote
  #109  
Old 01-08-2017, 05:13 AM
stuckless's Avatar
stuckless stuckless is offline
SageTVaholic
 
Join Date: Oct 2007
Location: London, Ontario, Canada
Posts: 9,713
Quote:
Originally Posted by Fuzzy View Post
Of course it wouldn't need it, and I did mention that a new process could be run along with the miniclient on the android device to deal with those queries to the server - however, the miniclient protocol does not allow those type of queries, so they would either need to be added, or the miniclient would need to use an external protocol like sagex.

My major point, however, was that there is really no technical reason to use a miniclient when the client device has the capability to run the full client. That is an architectural choice that was made for the MediaMVP and Placeshifter - one due to lack of client capabilities, the other for minimal client-side footprint and maximized portability, and simply carried forth to the newer generations of extenders. I don't desire the shift to a full client simply BECAUSE of the ability to do local queries, but the shift to a full client WOULD allow the queries to be done directly, instead of translated through a separate networked api. The full client is simply more capable, higher performing, and would offer far more capabilities to be added going forward (some things it could enable would be locally cached database allowing disconnected use, with synced local content; tighter system integration like the aforementioned google search, customized platform specific UI tweaks installed as part of the package, etc.)
I've done this both ways... ie full database locally and using sagex... and to be honest, the only advantage that I see for a local client is really for a disconnected scenario, and being able to search. But, if disconnected, you still wouldn't be able to play anything. The complexities of keeping a remote database in sync would tip me to using sagex, unless, there was some reason to actually need a disconnected database, that I'm unaware of.

Under the sagetv client model, it might actually run slower than the miniclient, on Android. Having to keep the Wiz.bin in memory would certainly be a challenge. Now, if you were looking to use sqlite db and do a full sync, and then use native android widgets, yeah, it would be much faster... but again, not sure you need the database fully synced... I doubt plex syncs the entire database locally, since, in most cases without access to the server, the database has very little value.

A couple years back... i started an Android TV project for sagetv that did have the synced database, recommendations, and integrated search. I gave up on it... mainly because sagetv was going away (hadn't be open sourced at that point), and, the player wasn't optimal for my liking.... but the parts for using recommendations and integrated search was all there an working.

https://github.com/stuckless/phoenix-app-ng

I think this type of app could be rolled into the miniclient, but, could also be a stand-alone app that provides recommendations and integrated search, and then either plays the content directly, or launches the miniclient with a command to connect and play a media file. This would require some tweaks the miniclient apis as well.
Reply With Quote
  #110  
Old 01-08-2017, 09:08 AM
jm9843 jm9843 is offline
Sage Aficionado
 
Join Date: Oct 2003
Posts: 288
Quote:
Originally Posted by stuckless View Post
I think this type of app could be rolled into the miniclient, but, could also be a stand-alone app that provides recommendations and integrated search, and then either plays the content directly, or launches the miniclient with a command to connect and play a media file. This would require some tweaks the miniclient apis as well.
A separate app ('SageTV Add-ons for Android TV') makes a lot of sense since the functionality is platform-specific to Android TV while the miniclient is sometimes used on Fire TV, generic Chinese boxes, etc. Any future attempts to support Android TV's TV Input Framework might also live there. I'd imagine playback would still be best left to the miniclient though.
Reply With Quote
  #111  
Old 01-08-2017, 09:09 AM
Taddeusz Taddeusz is offline
SageTVaholic
 
Join Date: Nov 2004
Location: Yukon, OK
Posts: 3,919
I personally don't understand the fixation with having a local copy of the database. The person developing an iOS app did the same thing. I don't see the point in showing all content when you're disconnected when you can't actually play it. It makes more sense to keep a database of and show only locally synced content when disconnected. It confuses users to display things they can't manipulate.

My personal opinion is that the database architecture used by SageTV is wasteful and not really very extensible. It may have not been that bad early on but I've recently seen a post from Jeff saying his wiz.bin is 250MB. That's always resident in memory. On a desktop system that might not be that bad but on other platforms is impossible. It's still ridiculous to be having that much data be resident all the time. If the worry is about latencies the UI has far more latency than having a non-resident OS cached database would introduce.
__________________
Server: i5 8400, ASUS Prime H370M-Plus/CSM, 16GB RAM, 15TB drive array + 500GB cache, 2 HDHR's, SageTV 9, unRAID 6.6.3
Client 1: HD300 (latest FW), HDMI to an Insignia 65" 1080p LCD and optical SPDIF to a Sony Receiver
Client 2: HD200 (latest FW), HDMI to an Insignia NS-LCD42HD-09 1080p LCD
Reply With Quote
  #112  
Old 01-08-2017, 09:36 AM
Fuzzy's Avatar
Fuzzy Fuzzy is offline
SageTVaholic
 
Join Date: Sep 2005
Location: Jurupa Valley, CA
Posts: 9,957
I was not talking about new implementation to sync the database. I talking about compiling the existing client codebase for Android, with the Android specific rendering added in. The existing client code already has all the database sync and ui compositing code built in (it's all in sage.jar already), it simply deletes the local database on closing.
__________________
Buy Fuzzy a beer! (Fuzzy likes beer)

unRAID Server: i7-6700, 32GB RAM, Dual 128GB SSD cache and 13TB pool, with SageTVv9, openDCT, Logitech Media Server and Plex Media Server each in Dockers.
Sources: HRHR Prime with Charter CableCard. HDHR-US for OTA.
Primary Client: HD-300 through XBoxOne in Living Room, Samsung HLT-6189S
Other Clients: Mi Box in Master Bedroom, HD-200 in kids room
Reply With Quote
  #113  
Old 01-08-2017, 10:16 AM
wayner wayner is offline
SageTVaholic
 
Join Date: Jan 2008
Location: Toronto, ON
Posts: 7,491
Quote:
Originally Posted by Fuzzy View Post
My major point, however, was that there is really no technical reason to use a miniclient when the client device has the capability to run the full client. That is an architectural choice that was made for the MediaMVP and Placeshifter - one due to lack of client capabilities, the other for minimal client-side footprint and maximized portability, and simply carried forth to the newer generations of extenders. I don't desire the shift to a full client simply BECAUSE of the ability to do local queries, but the shift to a full client WOULD allow the queries to be done directly, instead of translated through a separate networked api. The full client is simply more capable, higher performing, and would offer far more capabilities to be added going forward (some things it could enable would be locally cached database allowing disconnected use, with synced local content; tighter system integration like the aforementioned google search, customized platform specific UI tweaks installed as part of the package, etc.)
I really like having everything on the server side like you see with PS. It makes configuration much easier. I always get confused with clients for stuff like plugins as to what has to be installed on the client and what goes on the server. With PS it is a breeze - install it on a PC, run it, perhaps import settings and you are good to go. If any plugins are changed you don't have to worry about it. But on a client you also have to remember to install stuff on the client.
__________________
New Server - Sage9 on unRAID 2xHD-PVR, HDHR for OTA
Old Server - Sage7 on Win7Pro-i660CPU with 4.6TB, HD-PVR, HDHR OTA, HVR-1850 OTA
Clients - 2xHD-300, 8xHD-200 Extenders, Client+2xPlaceshifter and a WHS which acts as a backup Sage server
Reply With Quote
  #114  
Old 01-08-2017, 10:55 AM
stuckless's Avatar
stuckless stuckless is offline
SageTVaholic
 
Join Date: Oct 2007
Location: London, Ontario, Canada
Posts: 9,713
Quote:
Originally Posted by Fuzzy View Post
I was not talking about new implementation to sync the database. I talking about compiling the existing client codebase for Android, with the Android specific rendering added in. The existing client code already has all the database sync and ui compositing code built in (it's all in sage.jar already), it simply deletes the local database on closing.
The challenge here is that SageTV relies pretty heavily on AWT (even the placeshifter java code that I started from relies heavily on it), and Android doesn have any AWT support. In the Android MiniClient (which was a pretty small codebase), I had to create alternate AWT classes for these and provide an implementation. Keep in mind AWT is not only used for rendering, but also classes like Color, Font, Dimension, Rectangle, etc, are all AWT classes and sagetv relies pretty heavily on these, even if it's not rendering to a UI. The native image loading would also have to be compiled and brought over as well.

The sagetv thick client could be ported to Android, but, it would take quite a bit of effort In fact, I'd say it's almost as much effort to bring over the client as it is to bring over the server, since they are very intertwined.
Reply With Quote
  #115  
Old 01-08-2017, 11:06 AM
EnterNoEscape's Avatar
EnterNoEscape EnterNoEscape is offline
SageTVaholic
 
Join Date: Jun 2010
Location: Harrisburg, PA
Posts: 2,657
Quote:
Originally Posted by wayner View Post
I really like having everything on the server side like you see with PS. It makes configuration much easier. I always get confused with clients for stuff like plugins as to what has to be installed on the client and what goes on the server. With PS it is a breeze - install it on a PC, run it, perhaps import settings and you are good to go. If any plugins are changed you don't have to worry about it. But on a client you also have to remember to install stuff on the client.
In my opinion this has always been a strength of SageTV and one of the things that bugs me most about solutions are mostly just a client (like Kodi). I can see how this can be argued in a few directions, but when I apply an update I don't want to visit every single client in my house or script it to update on every client. I try to keep my general maintenance efforts low and simple since I'm supposed to be enjoying my setup, not constantly maintaining it.
__________________
SageTV v9 Server: ASRock Z97 Extreme4, Intel i7-4790K @ 4.4Ghz, 32GB RAM, 6x 3TB 7200rpm HD, 2x 5TB 7200rpm HD, 2x 6TB 7200rpm HD, 4x 256GB SSD, 4x 500GB SSD, unRAID Pro 6.7.2 (Dual Parity + SSD Cache).
Capture: 1x Ceton InfiniTV 4 (ClearQAM), 2x Ceton InfiniTV 6, 1x BM1000-HDMI, 1x BM3500-HDMI.

Clients: 1x HD300 (Living Room), 1x HD200 (Master Bedroom).
Software: OpenDCT :: WMC Live TV Tuner :: Schedules Direct EPG
Reply With Quote
  #116  
Old 01-09-2017, 03:31 PM
Narflex's Avatar
Narflex Narflex is offline
Sage
 
Join Date: Feb 2003
Location: Redondo Beach, CA
Posts: 6,349
Quote:
Originally Posted by stuckless View Post
The challenge here is that SageTV relies pretty heavily on AWT (even the placeshifter java code that I started from relies heavily on it), and Android doesn have any AWT support. In the Android MiniClient (which was a pretty small codebase), I had to create alternate AWT classes for these and provide an implementation. Keep in mind AWT is not only used for rendering, but also classes like Color, Font, Dimension, Rectangle, etc, are all AWT classes and sagetv relies pretty heavily on these, even if it's not rendering to a UI. The native image loading would also have to be compiled and brought over as well.

The sagetv thick client could be ported to Android, but, it would take quite a bit of effort In fact, I'd say it's almost as much effort to bring over the client as it is to bring over the server, since they are very intertwined.
Actually...SageTV doesn't really rely on AWT much at all. I put in LOTS of effort over the years to get that dependency out of there. There was no AWT in the JVM that we run on the HD300...but yes, it was built from a slightly different codebase. The majority of the AWT dependencies can actually just be stubbed out....the only ones that replacements are really needed for are Color (which are very simple uses) Dimension & Rectangle. You don't need any AWT image/font stuff because all of that is already replaced. The placeshifter client had dependencies because of the one you ported from...but the C miniclient we used on our extenders didn't have any AWT of course.
__________________
Jeffrey Kardatzke
Google
Founder of SageTV
Reply With Quote
  #117  
Old 01-09-2017, 03:49 PM
stuckless's Avatar
stuckless stuckless is offline
SageTVaholic
 
Join Date: Oct 2007
Location: London, Ontario, Canada
Posts: 9,713
Quote:
Originally Posted by Narflex View Post
Actually...SageTV doesn't really rely on AWT much at all. I put in LOTS of effort over the years to get that dependency out of there. There was no AWT in the JVM that we run on the HD300...but yes, it was built from a slightly different codebase. The majority of the AWT dependencies can actually just be stubbed out....the only ones that replacements are really needed for are Color (which are very simple uses) Dimension & Rectangle. You don't need any AWT image/font stuff because all of that is already replaced. The placeshifter client had dependencies because of the one you ported from...but the C miniclient we used on our extenders didn't have any AWT of course.
I've actually looked at this quite a bit... there are about 100 references to java.awt throughout the codebase, and changing all those is no small task (although I had to do it for the code I used in the MiniClient).

Part of the challenge is that sagetv is a monolithic source structure with several different projects (shared code, server only code, client only code, placeshifter only code), but all that is really intermingled. Even the sage startup is references Swing/Awt. It doesn't matter if it's not used, but, I can't compile it for Android since those classes don't exist.

I think a first step would be to actually restructure the code into multiple projects, shared, server, client, and placeshifter, having awt/swing code in the client/placeshifter is not a problem, but it would have to be removed from shared/server portions.

My point being, that even thought there isn't alot of awt/swing, the way it's intertwined in the code does make it hard to abstract it out. For things like Color, Rectangle, Dimension, we can create drop in replacements, pretty fairly easy... Even MouseEvent and InputEvent could be done (I had to do those as well in the MiniClient -- Sage server uses the constants in those classes). Other things like the SageTVWindow and various other things would need to come out entirely and be put into a separate project so we would build a SageCommon.jar that has no dependencies on thos things.
Reply With Quote
  #118  
Old 01-10-2017, 12:23 PM
Narflex's Avatar
Narflex Narflex is offline
Sage
 
Join Date: Feb 2003
Location: Redondo Beach, CA
Posts: 6,349
Quote:
Originally Posted by stuckless View Post
I've actually looked at this quite a bit... there are about 100 references to java.awt throughout the codebase, and changing all those is no small task (although I had to do it for the code I used in the MiniClient).

Part of the challenge is that sagetv is a monolithic source structure with several different projects (shared code, server only code, client only code, placeshifter only code), but all that is really intermingled. Even the sage startup is references Swing/Awt. It doesn't matter if it's not used, but, I can't compile it for Android since those classes don't exist.

I think a first step would be to actually restructure the code into multiple projects, shared, server, client, and placeshifter, having awt/swing code in the client/placeshifter is not a problem, but it would have to be removed from shared/server portions.

My point being, that even thought there isn't alot of awt/swing, the way it's intertwined in the code does make it hard to abstract it out. For things like Color, Rectangle, Dimension, we can create drop in replacements, pretty fairly easy... Even MouseEvent and InputEvent could be done (I had to do those as well in the MiniClient -- Sage server uses the constants in those classes). Other things like the SageTVWindow and various other things would need to come out entirely and be put into a separate project so we would build a SageCommon.jar that has no dependencies on thos things.
So I actually did this already. I basically just created stub classes for all of these things so it would compile/load properly and then for the couple that mattered I actually implemented them. If you want, shoot me an email and I'll send you all of that code (I have not been keeping it up to date because we ended up getting a VM for Google Fiber that had all of this stuff in there, but I needed it when we were evaluating options, so I can't promise it will still meet all the requirements...but it'd at least be very close).

And this was only done for SageTV server/client and NOT for the placeshifter.
__________________
Jeffrey Kardatzke
Google
Founder of SageTV
Reply With Quote
  #119  
Old 01-18-2017, 01:48 PM
Monedeath Monedeath is offline
Sage Expert
 
Join Date: Sep 2009
Location: Idaho
Posts: 514
Quote:
Originally Posted by DarkWolf77 View Post
Yeah, I still don't get why plex is so awful at media playback. I've yet to be able to fast forward past commercials on the thing without the app locking up eventually and even if it didn't, using the current fast forward scheme on it is a crap shoot at best. Why is it so hard to give us thumbnail previews, or a hard X-second skip the way Sage does it (and have it WORK)? Doing a dvd-like fast forward with nothing but a time line on the screen is just painful.

Forget about asking for comskip support on the forum there. They look at you like you just asked them to put a man on the moon with nothing but a fork and a bit of string.
A big part of the issue here, in particular with SageTV recordings and Plex, is that most everything Sage Records is mpeg2 encoded. Most "new" devices only support h264 and/or h265. "Native mpeg2" isn't an option(but exceptions exist, like the Nvidia Shield, which is why its a preferred Sage Client platform). So when you're viewing something through a device using Plex, odds are very high it is having to transcode the video stream to h264 in order for to even display on that device.

Which is where things like fast forward, rewind, and what not start to break horribly on Plex. The strength that SageTV enjoyed in all of this was that it was playing the video back natively, no transcode required. As such skipping around is a lot easier to do, as there is a LOT less overhead involved in doing so.

It should be noted that Plex works a LOT better when you're trying to FF/REW on a h264 encoded program stream encoded at a resolution/framerate supported by the device you're viewing on.
Reply With Quote
  #120  
Old 01-18-2017, 02:51 PM
wayner wayner is offline
SageTVaholic
 
Join Date: Jan 2008
Location: Toronto, ON
Posts: 7,491
My recollection is that Plex struggled with playback of SageTV H.264 .ts files from my HD-PVR as well, not just MPEG-2 files.
__________________
New Server - Sage9 on unRAID 2xHD-PVR, HDHR for OTA
Old Server - Sage7 on Win7Pro-i660CPU with 4.6TB, HD-PVR, HDHR OTA, HVR-1850 OTA
Clients - 2xHD-300, 8xHD-200 Extenders, Client+2xPlaceshifter and a WHS which acts as a backup Sage server
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Open Source subforums? Opus4 SageTV Github Development 11 02-22-2016 07:06 PM
SageTV is Open Source!!! Narflex Announcements 1 01-12-2016 10:36 AM
Open Source Status QuasiInsomniac SageTV Github Development 2 11-30-2015 10:17 AM
Welcome to the new Open Source subforum Opus4 SageTV Github Development 0 03-16-2015 04:01 PM


All times are GMT -6. The time now is 02:21 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.
Copyright 2003-2005 SageTV, LLC. All rights reserved.