Why don't I try processing a ts file from EyeTV first?
It will need to be 60 secs long and if you can upload it to RapidShare (say) I'll give it a try.
At least then we will know the format can be processed before you waste any time on it.
The software consists of an exe, a few dll's and some configuration files. I'll also give you a sample parameter file as that's how it's driven. The command line pretty well justs points to the parameter file.
It needs to be unzipped with the Configuration directory off the executable directory as in the zip file.
There is a parameter file (MHEG5 Test.ini) that will drive it but you will need to change the output file and dump file locations.
The command line to run it is EPGCollector /ini="MHEG5 Test.ini"
With MHEG5 you need to set the PID containing the data when you run with a transport stream file rather than a live feed. That's what the Debug line you can see in the ini file is doing and it's correct for the dump you gave me yesterday. If you have a dump from NZ satellite it would be 1001 instead of 1003. It's the only protocol that needs any special treatment to find the data.
You may notice a dll called DirectShow. The program needs it because it logs the version numbers of each of it's dll's on loading but hopefully it won't need it after that.
It displays and writes a log while it's running. Under Windows the log file is written to the application data directory - no idea where it will go under Mono. This location is not currently configurable.
Thanks again for all your hard work on this. Looks like there are still some directshow dependencies along for the ride:
[Sun 4:27pm] ryan@crackotage ~/Downloads/EPG_Collector_for_Mono/ $ mono EPGCollector.exe /ini="MHEG5 Test.ini" Started on 13/03/2011 ============================ EPG Collector (Version 3.1) ============================== Executable build: 3.1.4089.22210 ** The program has failed with an exception ** Exception: Could not load type 'DirectShow.DirectShowGraph' from assembly 'DirectShow, Version=3.1.4089.20222, Culture=neutral, PublicKeyToken=null'. ** Location: at EPGCollector.Program.Main (System.String[] args) [0x00000] in :0 Exiting with code = 5
I'm not sure whether I need something extra with Mono, or this can be fixed within the EPG Collector code.
EDIT - what, no code tags? Outrageous. Bad Geekzone.
Cloud spending continues to surge globally, but most organisations haven’t made the changes necessary to maximise the value and cost-efficiency benefits of their cloud investments. Download the whitepaper From Overspend to Advantage now.
OK, Added in DirectShowLib-2005.dll from the 3.0 release, and got a bit further, now processes the ini but halts with another error (sorry for the log spew):
Base directory: /Volumes/HomeOld/HomeLinks/Downloads/EPG_Collector_for_Mono Data directory: /Volumes/Home/ryan/.local/share/Geekzone/EPG Collector
Processing command line parameter: /ini=MHEG5 Test.ini Processing ini parameter: [GENERAL] Processing ini parameter: Output=.\TVGuide.xml Processing ini parameter: [DIAGNOSTICS] Processing ini parameter: TSFile=.\00000000132b514b.ts Processing ini parameter: Debug=SETDSMCCPID-1003 Processing ini parameter: [DVBS] Processing ini parameter: Satellite=1600 Processing ini parameter: Dish=9750000,10750000,11700000,AB Processing ini parameter: TuningFile=160.0?E Optus D1.xml Processing ini parameter: ScanningFrequency=12456000,22500,3/4,H,MHEG5 ** The program has failed with an exception ** Exception: Thread.Name can only be set once. ** Location: at (wrapper managed-to-native) System.Threading.Thread:SetName_internal (System.Threading.InternalThread,string) at System.Threading.Thread.set_Name (System.String value) [0x00000] in :0 at DVBServices.EPGController.epgWorkerDoWork (System.Object sender, System.ComponentModel.DoWorkEventArgs e) [0x00000] in :0 at System.ComponentModel.BackgroundWorker.OnDoWork (System.ComponentModel.DoWorkEventArgs e) [0x00000] in :0 at System.ComponentModel.BackgroundWorker.ProcessWorker (System.Object argument, System.ComponentModel.AsyncOperation async, System.Threading.SendOrPostCallback callback) [0x00000] in :0 Exiting with code = 5
Same error with that new package, although no longer regarding the DirectShow dependencies, now regarding threads.
** The program has failed with an exception ** Exception: Thread.Name can only be set once. ** Location: at (wrapper managed-to-native) System.Threading.Thread:SetName_internal (System.Threading.InternalThread,string) at System.Threading.Thread.set_Name (System.String value) [0x00000] in :0 at DVBServices.EPGController.epgWorkerDoWork (System.Object sender, System.ComponentModel.DoWorkEventArgs e) [0x00000] in :0 at System.ComponentModel.BackgroundWorker.OnDoWork (System.ComponentModel.DoWorkEventArgs e) [0x00000] in :0 at System.ComponentModel.BackgroundWorker.ProcessWorker (System.Object argument, System.ComponentModel.AsyncOperation async, System.Threading.SendOrPostCallback callback) [0x00000] in :0 Exiting with code = 5
If i remove the DVB-S section from the ini file, I get a different error about not being able to find the tuning frequency (makes sense). I wonder if the code is still trying to access a tuner?
Other thing I thought of was path names across Mac/Windows. I've just replaced the input and output paths in the ini file with relative references, hopefully that's the right thing to do.
Are there any debug options i can use in the binary? Would it be more helpful if I attempt to build from source and debug?
Can you post the log file? It's only a text file. That was very close to starting to process the data.
The DVBS section needs to stay in the ini file and it's not trying to access a tuner. There may just be a slight difference in the Mono .net libraries to the real ones.
It's trying to set the name of a thread which is just a basic .net function. Nothing to do with DirectShow.
No real reason for the previous problem in that it was creating a thread and setting a readable name for it. The name of a thread is only cosmetic so I've commented the line out together with any other occurrences of the same function.
If we really get stuck I'll pass you the code. I'm not keen to do that at the moment because this version is still being tested/changed ready for a release at the end of the month. I don't want different versions for Windows users and another for Mono.
Anyway we've only been at it for a couple of hours. I spent over 2 months testing with a guy in Oz before OpenTV was working. He nearly ended up divorced!!!!
Same problem with that version unfortunately, I've updated the log but the message seems identical.
Fully understand not wanting to release unfinished code, I've worked on far too many projects that have become fragmented through platform differences. The answer is code flexibility, not fragmentation.
Don't worry, my girlfriend is long past minding my involvement in various projects ;)
On the plus-side, the EyeTV plugin is done otherwise, it can export a TS in real time by duplicating packets as they come off the tuner, parse out the DSM-CC PID and run the EPG Collector, all that's missing is the XML conversion. Promising!
Are you subscribed to our RSS feed? You can download the latest headlines and summaries from our stories directly
to your computer or smartphone by using a feed reader.