DVB Open-Source code available (3 Viewers)

bionicdonkey

Portal Pro
September 3, 2004
108
1
Sydney :: Australia
dman_lfc said:
Josh,

The three cards I have the 'Tuner' device and 'Capture' device all start with the same name.
i.e. 713x or TechnoTrend or Pinnacle.

What if you dump the first word of the chosen Tuner filter then enumerate this into the graph and based on this string also enumerate the Capture component.

Do you have the book 'Programming Directshow For Digital Video & Tv' btw?

DMAN.

The reason the cards all have the same name is because i didn't make the findDevice function return the name of the filter so i hardcoded the name to be Tuner/Capture Device.

As for enumerating the filter and matching a name, that could partially work, but if you have 2 cards of the same manufacturer than you will still need to guess which one is which. Having two cards with the same name is dtill going to cause problems when selecting a card anyway, assuming that a system can have two of the same name in the first place.

And no i dont have that book, i've learn this stuff by writing it, looking at the msdn library and sdk docs.

Josh
 

dman_lfc

Retired Team Member
  • Premium Supporter
  • July 28, 2004
    1,772
    30
    UK
    Home Country
    New Zealand New Zealand
    I see I wonder how Frodo does it for two PVR-250's or 350's?
    Their may be a hint in some of the existing code.

    Books on it's way...

    DMAN
     

    berni

    New Member
    October 28, 2004
    3
    0
    bionicdonkey said:
    just remembered, webscheduler has multicard support, i might have a look at that aswell

    Hi,

    maybe I have some usefull informations about device indentification. All video devices like capture cards, cameras, tuners and so one are wrapped in direct show via a proxy filter. Every device has two names, one friendly name like "Hauppauge xyz" and the display name (@device:pnp:\\?\pci#ven_1131&dev_7146&subsys_1. ...).

    The friendly name is the same for all devices of the same type/manufacturer. There is no enumeration (#1, #2 ..) for multible devices of the same type.

    The display name contains more information about a device. This information depends on what interface (PCI, USB, ...) is used. The display name contains, among other things, a device number (e.g. USB device number). So the display name is different for devices of the same type.

    To find the capture card device for a tuner the registry contains a link between the display names of the two devices. I can't remember the registry keys with this information and I have no TV card available. So I can't give you more information. Start a search with the display name of the capture/tuner device a look for other display names.

    You can create a DirectShow filter directly with the display name.

    Bernd
     

    dman_lfc

    Retired Team Member
  • Premium Supporter
  • July 28, 2004
    1,772
    30
    UK
    Home Country
    New Zealand New Zealand
    Thanks Berni, it may help.

    What about Bus information also...

    "LocationInformation"="PCI bus 5, device 6, function 0"

    i.e. Select Card then the PCI Bus location is captured and then you grab the Tuner & Capture filters assigned to that PCI bus location...?


    DMAN.
     

    berni

    New Member
    October 28, 2004
    3
    0
    dman_lfc said:
    Thanks Berni, it may help.

    What about Bus information also...

    "LocationInformation"="PCI bus 5, device 6, function 0"

    i.e. Select Card then the PCI Bus location is captured and then you grab the Tuner & Capture filters assigned to that PCI bus location...?


    DMAN.

    The display name dosn't contain the PCI location. It contains the vendor id and device serial number (maybe not the right names) from the PCI card. The tuner /capture/crossbar devices have there own section within the registry.

    I have looked into an old project and found the registry key for capture devices:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{65E8773D-8F56-11D0-A3B9-00A0C9223196}

    Tuner:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{A799A800-A46D-11D0-A18C-00A02401DCD4}

    Crossbars:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{A799A801-A46D-11D0-A18C-00A02401DCD4}

    The capture, crossbar and tuner devices from a TV card have the same DeviceInstance registry value. I have never used this information to create a filter graph. But maybe it works...

    Bernd
     

    berni

    New Member
    October 28, 2004
    3
    0
    bionicdonkey said:
    thanks berni, that's cleared up a few things for me.

    Hi,

    to create a filter graph with a capture device I use ICaptureGraphBuilder::RenderStream and delete filter (e.g Video Renderer) if nessesary.

    Bernd
     

    Users who are viewing this thread

    Top Bottom