View Full Version : A bug and bugfix for ATI TV-Wonder
I'm using Windows 98SE. I have an ATI TV Wonder capture card using the bt878 chipset, and I'm using the WDM drivers that come with ATI MultimediaCenter 7.1.
I've recently been doing a lot of directshow programming, and I noticed that in your application the audio will capture correctly for one and only one time, then stop working. The reason for this is that the routing on the audio/video crossbar (sometimes enumerated as the second crossbar -- the TV Wonder has 2) tends to reset after each time you run the filter graph.
The AV crossbar has 5 input pins (indices 0 to 4) and 4 output pins (indices 0 to 3). You can identify this crossbar by enumerating all of the filters in your graph and counting the input and output pins -- this is the only one which will have 5 in and 4 out. Output pin number 3 is the Audio Decoder pin, and every time you start recording you manually need to route it to input pin 3.
This is done by just doing a query interface on the crossbar filter for an IAMCrossbar, then calling crossbar->Route(3,3);
I hope this is helpfull... I'm not sure how many of your users will be using ATI TV-Wonder video cards with WDM drivers, but it's a bug that's personally kept me from buying your product.
If you need more code examples or a clarification on anything, let me know.
Joe Venzon
zigguratt
10-29-2001, 07:25 AM
This is excellent information! I've seen many references to this problem in several places but to this point nobody has had an answer to it.
SnapStream people: Please heed this information and integrate it into your software.
JoeV: Please spread this information. Two other places that have discussed this are the ShowShifter forums (http://www.showshifter.com/cgi-bin/user/homemedia/Ultimate.cgi) and the HTPC forum at AV Science (http://www.avsforum.com/avs-vb/forumdisplay.php?s=&forumid=26)
Gordon
10-29-2001, 06:10 PM
Dear Joe,
It seems that you are very familiar with DShow and ATI TV Wonder. Hopefully, you will read this message.
I had problem to get the sound out of the TV Tuner from ATI TV Wonder card using DirectShow in W2k. I tried to manually route the (3,3) for the audio part but it seems not working. Could you give me small sample of code? The video image is fine by that way.
Thanks in advance!
Gordon Z.
Originally posted by Gordon:
Dear Joe,
It seems that you are very familiar with DShow and ATI TV Wonder. Hopefully, you will read this message.
I had problem to get the sound out of the TV Tuner from ATI TV Wonder card using DirectShow in W2k. I tried to manually route the (3,3) for the audio part but it seems not working. Could you give me small sample of code? The video image is fine by that way.
Thanks in advance!
Gordon Z.
Ok, I'm assuming your active graph is called pGraph:
IGraphBuilder *pGraph;
IBaseFilter *pCrossbar;
This is the code to locate the crossbar, after you've already built your filter graph:
IEnumFilters *EnumFilters;
IBaseFilter *CurFilter;
ULONG fetched;
FILTER_INFO pInfo;
//locate the AV crossbar in the current graph.
pGraph->EnumFilters(&EnumFilters);
EnumFilters->Reset();
while (EnumFilters->Next(1, &CurFilter, &fetched) == S_OK)
{
CurFilter->QueryFilterInfo(&pInfo);
if (wcscmp(pInfo.achName, L"ATI TV Wonder AV Crossbar") == 0)
{
//Found AV Crossbar
pCrossbar = CurFilter;
}
CurFilter->Release();
}
EnumFilters->Release();
// ok, so pCrossbar has the crossbar filter. get the IAMCrossbar interface
IAMCrossbar *Crossbar;
pCrossbar->QueryInterface(IID_IAMCrossbar, (void **) &Crossbar);
//Activate Audio Routing
Crossbar->Route(3, 3);
And then of course you need to release everything properly.
Hope this was helpful.
Joe Venzon
Gordon
10-31-2001, 09:51 AM
Thanks Joe for the Code,
I use your sample code in my application, I can find sth. like "ATI TV Wonder, USB Edition Crossbar (N+)" and I routed it with (3,3), but still no sound (I forgot to tell you that my card is TV Wonder USB Edition). The All-in-Wonder card has the filter called "ATI TV Audio Crossbar" and I can not find any audio crossbar for the TV wonder USB edition card. I don't know if you work on this kind card before. Do you have more suggestion and thoughts?
Thanks a lot!
Gordon Z.
Originally posted by JoeV:
Ok, I'm assuming your active graph is called pGraph:
IGraphBuilder *pGraph;
IBaseFilter *pCrossbar;
This is the code to locate the crossbar, after you've already built your filter graph:
IEnumFilters *EnumFilters;
IBaseFilter *CurFilter;
ULONG fetched;
FILTER_INFO pInfo;
//locate the AV crossbar in the current graph.
pGraph->EnumFilters(&EnumFilters);
EnumFilters->Reset();
while (EnumFilters->Next(1, &CurFilter, &fetched) == S_OK)
{
CurFilter->QueryFilterInfo(&pInfo);
if (wcscmp(pInfo.achName, L"ATI TV Wonder AV Crossbar") == 0)
{
//Found AV Crossbar
pCrossbar = CurFilter;
}
CurFilter->Release();
}
EnumFilters->Release();
// ok, so pCrossbar has the crossbar filter. get the IAMCrossbar interface
IAMCrossbar *Crossbar;
pCrossbar->QueryInterface(IID_IAMCrossbar, (void **) &Crossbar);
//Activate Audio Routing
Crossbar->Route(3, 3);
And then of course you need to release everything properly.
Hope this was helpful.
Joe Venzon
Originally posted by Gordon:
Thanks Joe for the Code,
I use your sample code in my application, I can find sth. like "ATI TV Wonder, USB Edition Crossbar (N+)" and I routed it with (3,3), but still no sound (I forgot to tell you that my card is TV Wonder USB Edition). The All-in-Wonder card has the filter called "ATI TV Audio Crossbar" and I can not find any audio crossbar for the TV wonder USB edition card. I don't know if you work on this kind card before. Do you have more suggestion and thoughts?
Thanks a lot!
Gordon Z.
Oh, I didn't realize you had the USB edition. I've got no idea what your problem is, I've never worked with that type of capture interface... sorry.
Joe Venzon
[QUOTE]Originally posted by JoeV:
[B]I'm using Windows 98SE. I have an ATI TV Wonder capture card using the bt878 chipset, and I'm using the WDM drivers that come with ATI MultimediaCenter 7.1.
Hi Joe,
I am mostly a hardware person, but have some very old experiance with coding. but Im up against a hard wall with the ATI AIW Radeon (agp) I can get NO video capture or `time shifting'. heres the errorlog when thats attempted.
*** Log Manager 0: Opened on: 11/1/01 [14:07:03]
[14:07:06] CDispControl_DS:VBISetup: Failed to Load WDM ComTransform Splitter
[14:07:06] CDispControl_DS:Setup: VBI Setup Failed
[14:07:06] CDispControl_DS::FinalSetup: Failed to set DefaultSyncSource on Live Graph
[14:07:06] CCaptionControl_DS:Setup: Failed to locate VBI Sink-To-Sink Tee
[14:07:06] CCap:Caption: StartUp: Failed to initialize Driver
[14:07:07] CPControl_DS:Setup: Failed to locate VBI Sink-To-Sink Tee
*** Log Manager 0: Closed on: 11/1/01 [14:22:14]
DirectX8a & the dig. vid. upgrade is loaded. I tried returning to the orig. KS drivers from win98se, but they were much too old.
The effect in ATI's TV player is similar so I figure the DIrectX\DIrectShow reg. entries are either trashed or just plain wrong
MMC 7.1, DVD 4.1 loaded.
any hints?
Hi guys.
We identified and implemented custom fixes for the ATI TV Wonder and USB TV Wonder WDM driver problems. Both are working in-house at the moment.
Thanks for the input, Joe, much appreciated.
Excellent! I'm glad I could be of some help.
Joe Venzon
vBulletin® v3.8.4, Copyright ©2000-2013, Jelsoft Enterprises Ltd.