home
products
contribute
download
documentation
forum
Home
Forums
New posts
Search forums
What's new
New posts
All posts
Latest activity
Members
Registered members
Current visitors
Donate
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Search titles only
By:
Menu
Log in
Register
Navigation
Install the app
Install
More options
Contact us
Close Menu
Forums
MediaPortal 1
Development
Submit: code patches (MediaPortal/TV-Server/etc.)
TV Server hardware-specific code refactoring
Contact us
RSS
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="mm1352000" data-source="post: 663380" data-attributes="member: 82144"><p>Two points in response to your excellent suggestions:</p><p></p><p>------------------------------------------------------------------------------------------</p><p>1. To be able to create a specialised provider you need to be able to detect the card/s that the provider should handle. In other words, if you want to have a special provider for the 7010ix then you need to be able to detect that the user's card is a 7010ix. This is usually done in two main ways:</p><p></p><p>- Detecting availability of specialised functionality through vendor specific driver APIs.</p><p>This requires knowledge that [usually] only the hardware vendor (TBS, Pinnacle, Hauppauge etc.) can provide. In the case of the 7010ix: I have been in contact with PCTV Systems (who took over the Pinnacle's TV card business). They refuse to support the 7010ix because they say it is "obsolete" and apparently it was only sold to OEMs (they only provide support for cards that they sell themselves - "retail" support). Furthermore, the drivers and support were originally provided by NXP (the card's SAA7162 PCI-e bridge chipset manufacturer). Any support that used to be provided was provided by them (NXP). In short, PCTV Systems cannot help with this - they don't have the knowledge. I have tried to contact NXP but have not yet received a reply. To be honest I think it is unlikely that I will get a helpful response. The SAA7162 part was discontinued some time ago and is now EOL/obsolete. Putting all that aside, the fact that I can get DiSEqC to work in the way that I have (using the generic provider) means that there is unlikely to be a vendor specific API anyway.</p><p></p><p>- Through the names of the tuners, as given by the driver.</p><p>I don't know about you but I'm actually using the Blackgold BGT3540 drivers for improved stability. My cards' names are very generic - "7162 BDA X Tuner" where X is either DVBS, DVBT or Analog. All we can tell from those names is that the card could be any SAA7162 based card.</p><p></p><p>So, in my opinion it would be difficult (if not impossible) to properly detect that the user's card is a 7010ix, which means that we can't really create the custom provider. The only hope for this approach is that NXP provide a helpful reply to my emails.</p><p></p><p>------------------------------------------------------------------------------------------</p><p>2. As I tried to explain in the original post, part of the reason for all the refactoring that I did was to enable me to use callbacks to resend the DiSEqC command. This is the same concept as what you are suggesting ("BeforeGraphDiseqc() and AfterGraphDiseqc()"). In principle there is no problem with this approach, however there are two practical issues:</p><p></p><p>- We can't mess up the existing functionality which works for some cards.</p><p>If we always resend the DiSEqC command for the generic provider then we may break DiSEqC for other cards that use the generic provider. This is why it would be better to have a custom provider for the 7010ix like you suggested, but [as I have tried to explain above] that is difficult/impossible.</p><p></p><p>- Detect that the DiSEqC command fails and resend after the graph.Run() when it doesn't work.</p><p>This was my preferred approach because it avoids messing up the support for other cards. Furthermore, it also has the potential to improve support for cards that are currently unsupported (Blackgold?, Pinnacle?) that behave like the 7010ix. However [like I explained in my original post] for the 7010ix it is only possible to detect failure to send the DiSEqC command on the first attempt to tune a channel after the graph has been built. Since the graph is built *once* (when a tuner is first used after the TV Server starts/restarts), it would only be possible to correctly resend the DiSEqC command for the first channel that you try to watch. After that you can't detect that the DiSEqC command fails -> you don't resend the command -> the switch doesn't change port ==> TV doesn't work. I actually tested this so you can take my word that it doesn't work...</p><p></p><p>------------------------------------------------------------------------------------------</p><p>What does this all mean? Unfortunately I think it means that the 7010ix cannot be directly supported unless the developers are able to suggest a better approach or allow me to add an option in the TV Server config (to force the DiSEqC command to be sent/resent after the graph is started). This is very sad! <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite3" alt=":(" title="Frown :(" loading="lazy" data-shortname=":(" /><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite3" alt=":(" title="Frown :(" loading="lazy" data-shortname=":(" /><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite3" alt=":(" title="Frown :(" loading="lazy" data-shortname=":(" /></p><p></p><p>None of the above stops us from making a custom build for ourselves though <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite2" alt=";)" title="Wink ;)" loading="lazy" data-shortname=";)" /></p><p>Did you check out <a href="https://forum.team-mediaportal.com/general-development-no-feature-request-here-48/standard-bda-diseqc-switching-86711/" target="_blank">this</a> thread? I have provided custom DLLs for testing with MP 1.1.0. I suggest using the last version from <a href="https://forum.team-mediaportal.com/general-development-no-feature-request-here-48/standard-bda-diseqc-switching-86711/#post657601" target="_blank">this</a> post.</p><p></p><p><span style="color: Red"><strong>Be warned!!!</strong> The DLLs work perfectly for me with 2 7010ix cards and an EMP Centauri Profi-Line 9x8 multiswitch. Only one other user has tried them and he reported that his card was somehow damaged (although we both think it was not my DLLs)!</span></p><p></p><p>The other patch that you may be interested in is <a href="https://forum.team-mediaportal.com/submit-code-patches-mediaportal-tv-server-etc-325/fm-radio-signal-detection-86875/" target="_blank">here</a> - it fixes FM radio support for the 7010ix.</p><p></p><p>Finally, I'd like to repeat that I am using Blackgold BGT3540 drivers (version 6.0.0.49 from <a href="http://shop.blackgold.tv/epages/BT3159.sf/en_GB/?ObjectPath=/Shops/BT3159/Categories/Support/Current_Drivers" target="_blank">here</a>) on Windows XP.</p></blockquote><p></p>
[QUOTE="mm1352000, post: 663380, member: 82144"] Two points in response to your excellent suggestions: ------------------------------------------------------------------------------------------ 1. To be able to create a specialised provider you need to be able to detect the card/s that the provider should handle. In other words, if you want to have a special provider for the 7010ix then you need to be able to detect that the user's card is a 7010ix. This is usually done in two main ways: - Detecting availability of specialised functionality through vendor specific driver APIs. This requires knowledge that [usually] only the hardware vendor (TBS, Pinnacle, Hauppauge etc.) can provide. In the case of the 7010ix: I have been in contact with PCTV Systems (who took over the Pinnacle's TV card business). They refuse to support the 7010ix because they say it is "obsolete" and apparently it was only sold to OEMs (they only provide support for cards that they sell themselves - "retail" support). Furthermore, the drivers and support were originally provided by NXP (the card's SAA7162 PCI-e bridge chipset manufacturer). Any support that used to be provided was provided by them (NXP). In short, PCTV Systems cannot help with this - they don't have the knowledge. I have tried to contact NXP but have not yet received a reply. To be honest I think it is unlikely that I will get a helpful response. The SAA7162 part was discontinued some time ago and is now EOL/obsolete. Putting all that aside, the fact that I can get DiSEqC to work in the way that I have (using the generic provider) means that there is unlikely to be a vendor specific API anyway. - Through the names of the tuners, as given by the driver. I don't know about you but I'm actually using the Blackgold BGT3540 drivers for improved stability. My cards' names are very generic - "7162 BDA X Tuner" where X is either DVBS, DVBT or Analog. All we can tell from those names is that the card could be any SAA7162 based card. So, in my opinion it would be difficult (if not impossible) to properly detect that the user's card is a 7010ix, which means that we can't really create the custom provider. The only hope for this approach is that NXP provide a helpful reply to my emails. ------------------------------------------------------------------------------------------ 2. As I tried to explain in the original post, part of the reason for all the refactoring that I did was to enable me to use callbacks to resend the DiSEqC command. This is the same concept as what you are suggesting ("BeforeGraphDiseqc() and AfterGraphDiseqc()"). In principle there is no problem with this approach, however there are two practical issues: - We can't mess up the existing functionality which works for some cards. If we always resend the DiSEqC command for the generic provider then we may break DiSEqC for other cards that use the generic provider. This is why it would be better to have a custom provider for the 7010ix like you suggested, but [as I have tried to explain above] that is difficult/impossible. - Detect that the DiSEqC command fails and resend after the graph.Run() when it doesn't work. This was my preferred approach because it avoids messing up the support for other cards. Furthermore, it also has the potential to improve support for cards that are currently unsupported (Blackgold?, Pinnacle?) that behave like the 7010ix. However [like I explained in my original post] for the 7010ix it is only possible to detect failure to send the DiSEqC command on the first attempt to tune a channel after the graph has been built. Since the graph is built *once* (when a tuner is first used after the TV Server starts/restarts), it would only be possible to correctly resend the DiSEqC command for the first channel that you try to watch. After that you can't detect that the DiSEqC command fails -> you don't resend the command -> the switch doesn't change port ==> TV doesn't work. I actually tested this so you can take my word that it doesn't work... ------------------------------------------------------------------------------------------ What does this all mean? Unfortunately I think it means that the 7010ix cannot be directly supported unless the developers are able to suggest a better approach or allow me to add an option in the TV Server config (to force the DiSEqC command to be sent/resent after the graph is started). This is very sad! :(:(:( None of the above stops us from making a custom build for ourselves though ;) Did you check out [URL="https://forum.team-mediaportal.com/general-development-no-feature-request-here-48/standard-bda-diseqc-switching-86711/"]this[/URL] thread? I have provided custom DLLs for testing with MP 1.1.0. I suggest using the last version from [URL="https://forum.team-mediaportal.com/general-development-no-feature-request-here-48/standard-bda-diseqc-switching-86711/#post657601"]this[/URL] post. [COLOR="Red"][B]Be warned!!![/B] The DLLs work perfectly for me with 2 7010ix cards and an EMP Centauri Profi-Line 9x8 multiswitch. Only one other user has tried them and he reported that his card was somehow damaged (although we both think it was not my DLLs)![/COLOR] The other patch that you may be interested in is [URL="https://forum.team-mediaportal.com/submit-code-patches-mediaportal-tv-server-etc-325/fm-radio-signal-detection-86875/"]here[/URL] - it fixes FM radio support for the 7010ix. Finally, I'd like to repeat that I am using Blackgold BGT3540 drivers (version 6.0.0.49 from [URL="http://shop.blackgold.tv/epages/BT3159.sf/en_GB/?ObjectPath=/Shops/BT3159/Categories/Support/Current_Drivers"]here[/URL]) on Windows XP. [/QUOTE]
Insert quotes…
Verification
Post reply
Forums
MediaPortal 1
Development
Submit: code patches (MediaPortal/TV-Server/etc.)
TV Server hardware-specific code refactoring
Contact us
RSS
Top
Bottom