Category Archives: General

Catch-all category

General

Spam brain

Ha, I was amused to find that a sci-fi story had the same idea I’ve had, about spam filters eventually being a source of artificial consciousness:

“AOL is the origin of intelligence?” She laughed, and
he couldn’t tell if she thought he was funny or stupid.

“Spam-filters, actually…”

— Cory Doctorow, “I, Row-Boat”

Great story, by the way. And free for download, thanks to Doctorow’s enlightened attitude about sharing-as-marketing.

General

The switch flips

It seems like the direction of technological progress has been to reduce the number of moving parts in use, but now we may be starting a trend in the other direction. MEMS are getting hot, for example: MEMS switch tops 26 GHz, or DLP Pioneer….

[Ha, I accidentally made a funny when I said they’re ‘getting hot’. See, cuz the thing about MEMS systems is that they don’t get hot, like larger-scale mechanical systems. Ha.]

It’s pretty amazing that we’re seeing switches that thunk back and forth 26 billion times in a second, or projectors where every single pixel has its own little mirror wiggling independently hundreds of times per frame. What would Archimedes think of these?

And (of course) I see interesting roles for software coming up in concert with such systems. Whenever you can affect something in the real world at a rate of MHz or GHz, you can drive it with software and do some things you wouldn’t have believed…

General

Psychology of info-space navigation

I’m also fascinated by the psychology of getting around in unfamiliar info-spaces. In order to find a workaround for my problem outlined in Geek TV: open source rocks, I had to:

  • find anchor points
  • learn terminology
  • learn systemic interactions
  • build an environment for experimentation
  • build models of a system with dozens of components
  • perform experiments
  • twiddle code

and finally, reason about interactions between things I don’t understand, within a system I don’t understand, driven by a practical problem that I wanted to solve. And this all took place in a period of days, in a total of a couple dozen hours, on and off, with the final effort between getting annoyed with the problem and having a workaround occurring in a couple hours.

I’d really like to know more about how all that happens. I know that lots of academics have spent lots of effort on learning about that, and I have spent some time delving into their research, but still, I don’t feel like I have much of a feel for the most important parts of the whole process. It’s fun, in any case.

General

Sociology of software

I’m pretty fascinated by the concept that there’s a sociology of software, that the patterns of relationships in the little world of software components installed on a computer mirror, to some degree, the patterns of relationships in the world of users and developers. I suspect that some academics out there study such things, so I’ll have to see what they’ve learned some day.

I did find one interesting paper in an earlier search: Sociology in machines (PDF). It’s not hitting quite the nail with the exact hammer I’m thinking of, but it might be a good starting point.

Anyway, I was reminded of this when I was researching my problem in MediaPortal as mentioned in Geek TV: open source rocks. In that situation, we have at least three development groups (Nero, Team MediaPortal, and Microsoft) plus one user participating in transactions, specifically, User wants to use software from all three groups on the same computer. The sets of components are developed pretty independently of one another, but there are significant dependencies on Microsoft for both Nero and MediaPortal. Each set of components can be installed and uninstalled in somewhat independent ways. Nero and MediaPortal make calls to Microsoft components, but Microsoft also makes calls back to both. It’s in that particular web of interactions that problems arise.

I could go on, but won’t.

General

Geek TV: open source rocks

I’ve said it before, and you’ve heard it before me, but open source rocks.

I had a problem with MediaPortal that was bugging me. Certain things were taking too long, and too much memory. Long story short, I worked around the problem, in code, it in a couple hours of work. Given that it would have taken a similar amount of less intellectually stimulating work to find such a problem in a closed-source program, and I probably wouldn’t have been able to fix it, I consider this a great thing.

If you want lots of detail about the problem, and maybe its ultimate resolution, you can check out the forum thread I started over at MediaPortal support. We’ll see how that turns out. Could be that I’m an idiot, so my pointing to this thread may turn out to be a bad idea :-). Anyway, Slow graph rendering for analog card. I’ve reproduced my first three posts below for my own reference later, but you can read them too: I totally give you permission.

———

Slow graph rendering for analog card

Hello,

I hope nothing in this message is obvious or dumb; I don’t know MediaPortal, DirectShow, or Microsoft TV technologies all that well. However, I did find a problem and found a workaround for it, so maybe with some help we can find the right fix for it.

On my system with a Hauppauge WinTV-HVR-1600, it takes a very long time (probably 90 seconds), with the CPU maxed out, to bring up the Edit form for the analog side of my card in Televison->Capture Cards in MediaPortal Setup. It also take a long time, with a maxed out CPU, for MediaPortal to start up.

The line of code that takes a long time is line 297 in TVCapture/Graphs/Analog/SinkGraph.cs (from tag “Version 0.2.2”, I’m trying to stay with the stable build)
int hr = _captureGraphBuilderInterface.RenderStream(cat, null/*new Guid[1]{ med}*/, _filterCapture, null, _mpeg2DemuxHelper.BaseFilter);

I don’t know how to debug further down, since that’s a call to Microsoft code. I did notice in my early investigation that there’s lots of registry activity that looked consistent with DirectShow searching hard for matching filters.

It does eventually find a rendering (hr is 0 upon return), and everything works from there.

I saw that there is fallback code after the line above. So, I commented out the line (and the three lines after, and re-declared ‘int hr’) and let the fallback code try. It quickly finds an acceptable answer. After that change, the setup dialog comes up quickly, MediaPortal starts quickly, and analog TV is still available for viewing and tuning.

This problem may have become worse after I installed Nero ShowTime, which probably installs some DS filters. I’ll have to try uninstalling that to see if that really was a factor.

What are some good next steps to narrow down this problem and find the right solution? Or, is there enough data here for someone else who knows this system better to fix it?

[By the way, in looking at this, I noticed that the FillInAll method in EditCaptureCardForm gets called three times in the process of bringing up the form. I suspect it really only needs to be called once, which would lessen the problems with the form coming up.]

Thanks,

Steven
—–

Here’s a little more info. Nero is possibly part of the problem, but definitely not all of it.

Here are the actual timings for bringing up the Edit form in a few situations. (The ’90 seconds’ above was just a guess).
Original configuration: 196 seconds
After uninstalling Nero completely (I had a mishmash of OEM 6 Suite and Ultra 7 Suite installed; I uninstalled and deleted everything I could find): 20 seconds
With the workaround described above (removing the call to RenderGraph): 1 second

—–

And some more info:

After I reinstalled part of the Nero Ultra 7 Suite (details below), the Edit form took 168 seconds (without the code workaround). So Nero must be installing some filter(s) that are confusing to DirectShow’s search. However, if I capture the filter graph in GraphEdit before executing the RenderGraph, then render various pins in the graph, none of them take very long.

Nero likes DS filters; Program FilesCommon FilesAhead includes 46 files with extension .ax. (I deleted that directory before installing the Suite again, so I know these are Nero-related files).

Now, the question is: is there something wrong with how MediaPortal sets up its graph, or is it something bad about Nero’s filters? Or does it really matter, since Nero is a fact of life and it seems likely that MediaPortal can work around the situation?

Here’s what I installed from Nero:
Burning ROM
Vision
CoverDesigner
WaveEditor
SoundTrax

Recode
CD-DVD Speed
DriveSpeed
InfoTool

But I didn’t install:
Home
SmartStart
BackItUp

ShowTime
MediaHome
PhotoSnap
InCD
BurnRights
ImageDrive
Fast CD-DVD Burning Plugin
Mobile

General

PCHDTV

I was pondering new business ideas, and came up with a great new convergence device. I really need some help with it, so I’m posting a plea to the wide world. However, I don’t want to give away too much information about my design (patent pending, patent pending, patent pending!).

So, I’ll just say this: if you have experience relevant to designing lubrication systems for machines that feed card stock at 7700 mph or faster, please contact me for a great partnership opportunity.

General

Geek TV: the Microsoft stack

I mentioned that MediaPortal is open source. Well, there’s some truth to that, but there’s also the fact that what MediaPortal is doing is tightly tied to a big stack of software that isn’t open source.

Microsoft TV technologies forms the bulk of the hard core of the system. Microsoft has apparently spent some significant effort on laying a foundation for TV on their platform; from my look at what’s there, it’s pretty extensive. I’m guessing the effort went into their Media Center Edition and its associated applications, then they distributed the core components for use in XP, allowing various other parties to build user interfaces around the services.

Hauppauge/Conexant supply another bit of closed-source in their drivers. Hard to see what’s going on in there, although maybe we’ll get a peek when Linux drivers come. And I say, they will come. Go Hans!

I started looking into the underlying software as I discovered various problems in the various applications I tried with the card. I figured I might as well see what the effort would be to write my own bits to cover the holes. Some things are not that hard to do. For example, you can grab GraphEdit and build a graph in about two minutes (I mean, after learning some about how DirectShow graphs work, which I did in the process of getting MediaPortal to recognize my card) that will run and give you audio and video.

I used that to verify that it was at least possible to play PS2 again. See, the interesting thing about an MPEG-encoding card is that it takes a couple seconds for the signal to crawl through the MPEG pipe and back out to get to your screen. A couple-second lag makes playing real-time video games rather impossible. But, I was able to configure a little filter graph that bypassed the MPEG encoding/decoding, instead using UYVY format (and don’t ask me what that is, all I know is that it doesn’t have interframe compression and so doesn’t suffer from the time lag), run it, and see no perceptible lag. So, it’s theoretically possible to play PS2 still, and in a pinch I can use GraphEdit to do so, but I’m hoping that MediaPortal or DScaler can be used in that way too.

Geesh, that was a boring post. Sorry.

General

Geek TV: protocols and such

I mentioned TSReader at the end of my last post. I was pleasantly surprised to find such a program, and that the ‘lite’ version was free for non-commercial use. I’m no television engineer, I just play with my TV. Playing with TSReader gave me some insight into the structure of digital TV, MPEG, the software stack that puts the signal through to the screen, etc. I grabbed “DTV Survival Guide” from the library to give me a bit more detail on what’s going on, without diving too deep technically. I’ll tell ya if I find out anything particularly cool.

General

Geek TV: software

OK, so I mentioned that I was not completely thrilled with the Hauppauge bundled software. I won’t get into why:

  • one part of the install failed, “MPEG SW decoders”. Not knowing the architecture of this system as I now do, and seeing that it was an optional component, I figured, not a big deal. Well, knowing what I know now, I’d change the label to “You don’t need this, except if you want any of the other software to work, like to watch TV or record it or something. Good luck installing it!”. Turns out that the sub-installer just doesn’t work if you have a TMP envvar set (only took an hour with ProcMon to figure that out), and, well, that’s bad.
  • the TV app isn’t too great
  • scheduling recordings is… I did I say I wasn’t going to get into this.

I went off in search of some other options. Luckily, the market is rife with options. Let’s see:

  • Beyond TV: not bad. If I hadn’t found a cheaper solution, I might have dropped the $60 on this. Critically, it provided the confirmation that the hardware and drivers actually work.
  • Power Cinema: didn’t actually look past the $100-$120 price tag, but I have had reasonable success with Cyberlink products in the past.
  • Windows MCE: not gonna go get a new OS to watch TV, if that’s even possible outside of pre-built computers. I accidentally have it on my laptop, but that doesn’t do me much good.
  • Meedio: already gone.
  • MeediOS: not here yet.

Well, it goes on, but I don’t seem to have links to many others. Anyway, none of that matters, because I finally found MediaPortal. Wicked-cool! Open source (even if in C# and tied tightly to Windows), pretty, very active community, lots of plugins, lots of builtins, PVR, DVD, EPG, all the good stuff you expect, and free. Granted, it was unstable while I was setting it up, and it didn’t support my card initially. But my patience was not exceeded and was rewarded: I got it working on my card according to the developers’ instructions (and submitted my work so y’all HVR-1600 people don’t have to do it after the next release), and it just started stabilizing after a while.

Not to say that it’s everything a person could want or bug-free, but I’ve gotten a lot farther with it than with any other free solution, and as far as with Beyond TV, so I’m quite happy.

That gets me to the point of basic end-user functionality, which is good. My hardware works, I think the drivers are actually stable, and I don’t have to wretch my back working around bugs in the software.

In the process of figuring all these things out, I also found some tools that are kinda nice. This is where things get fun, right?

  • VideoReDo, despite its somewhat odd interface, is a quite capable cut/join MPEG editor, with support for all the sorts of MPEG that get thrown around (.mpg, .ts, .dvr-ms, res up to and beyond full HD), surprisingly capable automatic ad-cutting, etc. Possibly worth the $50, but I’m keeping my eye out for an OSS solution of similar quality, that, yeah, runs on Windows.
  • Speaking of cutting commercials, a neat OSS tool is Comskip. Good cleaning fun.
  • This is bleeding into my next post a bit, but TSReader is a very in-depth tool for looking at DTV streams and being very impressed with all the numbers and stuff. From $0 to $400.

Speaking of my next post, see ya then.

General

Kids’ TV

[This doesn’t count as my next post, relative to my last post. Skip this, mentally.]

Man, kids’ TV is some weeeird shit sometimes. I grabbed some Boohbah because I wanted HD test content. Well, I gave you the link, I don’t need to explain too much what the level of weirdness there is, as you’re listening to primary-colored blobs of stem cells farting their way across the screen.

It makes for some good HD test content. They’d sell at least as many HDTVs with this playing in the stores as with football.