[Bug] "No free card available" - recording and trying to watch same DVBIP channel (1 Viewer)

georgius

Retired Team Member
  • Premium Supporter
  • October 31, 2010
    1,376
    654
    Bratislava
    Home Country
    Slovakia Slovakia
    MediaPortal Version: 1.2.0 Beta (TvServer - SVN 27982, MP - SVN 27971)
    MediaPortal Skin: DefaultWide
    Windows Version: Windows 7 Ultimate 32-bit SP1
    CPU Type: Intel Core 2 E6600
    HDD: 2x WD WD3200YS, 320 GB
    Memory: 2x 1024 MB, Kingston
    Motherboard: Foxconn P9657AA-8KS2H
    Video Card: NVIDIA GeForce 8800 GTS
    Video Card Driver: 257.21
    Sound Card: Realtek, HDA
    Sound Card AC3:
    Sound Card Driver: 6.1.7600.16385, Microsoft
    1. TV Card:
    1. TV Card Type:
    1. TV Card Driver:
    2. TV Card:
    2. TV Card Type:
    2. TV Card Driver:
    3. TV Card:
    3. TV Card Type:
    3. TV Card Driver:
    4. TV Card:
    4. TV Card Type:
    4. TV Card Driver:
    MPEG2 Video Codec: MPC - MPEG2 Video Decoder (Gabest)
    MPEG2 Audio Codec: ffdshow Audio Decoder
    h.264 Video Codec: ffdshow DXVA Video Decoder
    Satelite/CableTV Provider:
    HTPC Case:
    Cooling:
    Power Supply:
    Remote:
    TV:
    TV - HTPC Connection:

    Hi,

    I've identify the issue when recording DVBIP channel and trying to watch same channel. MP reports "no free card available". The same message is reported when watching DVBIP channel on one MP client and trying to view same channel on another MP client. Logs are attached.

    It's caused because DVBIP channel (class DVBIPChannel) doesn't have overriden method IsDifferentTransponder() from class DVBBaseChannel. Default implementation returns that channels are on different transponders. Second change is in class TvCardDVBIPBuiltIn (method RunGraph()), because if another subchannel tries to run its graph, it stopped actually running DVBIP graph (it's not very good implementation of DVB IP:(). I've attached patch for this issue (but maybe all DVB IP part should be rewritten).
     

    georgius

    Retired Team Member
  • Premium Supporter
  • October 31, 2010
    1,376
    654
    Bratislava
    Home Country
    Slovakia Slovakia
    Hi,

    I shortly describe, how to prepare solution and apply patch (it always worked for me):
    1. create solution directory [DRIVE]:\svnroot\mediaportal\trunk
    2. click with right mouse button on trunk directory, select SVN Checkout and in URL of repository paste https://sources.team-mediaportal.com/svn/public/trunk/ and click OK
    3. wait for whole solution download
    4. download patch, do not save patch in trunk directory
    5. click with right mouse button on patch file, select TortoiseSVN and then Apply patch
    6. Browse For Folder window should open, in this window choose trunk directory and click OK
    7. it shows TortoiseMerge window with another separate windows with several files
    8. select all files
    9. click with right mouse button and select Patch all
    10. you will see changes, files are patched
    11. if you have set up your environment as in this article, then you should compile latest build

    When I'm creating installations I have problem with building TvServer. I have to remove this folder content: [DRIVE]:\svnroot\mediaportal\trunk\TvEngine3\TVLibrary\TVServer.Base\TuningParameters\dvbt\

    After I remove this folder content, then I create installations without any problem.
     

    Stepko

    Retired Team Member
  • Premium Supporter
  • September 29, 2007
    186
    152
    Hamburg/Wolfsburg
    Home Country
    Germany Germany
    AW: "No free card available" - recording and trying to watch same DVBIP channel

    Second change is in class TvCardDVBIPBuiltIn (method RunGraph()), because if another subchannel tries to run its graph, it stopped actually running DVBIP graph (it's not very good implementation of DVB IP:(). I've attached patch for this issue (but maybe all DVB IP part should be rewritten).

    Yes, the DVB-IP part is a bit messy. Alot needs to be changed there.
    Can you describe the quoted problem? I'm sorry I don't really know whats the problem. And does the problem do anything in real live or is it more a theoretical problem / bad implementation?

    :D
    Stepko
     

    georgius

    Retired Team Member
  • Premium Supporter
  • October 31, 2010
    1,376
    654
    Bratislava
    Home Country
    Slovakia Slovakia
    The RunGraph() method of TvCardDVBIPBuiltIn class is called in all cases. In RunGraph() method are always called methods RemoveStreamSourceFilter() and AddStreamSourceFilter(). RemoveStreamSourceFilter() method removes DVBIP filter and this stops playing or recording. I fixed this problem that only for subchannel 0 is removed and added DVB IP filter.

    I think that RunGraph() method should be called only when starting playing or recording of channel. Also RemoveStreamSourceFilter() and AddStreamSourceFilter() don't have to be called everytime. If DVBIP filter exists then is necessary to call Load() method with new url. But I think that all DVBIP filter implementations (including mine) doesn't support changing channels without destroying and creating new DVBIP filter instance.
     

    Users who are viewing this thread

    Top Bottom