Jump to content

Sat>IP Viewer for iOS/Android (Mobile/Tablet/TV)

Recommended Posts

  • 4 months later...

Today i found time to start porting the mobile Build to Delphi Rio.  The good news is, it now (after 5 hours) works. The bad news is all transitions are no longer running properly. I also had to rewrite the Thread which is running in background searching for UPNP and Sat>IP devices.

It will, i suppose take 2 days at minimum to get it working again. 



Link to comment

I also added the ability to sort the channel list. It does not work via drag and drop, since the used component does not support this anymore, but i added two buttons which work quite fine. Even if i think sorting 1000 channels and more is not something which could be achieved on a mobile device, but at least a hand full of channels you prefer could be moved on top of a list.



Link to comment

By the way, the app is in the android store and should be available within the next hours. 


Bildschirmfoto 2018-12-13 um 19.44.46.png

This is living diversity. There are a lot of 1* ratings and if you read the comments (which i admit try to avoid) you realize why. I sometimes got "similar" comments via mail and i assume i  never mentioned that i'm really happy of the fact that the DVBViewer is not a mobile project. On Desktop projects you simply don't have that much glitches into "person contacting you is even unable to write the own name properly". I wonder why people complain that they do not receive anything if they even don't have a Sat(*)>IP server. 




PS: The play store had shown a warning after releasing concerning the new API upgrade. I unluckily did not find the warning the logs, so if you have problems. Please send me a mail.

Link to comment

The update just downloaded.


Huge fan of the fact that it now natively supports modern display resolutions and isn't stuck at 16:9.


I also like the smooth startup animation and quick launch.


I'm not as big of a fan of what happens right after the startup animation ...


... all I'm getting is a solid red screen and that's literally all there is. No other options. Deleting the cache does nothing.


But as a red screen simulator, it's a really smooth experience now. It's just a bit lackluster when it comes to literally anything else.


(Mate 10 Pro, Android 9.0)

Link to comment

Well actually the "quality" of the Sat>IP code is fairly good. It runs fine in the DVBViewer since years and also in other applications. For the video playback i licensed a project called AVPlayer from flashavconverter.com. Over the years i had to rewrite huge parts of it, because the author somehow ignored the fact that variables can't be read and written over multiple threads without any security measures, like mutexes or criticalsections. I can also say for sure that this code now also does not causes any issues.   But the main problem is the framework i use resp. Embarcadero uses for their platform independent code. I had spent uncountable hours tracing weird exceptions or stupid behaviour, when it comes to more than just a hello world application. You find a few of my workarounds at delphipraxis.net or the forums of embarcadero. For example the listview component which is barely unuseable for long lists with a few thousand items. So i use a virtual treeview class instead (https://bitbucket.org/gmurt/kscomponents/overview). Unluckily the code seem to be incompatible with the new Delphi *yay*.   I was able to trace a problem on an older machine here which looks like this in the debugger.


And yet again, it is not my code and yet again it is caused by firemonkey. I'm aware this is not an excuse and if you know about the license you have to shell out yearly for it it is extremely annoying.


Oh by the way the reason is definitively not the source of Graham (the author of ksComponents). I was able to find it in the code:


procedure GenerateFormImageExt(AForm: TCommonCustomForm; ABmp: TBitmap);


tries to copy the content of a form into the bitmap.

TForm(AForm).PaintTo(ABmp.Canvas); does the trick, but 


unction TBitmap.GetCanvas: TCanvas; 
  if FCanvas = nil then   
  FCanvas := CanvasClass.CreateFromBitmap(Self);     
Result := FCanvas; 


an exception is raised here:


 FCanvas := CanvasClass.CreateFromBitmap(Self);


so the TMonitor.Exit(Self) is never executed. Now i have to find the reason why the code crashes on some systems. If you now keep in mind that compiling and running on a mobile device take at least a minute and since the mobile compiler is ARC and the windows one not you can spent hours doing so.


Oh and i forgot to mention that you always have to fight with this while debugging:

Bildschirmfoto 2018-12-14 um 20.22.52.png


Link to comment

Damn, i have to rewrite huge parts of the code because of a problem i explained here: https://www.delphipraxis.net/198647-delphi-10-3-rio-ist-da-28.html#post1420920.


This is extremely annoying. I decided to remove KS Components and also use of multiple forms, since there is obviously a big problem in Rio, when you have more than one form in a application. This is also why some users have issues after pressing the menu button and some of them already after the loading screen. Loading Form is a Form, Main Window is a Form and the Menu is also a Form. If no channel list is available the menu is opened and this is the third form in a row. The result is crashing. I don't want to say how pissed i am at the moment about Firemonkey. Besides the fact that it costs you a felt fortune yearly to get the updates which are necessary to compile it since iOS and Android often changes their complete system multiple times in a year.


I hope i'll be able to get a new build up and running till Monday. Without any third party (except my code) and running everything in one form by replacing the other formulars like scanner, settings into frames running in a TabControl. Which is honestly crap, but obviously the only way you can work around this issue without digging deep in the Firemonkey code. 

I keep you informed about the progress. Luckily i don't have to test it at this point on mobile devices, since compile, deploy, ide crash, compile again and deploy on the machine takes 5 minutes almost everytime you want to check something.

Link to comment

Just a quick information: 


I changed the complete user interface from multiple forms (views) to one view with several tab sheets containing frames. This honestly sucks, because using forms is something rudimentary which simply has to work in 2018. Obviously it does not, so i had to do some work around. This time i removed everything third party and use only the code Embarcadero provides with Delphi, plus my code. All conditional defines, when it comes to different behavior of the UI are also removed. I'm confident to publish a new release on monday.

Right now the menu bar is not looking like i want to and the scanner form frame needs several tests.  While writing i found another issue when it comes to TAnimator. So i removed also the usage of this class for now. 

Link to comment

I'm deeply sorry that the latest build does not work on the systems of some users. The problem is not our Sat>IP code, but i use a Framework from the IDE which causes the issues. 

I'm currently working on a solution to find ways to get the application running.

Link to comment

As i said, i work under high pressure to release the latest version. This is extremely annoying, because i try to avoid all odds caused by shortcomings from the IDE. 

Right now i keep the application running on one device while testing on another. It seem to be stable on my phone, but on my older Android 5 based tablet it crashes after a few minutes without any notice. 


Link to comment

It took a bit longer to publish the 4.1.0 release, but it is now in the store. I had to rewrite the most parts of the user interface. Unluckily some functions had to be removed. I had to disable the MediaView page, because of a problem with the Delphi 10.3 and the disability to show web pages properly. They where squared instead of a proper display. 

The application now also run in full screen mode the whole time, because the latest Delphi seem to have a problem turning from fullscreen to window mode and vice versa multiple times in an application. Besides this i added a new render output for the TV, which consumes less power and is much more faster. Combined with enabled hardware acceleration you should be able to watch HEVC transmissions without draining the battery life. 

You are now also able to disable the channel logos which could (in theory) increase the performance.

Since i had to do a lot of front end changes i decided to create different look and feel for Android and iOS. It should feel now more native, even if Firemonkey (which is the framework provided by Delphi) just adapts the look and feel.



Link to comment



well the problem with your issue is that the server is not a real Sat>IP device. I know that it is not the same just to be able to watch tv without epg, but i would have to implement in this case our complete streaming code used for shoutcast, hls and all kind of other streams. This would require a lot of time for just one device. Honestly i have no idea where i should find to extort time to do this. Right now the software allows if you have a Sat>IP compliant server to enable subtitle, as well as EPG and Teletext. For the audio and video decoding ffmpeg and the android or iOS hardware decoder framework  (if possible) is used.  By the way, i compiled a debug build for a tester and according to the compiler the project size is about 173.108 lines of code. 



Link to comment
  • 2 weeks later...

There are still two issues. One is that you probably consider to enable the VideoView Option in the preferences on older devices < Android 6. If the application crashes if you tuned an sd channel after a few seconds but it ran fine on HD or radio. 

I did not found the reason why (yet), but in this case the video is rendered in a native Android window. This increases the performance drastically, but disables the ability to use Teletext and subtitles. 

The other issue is that some users complained that the application crashes on start up. What i can exclude is that it is caused by the Android version. During Christmas i was able to check a couple of Android phones from 5.2 to 9.0 and the app worked fine on all of them. I was only unable to test Android 7. 

Link to comment
  • 3 weeks later...
On 7/31/2018 at 6:32 PM, hackbart said:

I will check this, till then please use the regular scan.

The regular scan doesn't work either, there are no available channels after the scan.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...