WST codec (analog teletext) non supported in Vista (1 Viewer)

chemelli

Retired Team Member
  • Premium Supporter
  • September 28, 2006
    6,159
    2,264
    52
    Milano, Italy
    Home Country
    Italy Italy
    TV-Server Version: 3.0 SVN rev 16429
    MediaPortal Version: 0.2.3.0 RC3 + SVN rev 16429
    MediaPortal Skin: BlueTwo wide
    Windows Version: Vista Home Premium
    CPU Type: Intel Core2Duo E6550
    HDD: 2 x Seagate 320Gb
    Memory: 2 x 1 Gb Corsair DDR2
    Motherboard: Asus P5K
    Motherboard Chipset: Intel P35
    Motherboard Bios: AMI v0603
    Video Card: Sapphire ATI X1950 PRO 512Mb
    Video Card Driver: Catalyst 7.10
    Sound Card: Realtek ALC883 (onboard)
    Sound Card AC3: no AC3
    Sound Card Driver: v6.0.1.5485
    1. TV Card: Hauppauge HVR-4000
    1. TV Card Type: analog + DVB-T + DVB-S/S2
    1. TV Card Driver: WinTV CD 4.0
    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: fddshow Video (from Vista Codec 4.51)
    MPEG2 Audio Codec: fddshow Audio (from Vista Codec 4.51)
    Satelite/CableTV Provider: Hotbird 13°E
    HTPC Case: Silverstone LC20M with SoundGraph VFD
    Cooling: CF800 ZeroTherm APACK + 2 x 80m Xilence chassis fan + 2 x Aeolus hdd cooler
    Power Supply: Nesteq na4501 - 450W
    Remote: iMON PAD
    TV: Samsung LE32R53BD
    TV - HTPC Connection: DVI-to-HDMI + analog audio

    Hi all, I cannot use teletext under Vista because WST codec is not present per http://msdn2.microsoft.com/en-us/library/ms788167.aspx document.

    I then looked at VBIcodec and found at http://msdn2.microsoft.com/en-us/library/ms787890.aspx and the FilterCategory of this codec is AM_KSCATEGORY_VBICODEC_MI ("Multi-Instance Capable VBI Codecs").

    I then identified the following code of TvCardAnalogBase.cs line 2196:

    Code:
    devices = DsDevice.GetDevicesOfCat(FilterCategory.AMKSVBICodec);

    The issue is that AMKSVBICodec = AM_KSCATEGORY_VBICODEC and not AM_KSCATEGORY_VBICODEC_MI !!!

    But under FilterCategory there is no filter for this new VBIcodec category.
    I took a look at DirectX 9.0 header files and found the following in ksuuid.h:

    Code:
    // 07dad660L-22f1-11d1-a9f4-00c04fbbde8f
    OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC,
    0x07dad660L, 0x22f1, 0x11d1, 0xa9, 0xf4, 0x00, 0xc0, 0x4f, 0xbb, 0xde, 0x8f)
    
    // BUGBUG: this vbicodec_mi needs to get copied back over to drivers\published\ksmedia.w
    // but we're not building drivers depot for symphony
    // multi-instance safe codec categories(kernel or user mode)
    // {9C24A977-0951-451a-8006-0E49BD28CD5F}
    OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC_MI,
    0x9c24a977, 0x951, 0x451a, 0x80, 0x6, 0xe, 0x49, 0xbd, 0x28, 0xcd, 0x5f)

    Does have sense to update my SDK from the one of DX9 ( August 2006 ) to the latest one ( August 2007 ) in order to see if there is already a FilterCategory implemented for this new codec family ?

    Any idea will be more than welcome as I really would like to have my analog part fixed shortly.

    Simone
     

    misterd

    Retired Team Member
  • Premium Supporter
  • April 4, 2006
    1,597
    314
    Home Country
    Germany Germany
    Hi Simone,
    you could try the following:

    Code:
    devices = DsDevice.GetDevicesOfCat(
    new Guid(0x9c24a977, 0x951, 0x451a, 0x80, 0x6, 0xe, 0x49, 0xbd, 0x28, 0xcd, 0x5f));

    The problem is that this GUID isn't available in the Directshowlib. For a quick test you could hard code this GUID in the code.
    Also the code has to be modified a little bit more for getting a solution for XP and Vista.

    MisterD
     

    chemelli

    Retired Team Member
  • Premium Supporter
  • September 28, 2006
    6,159
    2,264
    52
    Milano, Italy
    Home Country
    Italy Italy
    misterd,

    it works!

    Here my code to support both Vista and XP. Will ask dman_LFC to submit to SVN:

    //find the WST codec filter
    Log.Log.Info("analog:confused:inkGraphEx.SetupTeletext(): looking for WST/VBI teletext codec");
    System.OperatingSystem osInfo = System.Environment.OSVersion;
    if (osInfo.Version.Major == 5) // Windows2000 and WindowsXP
    {
    devices = DsDevice.GetDevicesOfCat(new Guid(0x9c24a977, 0x951, 0x451a, 0x80, 0x6, 0xe, 0x49, 0xbd, 0x28, 0xcd, 0x5f));
    }
    else // WindowsVista and newer
    {
    devices = DsDevice.GetDevicesOfCat(FilterCategory.AMKSVBICodec);
    }
    foreach (DsDevice device in devices)
    {

    The only strange thing is that some channels are named "WN FOX JUMP OVER *b".

    Simone
     

    misterd

    Retired Team Member
  • Premium Supporter
  • April 4, 2006
    1,597
    314
    Home Country
    Germany Germany
    Good job Simone, but DMAN already committed a similar modification to SVN. It first try the XP codec and if it can't be found it tries the Vista codec afterwards with the right category. I think that this is the better solution, because OS detection doesn't work at all.

    According to the standard for teletext broadcasting the channel name is taken from the first line of the teletext, which isn't displayed in MP. But some channels don't follow the standard and have their something completely different. And of course their could be some transmission/decoding errors.

    MisterD
     

    chemelli

    Retired Team Member
  • Premium Supporter
  • September 28, 2006
    6,159
    2,264
    52
    Milano, Italy
    Home Country
    Italy Italy
    misterd,

    I just saw the new SVN :) will try it later.

    Also is there a way to record/view the first line of teletext for all channels so I can understand what's happen ?
    It sound strange to me that 3 channels from the same public company have different behaviour:

    1) "WN FOX JUMP OVER *b" should be "RAI UNO"
    2) "RAI DUE", correct
    3) Channel #23, should be "RAI TRE"

    Thanks as always for your clear and complete explanations.

    Simone
     

    misterd

    Retired Team Member
  • Premium Supporter
  • April 4, 2006
    1,597
    314
    Home Country
    Germany Germany
    First of all I must correct myself. The channel name is taken from another invisible line of the teletext. It is taken from the line with packet number 30.
    If you want to see the complete line in the log, you have to insert the following line in TeletextDecoder.cs at line 155.

    Code:
    Log.Log.WriteFile("ANALOG Channelname: " + channelName);

    But I should warn you the teletext stuff is one of the most complicated (except the filters) and undocumented part of the server.

    MisterD
     

    chemelli

    Retired Team Member
  • Premium Supporter
  • September 28, 2006
    6,159
    2,264
    52
    Milano, Italy
    Home Country
    Italy Italy
    dman_lfc: yes your change works in Vista. Thx for the update in SVN.

    misterd: I have found an issue on teletext decoding. I attach log and screenshot. Enabling teh debugging lines ( on error.log to make them more visible ) I found that at least RAIDUE is decoded in the log but not in the channel list.

    Also several scanning produce different outputs...

    Simone
     

    misterd

    Retired Team Member
  • Premium Supporter
  • April 4, 2006
    1,597
    314
    Home Country
    Germany Germany
    It seems that multiple channel names are transmitted within the teletext. The question is which page contains the right channel name.
    The different results are "normal" The reason is that the server tries 20 times to get a channel name and the last retrieved wins and will be stored. But there is no guarantee that the server scans the same pages during different scans.
    Currently I don't know how this can be fixed, but I will look at it again this weekend.

    MisterD
     

    chemelli

    Retired Team Member
  • Premium Supporter
  • September 28, 2006
    6,159
    2,264
    52
    Milano, Italy
    Home Country
    Italy Italy
    It seems that multiple channel names are transmitted within the teletext. The question is which page contains the right channel name.
    The different results are "normal" The reason is that the server tries 20 times to get a channel name and the last retrieved wins and will be stored. But there is no guarantee that the server scans the same pages during different scans.
    Currently I don't know how this can be fixed, but I will look at it again this weekend.

    MisterD

    MisterD,

    you are with me, which page contains the right channel name ? It seems that (packet == 30) is not always the right one. Also I would like to try 100 times and log all channels found, then verify by hand what happens...

    Will try to review myself the code for this empyric test...

    Simone

    @tonsa gave me this link http://www.themm.net/~mihu/linux/saa7146/specs/ets_300706e01p.pdf
     

    misterd

    Retired Team Member
  • Premium Supporter
  • April 4, 2006
    1,597
    314
    Home Country
    Germany Germany
    I had a small look again at the standard documentation. From my point of view the server has to check the magazin number and should ignore the type or designation code how it is called in the documentation.
    I have attached a modified TeletextDecoder.cs, which check the magazin number and ignore the designation code

    Hope that help.

    MisterD
     

    Users who are viewing this thread

    Top Bottom