Hoping to get some feedback from some other programmer-types. I've been looking through the MP source code for about a week and I think I have a handle on how everything works. Keep in mind that I'm a C# newb.
MP seems to structure everything around a DirectShow graph that is created based on the type of card;
- TVCaptureDeviceEx creates a new graph using GraphFactory.
- GraphFactory.CreateGraph "Creates a new DirectShow graph for the TV capturecard" based on the info in TVCapture.CardTypes (eg. SinkGraph, DVBGraphBDA, etc). It's up to that graph object to implement the device-specific routines needed to use that interface (StartRecording, StartTimeshifting, TuneChannel etc)
The best way I see to implement IPTV into MP is to create a new card type within the MP source and a new graph class to go along with it. The problem is that there doesn't seem to be anything in DirectShow to work with a UDP stream (perhaps due to MS having their fingers in the IPTV market?). One method that looks interesting is RenderFile(L"C:\\Example.avi", NULL); - you can include a URL as the filename but as far as I can see, it's only for play mode and the URL has to be an HTTP one. See this MSDN page for more details.
I think to be effective, any given IPTV channel has to use the guide and be capable of timeshifting and recording in addition to viewing. Just viewing isn't gonna cut it.
My IPTV comes in on udp 239.x.x.x:94xx - a reserved multicast IP range with the URL and port being specific to the channel. Which brings me to the next issue.. Setting up these channels is going to be cumbersome, something MP is really good at getting past. Keeping that tradition is going to be tough.
Anyone have any feedback? I'd like to keep working on this but it's a bit overwhelming..
MP seems to structure everything around a DirectShow graph that is created based on the type of card;
- TVCaptureDeviceEx creates a new graph using GraphFactory.
- GraphFactory.CreateGraph "Creates a new DirectShow graph for the TV capturecard" based on the info in TVCapture.CardTypes (eg. SinkGraph, DVBGraphBDA, etc). It's up to that graph object to implement the device-specific routines needed to use that interface (StartRecording, StartTimeshifting, TuneChannel etc)
The best way I see to implement IPTV into MP is to create a new card type within the MP source and a new graph class to go along with it. The problem is that there doesn't seem to be anything in DirectShow to work with a UDP stream (perhaps due to MS having their fingers in the IPTV market?). One method that looks interesting is RenderFile(L"C:\\Example.avi", NULL); - you can include a URL as the filename but as far as I can see, it's only for play mode and the URL has to be an HTTP one. See this MSDN page for more details.
I think to be effective, any given IPTV channel has to use the guide and be capable of timeshifting and recording in addition to viewing. Just viewing isn't gonna cut it.
My IPTV comes in on udp 239.x.x.x:94xx - a reserved multicast IP range with the URL and port being specific to the channel. Which brings me to the next issue.. Setting up these channels is going to be cumbersome, something MP is really good at getting past. Keeping that tradition is going to be tough.
Anyone have any feedback? I'd like to keep working on this but it's a bit overwhelming..