[fixed] TVE35 (2014-01-17) is missing analog encoder definitions (1 Viewer)

breese

Retired Team Member
  • Premium Supporter
  • July 11, 2011
    3,902
    770
    66
    Arlington Heights, Illinois
    Home Country
    United States of America United States of America
    Please be sure when reporting issues with TV Server configuration to state whether you're running it on the client or server.
    Sorry... Everything I test for MP2 is on my new Server/Client and it is listed in my hardware list in my profile (Bugsbunny Test Server).

    No work => pointless to test
    If we had the Import/Export function, maybe I could use it to get the real channels into MP2 while ATSC is being worked on.
     

    mm1352000

    Retired Team Member
  • Premium Supporter
  • September 1, 2008
    21,577
    8,224
    Home Country
    New Zealand New Zealand
    Analog support: this build does not contain any 3rd party MPEG encoder. Analog tuner will only work if there is one of the supported encoders installed (registered) before. If MP1-TvServer is installed on same PC, it works (MP1 delivers one)
    I don't mean to doubt, but is that really correct?
    Even when no encoders are installed/registered, the list of compatible encoders from the DB should be listed in TV Server configuration. I suspect the SoftwareEncoders table is not getting populated properly on install. It needs to be handled similar to the LnbType table.
     

    morpheus_xx

    Retired Team Member
  • Team MediaPortal
  • March 24, 2007
    12,073
    7,459
    Home Country
    Germany Germany
    I came across the analog tuning part recently, it is not yet changed to load filters by filename. It still iterates over a list of known class ids to find and instantiate them.
    Beside this, also some DB content might be missing as well. But if the screenshot above is from TVE35, it knows list of encoders, but none is available.

    Edit: checked screenshots again. IIRC, there is already code to load the encoders list from Server via WCF. But I don't know if they are enumerated there by media types or if TvLibrary depends on a list of known encoders. Never used the analog part, so it's better a question for @gibman :)
     
    Last edited:

    mm1352000

    Retired Team Member
  • Premium Supporter
  • September 1, 2008
    21,577
    8,224
    Home Country
    New Zealand New Zealand
    I came across the analog tuning part recently, it is not yet changed to load filters by filename. It still iterates over a list of known class ids to find and instantiate them.
    I think you may be confusing multiplexers with encoders. :)
    The analog code should not load encoders by filename because they come from 3rd party software. However, it should load the multiplexer by filename when we add the new one. This loading by filename issue is not related to the encoder issue that breese reported.

    Beside this, also some DB content might be missing as well. But if the screenshot above is from TVE35, it knows list of encoders, but none is available.
    I agree that some DB content might be missing, and I'm trying to say that I think this is the cause of the issue that breese reported.
    All compatible encoders should be listed (like the TVE 3 screenshot) even if none of the encoders are installed/available. The list of compatible encoders comes from the SoftwareEncoder table in the DB, so the list should not be empty unless the DB is empty... and if the DB is empty that is a bug. I note there is an "installed" column in those lists which says whether each encoder is installed/available or not. That column is populated by checking the DirectShow filters registered on the machine that TV Server configuration is running on.
     

    morpheus_xx

    Retired Team Member
  • Team MediaPortal
  • March 24, 2007
    12,073
    7,459
    Home Country
    Germany Germany
    You are right :) As I wrote above, I'm happy to left the analog area some years before to DVB-C, so the related code didn't take my attention at all.

    Now that I've checked my MP1 installation, the table is filled there. For me it even contains all encoders doubled :p Also the encoders are only listed by names, no CLS_IDs.
    Code:
    1    1    InterVideo Video Encoder    0    1
    2    2    Ulead MPEG Encoder    0    1
    3    3    MainConcept MPEG Video Encoder    0    1
    4    4    MainConcept Demo MPEG Video Encoder    0    1
    5    5    CyberLink MPEG Video Encoder    0    1
    6    6    CyberLink MPEG Video Encoder(Twinhan)    0    1
    7    7    MainConcept (Hauppauge) MPEG Video Encoder    0    1
    8    8    nanocosmos MPEG Video Encoder    0    1
    9    9    Pinnacle MPEG 2 Encoder    0    1
    10    10    MainConcept (HCW) MPEG-2 Video Encoder    0    1
    11    11    ATI MPEG Video Encoder    0    1
    12    1    InterVideo Audio Encoder    1    1
    13    2    Ulead MPEG Audio Encoder    1    1
    14    3    MainConcept MPEG Audio Encoder    1    1
    15    4    MainConcept Demo MPEG Audio Encoder    1    1
    16    5    CyberLink Audio Encoder    1    1
    17    6    CyberLink Audio Encoder(Twinhan)    1    1
    18    7    Pinnacle MPEG Layer-2 Audio Encoder    1    1
    19    8    MainConcept (Hauppauge) MPEG Audio Encoder    1    1
    20    9    NVIDIA Audio Encoder    1    1
    21    10    MainConcept (HCW) Layer II Audio Encoder    1    1
    22    11    CyberLink MPEG Audio Encoder    1    1
    23    12    ATI MPEG Audio Encoder    1    1

    I'll move out the encoder related posts into a bug report thread.
     

    mm1352000

    Retired Team Member
  • Premium Supporter
  • September 1, 2008
    21,577
    8,224
    Home Country
    New Zealand New Zealand
    Perfect! (y)
    Three things while we're looking at this code...
    1. https://issues.team-mediaportal.com/browse/MP1-3412
    2. Similar to 1, we can add TerraTec's Cyberlink encoders. I found the exact names in the card definitions file here: https://forum.team-mediaportal.com/...-hybrid-t-usb-xs-fm-analog-and-digital.38046/
    3. The priorities in the old list are not very good/outdated. I think we should reorder the priority by recommended and/or commonly available encoders.

    Finally, this is the code I would use. :)

    Code:
    // List of video encoders
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 1, Name = "InterVideo Video Encoder", Priority = 1, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 2, Name = "CyberLink MPEG Video Encoder", Priority = 2, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 3, Name = "CyberLink MPEG Video Encoder(KWorld)", Priority = 3, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 4, Name = "CyberLink MPEG Video Encoder(TerraTec)", Priority = 4, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 5, Name = "CyberLink MPEG Video Encoder(Twinhan)", Priority = 5, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 6, Name = "ATI MPEG Video Encoder", Priority = 6, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 7, Name = "MainConcept MPEG Video Encoder", Priority = 7, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 8, Name = "MainConcept Demo MPEG Video Encoder", Priority = 8, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 9, Name = "MainConcept (Hauppauge) MPEG Video Encoder", Priority = 9, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 10, Name = "MainConcept (HCW) MPEG-2 Video Encoder", Priority = 10, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 11, Name = "Pinnacle MPEG 2 Encoder", Priority = 11, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 12, Name = "nanocosmos MPEG Video Encoder", Priority = 12, Reusable = true, Type = 0 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 13, Name = "Ulead MPEG Encoder", Priority = 13, Reusable = true, Type = 0 });
    
    // List of audio encoders
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 14, Name = "InterVideo Audio Encoder", Priority = 1, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 15, Name = "CyberLink Audio Encoder", Priority = 2, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 16, Name = "CyberLink MPEG Audio Encoder", Priority = 3, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 17, Name = "CyberLink Audio Encoder(KWorld)", Priority = 4, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 18, Name = "CyberLink Audio Encoder(TechnoTrend)", Priority = 5, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 19, Name = "CyberLink Audio Encoder(TerraTec)", Priority = 6, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 20, Name = "CyberLink Audio Encoder(Twinhan)", Priority = 7, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 21, Name = "ATI MPEG Audio Encoder", Priority = 8, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 22, Name = "MainConcept MPEG Audio Encoder", Priority = 9, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 23, Name = "MainConcept Demo MPEG Audio Encoder", Priority = 10, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 24, Name = "MainConcept (Hauppauge) MPEG Audio Encoder", Priority = 11, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 25, Name = "MainConcept (HCW) Layer II Audio Encoder", Priority = 12, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 26, Name = "Pinnacle MPEG Layer-2 Audio Encoder", Priority = 13, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 27, Name = "NVIDIA Audio Encoder", Priority = 14, Reusable = true, Type = 1 });
    ctx.SoftwareEncoders.AddObject(new SoftwareEncoder { IdEncoder = 28, Name = "Ulead MPEG Audio Encoder", Priority = 15, Reusable = true, Type = 1 });

    [edit: another tweak, added "CyberLink Audio Encoder(TechnoTrend)" which should also be compatible...]
     
    Last edited:

    Users who are viewing this thread

    Top Bottom