HTPC as Preamp/Processor- An Audio/Video Control Panel (software) project - AVS Forum
Forum Jump: 
Closed Thread
 
Thread Tools
post #1 of 230 Old 03-22-2003, 08:51 PM - Thread Starter
 
ElvisIncognito's Avatar
 
Join Date: Apr 2001
Location: Margaritaville, CA, USA
Posts: 2,176
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 11
In this thread, we discussed using the HTPC as a full-fledged preamp/processor, with analog outputs feeding either active (amplified) speakers or power amplifiers (not receivers, which integrate 3 components, only one of which is a multi-channel power amp.) It was generally agreed upon that an HTPC is capable of performance comparable to and possibly eclipsing the very best high-end commercial preamp/processors. Several who posted to the thread own/have owned high-end preamp/processors (Anthem AVM-2, Tag McLaren AV32R-EX, Lexicon MC-12, EAD TheaterMaster Signature, Meridian 561, Classé Audio SSP-50) and agree that there's little doubt as to the HTPC's capabilities in comparison to commercial offerings. (Recent testing in this excellent thread: High-End Analogue Soundcard Shootout also attests to this.)

A handfull of trailblazing pioneers are doing this successfully, but the thread identified two significant limitations that will have to be addressed before the HTPC can be considered as a legitimate alternative to high-end commercial/conventional offerings. One of these limitations is a hardware issue. Specifically, that the HTPC lacks sufficient audio and video inputs and outputs to truly serve as a preamp. Regardless of the sound/video/capture card configuration, the HTPC simply does not have the flexibility of a conventional preamp with regards to external components. This thread has been started to address the hardware issue.

The second issue, and the one which this thread addresses, is a software issue- the lack of an adequate user interface and sufficient control over the many aspects of signal processing and system configuration. Modern preamp/processors provide much more than input selection and volume control. They offer amazing levels of sophistication (almost rivaling a PC ;)) - they are the nerve center of the system. They provide surround sound decoding, level-matching for all channels, per-channel bass management, simulated surround encoding for non-surround encoded material, various DSP modes and more.

Depending on your choice of software DVD player and/or sound card, the HTPC lacks much of this functionality. Some DVD player software will decode some or maybe even most surround formats. Some may provide rudimentary bass management and perhaps even a graphic equalizer. Some will even encode non-surround encoded material using DPL2 or Circle Surround II. Several 5/6/7.1 sound cards offer individual channel level control. Some even offer bass management. (The M-Audio Delta 410 and Revolution are quite good in this area.) The Revo even offers CSII for non-surround encoded material. But no software DVD player, no sound card, no combination of player and sound card will offer all the functionality of a high-end commercial preamp/processor.

This (hardware-independent) software control panel project is all about addressing these shortcomings. When complete, this A/V Control Panel should provide a level of sophistication to rival the very best high-end commercial preamp/processors... all the control and configuration you desire with any sound card you choose.

Following is an initial draft of proposed functionality...
  1. Basic Functionality
  2. Decode AC3 (Dolby Digital) audio from the internal DVD-ROM drive, .VOB file, etc.
  3. Decode DTS audio from the internal DVD-ROM drive, .VOB file, etc.
  4. Decode AC3 (Dolby Digital) audio from an external source (brought in via S/PDIF connector on sound card)
  5. Decode DTS audio from an external source (brought in via S/PDIF connector on sound card)
  6. Allow for volume control of each individual channel (up to 8 channels counting LFE.)
  7. Adjustable crossover points (from 50 Hz to 160 Hz in 10-20 Hz increments) for all 5/6/7 main channels combined with the ability to...
  8. Redirect bass below the crossover point to the LFE channel or, for those with 5/6/7 full-range speakers, redirect the LFE channel to all/some of the main speakers.
  9. Select from different inputs (both external devices such as a DirecTiVo as well as internal devices such as the DVD-ROM drive) and possibly even outputs (for multi-room/multi-zone capabilities.)
  10. Save "sets" of settings so that multiple settings can be changed with the click of a single button. (As with the Revo control panel.)
  11. Allow for control of all critical functions (and preferably all functions- period) using keyboard shortcuts.
  12. Any/all processing should be applied in the digital realm, then, after conversion from D to A, output using a non-mangling method such as ASIO or kernel streaming

    Intermediate Functionality
  13. Provide an adjustable (global) audio delay to enable synching of audio with video.
  14. Encode 2 channel audio from external (analog) sources as surround sound (using SRS CSII, DPL2 or DTS Neo:6.)
  15. Pass multi-channel analog audio (such as from an SACD player) straight through to amplifiers (without converting from A to D and back again)
  16. Allow other DSP effects (Hall, Theater, etc.) to be applied to any given audio stream (whether from an internal or external source.)

    Advanced Functionality
  17. Input gain adjustments for level-matching all input sources
  18. Provide user adjustable clipping thresholds
  19. Allow for analysis and correction of room/speaker characteristics
Notes/Questions/Issues:
Items 1 and 2 may be best addressed using DirectShow filters and filter graphs. (In fact, Blight- when I asked him about writing this application- suggested using DirectShow filters for all functionality.) AC3/DTS licensing is avoided/circumvented by simply requiring users to purchase player software that includes the desired decodes. No muss, no fuss (no licensing hassles.)
Items 3, 4 can probably also be done via filters/graphs. The (open source) AC3filter is able to bring in (and decode) external streams. If it can bring them in for decoding, we should be able to as well; the question is whether we can decode using a different filter (and probably one that was never written to decode external streams) via filter graphs.
Item 13- The M-Audio Revo does this, but it's a hardware function of the card - it would be much better if this was hardware independent. Is SRS's WMP CSII plug-in a D'Show filter? If so, can it be used in a filter graph? If not, I have a contact at SRS - maybe we can get a CSII DirectShow filter.
Item 14- For SACD/DVD-A pass-through, is it essential that we still providing volume control or do these players typically offer variable outputs?
Item 18- The open source AC3filter provides a graphic equalizer, but in order to perform true room/speaker correction, a software pink noise generator will be required as well as a spectrum analyzer and a calibrated microphone. (Otherwise it's nothing more than an elaborate tone control.) Creating an equalization curve to compensate/correct for room/speaker problems may be the most daunting task we face.

Of all the possible paths we can take to accomplish this (as I see them- LMK if I've overlooked any serious possibilities), the only one that seems realistic is writing it ourselves...

We're not going to get a (soundcard) manufacturer to write it. Through Herculean effort, Cliff Watson managed to persuade M-Audio to do some of this, but at this point, HTPCers are a niche within a niche, and M-Audio doesn't really seem that interested. Let's face it, gamers represent a much, much larger market. What Cliff has managed to get done has been great; it has allowed some of us to use our HTPCs as pre/pros, but many still struggle against the constraints of a few missing (or poorly implemented) critical functions, many want a great deal more functionality, and some want to be able to use high-end cards such as an RME or Lynx TWO card.

I contacted RME about this...
Quote:
Response from Matthias Carstens at RME
Thanks for your informative and kind mail. I am well aware of the avs forum (although I don't read it regularly).
[SNIP]
The DIGI96 has become a bit old these days. And will be replaced soon by the new HDSP 9632 (see our website for more information). When we designed this card, we indeed had the HTPC in mind. The HDSDP 9632 has 2 balanced 96 kHz outputs. Using an optional 4 channel analog output board the costumer gets a total of 6 channels - all balanced, all 96 kHz, all with stunning THD and SNR values (better than with the old AEBs used with the DIGI96 series). Additionally, the HDSP 9632 uses a new clock circuitry which makes it competely immune to clock jitter. All in all this card will sure be a favourite for quite some users.

I know that we don't have some more sophisticated HT-features. For me, delay, bass management and level control should be done within the DVD player software. Unfortunately there is none at this time which includes those. We have no plans to add this functionality to the drivers, especially as it causes some CPU load. But that might change.

At least, thanks to TotalMix, level control is no problem. When the HDSP 9632 will be released, TotalMix should have got a 'group-related' update, which allows to move one fader and have others to move also. So one can easily change the volume of all 6 speakers at the same time.
So, while that may be encouraging to some, it doesn't resolve the issues outlined here. Even if this were possible, I don't think it's smart to tie ourselves to a single card or even manufacturer. Far, far better to make it hardware-independent.


We aren't likely to get a software company to write it, either. Again, we're a niche market and probably haven't yet made it to the fringes of Cyber/Intervideo's radar screens.

Other programmers? Andrew Chilvers (TheaterTek) would be a logical choice- Andrew not only understands, but caters to our niche. I have no idea if he would be up for something like this- I'll mention it to him & we'll see. Regardless, this solution introduces its own problems when new filters come out (in another product) that are superior to the ones in the product that we would be tied to... Blight was one of the first people that came to mind, but this is not only too large for him, but beyond his skill set as well. (I didn't know he had limitations! :D) I contacted Scott Lehman (Harmony Central) about it- he is aware of the HTPC and of AVS Forum (he has a friend with a Holo3D-equippped HTPC) and he has expressed some interest, but doesn't have the time for a project of this magnitude. I posted a thread in a very active VST forum but didn't get so much as a nibble. (For those that aren't familiar, VST is basically Steinberg's (ASIO=Steinberg) implementation of DirectShow, but whereas D'Show is consumer oriented, VST tends toward the professional/studio crowd.)

So... that leaves us - and by "us", I'm excluding "me" since (sadly) I am not a C/C++ programmer (yet). But I am willing to do anything/everything I can, including a substantial amount of recruiting (which I've already begun!). One of the best things about Blight's suggestion (to use DirectShow filters to do everything) is that it allows us to modularize it - break it down into bite-size morsels. That way we can (hopefully) more easily persuade other DirectShow programmers to help us out by taking just one little bite...

Of course, it's a big project when taken as a whole, and we'll certainly need all the help we can round up - a big, group effort. Fortunately, there are lots of programmers to be found who might be able to help out with DirectShow filters... maybe some of the people involved with DScaler, maybe mkanet & the HiPix crew... maybe Vigovsky Alexander (author of AC3filter)... maybe some folks at doom9... maybe deanbob will find some time...
Quote:
Originally posted by deandob
If I had more time I'd consider firing up Visual Studio to build the pluggable DirectShow filters - it shouldn't be that hard
Beyond these possibilities lie many more - perhaps this (new) thread, with its more appropriate title will attract new attention from forum members (who may have/contact programmer friends outside the forum) with the skills to help out... I'll search the internet if I have to and ask any Audio/D'Show programmers I can find to have a look at our project and help us out.

I'm considering SourceForging the whole thing. (If I do, I'll need a better project name than "HTPC Audio/Video Control Panel". Phat Phreddy suggested "PCPrePro" which isn't bad. Any other ideas?) Before I do (since it seems a bit absurd for a non-programmer to start a SF project), I'll need to know that at least one or two programmers are on board - the SF project will need them for the sake of credibility. So, if you're a programmer, and you can help out, please LMK...

All you non-programmers, please give us your thoughts on the Basic/Intermediate/Advanced Functionality lists? Have I left anything out?

Once this is successfully, there should be a great many more HTPC-as-preamp/processor success stories. I hope you'll visit that thread and post yours.
ElvisIncognito is offline  
Sponsored Links
Advertisement
 
post #2 of 230 Old 03-24-2003, 12:49 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
I'm not really surprised you've got no responses. As it stands here you've put down a long list of really quite hard things and there aren't that many low level developers here. But anyway moving on to more positive stuff.

All of what you want seems possible given time and resources. I'd agree that DirectShow is totally the way to go, although I'd drop in DMO as a possibility for some of the simpler filters as it is a bit easier to program.

One thing I'd definiely avoid doing is trying to make any project specific to what you think you want, so avoid prepro as a name or even part of the decription. Here's how I'd break it up (in fact this is very similar to how I was going to approach DScaler 5)

1) UI and state management with scripting
2) Graph builders
3) Graph controllers
4) Video Filters
5) Audio Filters
6) Navigators

I'll talk about each of these in more detail below.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #3 of 230 Old 03-24-2003, 01:08 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
UI and State managment with scripting

The user needs to see an interface to the device, but there is no single set of requirements here, you have people who will want control from keyboard, mouse, WinCE control, pronto, dvd style remote. The user may want feedback about actions to go to Screen, LCD, WinCE device. The user may also want actions to be peformed on a different machine or on a device controled by IR or serial.

On each input device the usability should be optimised and for each output device should take advantage of any availiable features.

What all this points to is clean way for the inputs to invoke actions and for feedback to be given to the user. Also we probably want to avoid a lowest common demominator on the UI.

Scripting to me is one big missing feature on current HTPC software, users/installers should be able to add custom actions to events and litrally write macros to perform a series of actions that suit the exact environment being used. A lot of otherwise hard things can be simplified by the use of scripting. An easy example might be
Code:
Public Function HTPC_OnDVDInsert(Region as Integer, Id as string) as Boolean
Dim QuestionArray(3) as string
Dim Response as integer
QuestionArray(1) = "Play"
QuestionArray(2) = "Rip"
QuestionArray(3) = "Ignore"

// display question for 5 seconds, return 3 on time out
Response = DisplaySimpleUI(QuestionArray, 5, 3)

if Response = 1 then
    if Region = 2 or region = 4 then
         DisplaySetup 1440, 576, 100.0, 16/9
    else
         DisplaySetup 1440, 640, 71.9, 16/9
    end if
    ' do default action
    HTPC_OnDVDInsert = True
else if Response = 2 then
    ' do default action
    GraphBuilders("DVD Rip").Build
    Graphs("DVD Rip").Run
    ' don't do default action
    HTPC_OnDVDInsert = False
else
    ' don't do default action
    HTPC_OnDVDInsert = False
end if

end Function
the above demonstrates I think the sort of power that people need, I wouldn't want to impose an ask for rip on insert on most poeple and forcing those that do want it do find some bool option deep in the system will overcomplicate the system. Here we allow the user to decide exactly what they want to do when someone inserts a DVD, and even do things that require extra software at present like setting up the display properly for the region being used.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #4 of 230 Old 03-24-2003, 01:20 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Graph Builders

I see these as either scripts that are very specific to a particular setup or generic ones that pick the default filters. A graph builder defines a function that can be performed on a file or drive. I'd expect there to be something like

DVD player
SVCD player
CD player
File (playlist) player
Analog TV viewer
Digital TV viewer

Each of these are pretty simple to put together basic versions of.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #5 of 230 Old 03-24-2003, 01:22 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Graph Controllers

Having built a graph we need to be able to control it using out UI and script structure. Since we can imagine having tens of say DVD builders floating around it would be sensible to split out anthing common once the graph is built.

Again fairly simple to write using standard DirectShow.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #6 of 230 Old 03-24-2003, 01:24 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Video Filters

I'm planning to make most of the DScaler functionality availiable as DMO filters, this will hopfully enable things like DScaler film detect and deinterlacing on DVD sources which will hopefully up the quality bar a bit.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #7 of 230 Old 03-24-2003, 01:26 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Audio Filters

Most of what you talk about as requirements are really requests for new filters. These should be taken on by any developer who wants that specific functionality.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #8 of 230 Old 03-24-2003, 01:30 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Navigators

These will allow the display and searching of collections of files. The important thing here is to allow the selection from multiple devices. E.g. on my audiotron I can happily select from my MP3 collection on a 30x2 LCD, but I might also want to browse the collection with cover art using a monitor or from a handheld. The key thing here is to present a rich interface but not require that all of it is used.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #9 of 230 Old 03-24-2003, 01:47 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Summary

There is a lot to do, the hard bit will be defining the UI layer and the interaction with the other parts of the system. VB Scripting is actually quite easy to add if you use COM throughout as I would plan to.

As I mentioned before, this is the rough approach I was going to take anyway with DScaler 5 (probably time for a name change though), I just need to prove a few things out first before making a full proposal but things are looking OK at the moment. In terms of what else is required I'd say try and get the audio filters you need sorted and then maybe we'll be ready to integrate at some point in the future.

One thing I'd say would be nice is some graphic design skills to work on the UI layer and possibly do some mock ups. For the main interface I'm thinking about a skinable DVD style interface with sliders, check boxes, and some kind of scrolling list mechanism.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #10 of 230 Old 03-24-2003, 06:19 AM
Advanced Member
 
budiman's Avatar
 
Join Date: Apr 2000
Location: St. Louis, MO, USA
Posts: 909
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Even though all the points listed CAN be done, it is a very expensive to do as a whole. There are solutions out there that already do stuff, but none that does everything as a whole.

The only thing that hasn't been done yet is the bass-management part - most probably because it's very difficult and requires a lot of acoustical knowledge AND programming knowledge (a combination which is usually mutually exclusive) - don't forget, the person has to contribute for free too :).

JohnAd:
Your UI and pseudo-code on HTPC_OnDVDInsert is something that I've been looking at the past 2 weeks - basically I wanted to have a generic handler for CD/DVD Insert that I can taylor to my own specification. This will also solve the Generic SW DVD Player install screen pop-up problem. There is a way to do this, look for IQueryCancelAutoPlay on MSDN for more info.

Unfortunately, this delves rather heavily into manual COM stuff, which is a PITA to do in C++, so I'm looking at it rather lazily. Also, it works only on XP. Ideally, this will be done in .NET, and the code will allow .NET hosting, so power users can write their own .NET code to handle specific conditions.

Ciao.
Muljadi Budiman
budiman is offline  
post #11 of 230 Old 03-24-2003, 06:45 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Quote:
Originally posted by budiman
Even though all the points listed CAN be done, it is a very expensive to do as a whole. There are solutions out there that already do stuff, but none that does everything as a whole.
Exactly which is why we need to divide and conquor.


Quote:
The only thing that hasn't been done yet is the bass-management part - most probably because it's very difficult and requires a lot of acoustical knowledge AND programming knowledge (a combination which is usually mutually exclusive) - don't forget, the person has to contribute for free too :).
Call me simplistic, but I think that a lot of the audio stuff can be done with a FFT and fiddling. I'm sure there is lots of FFT code floating about.

Quote:
Your UI and pseudo-code on HTPC_OnDVDInsert is something that I've been looking at the past 2 weeks - basically I wanted to have a generic handler for CD/DVD Insert that I can taylor to my own specification.
It was just meant as an example of the sort of thing I'd leave to the users rather than forcing the app to handle every possible situation.


Quote:
Unfortunately, this delves rather heavily into manual COM stuff, which is a PITA to do in C++, so I'm looking at it rather lazily. Also, it works only on XP.
COM is just C++ with reference counting, if you're finding it hard then you're doing something wrong (like using MFC ;) ).

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #12 of 230 Old 03-24-2003, 12:33 PM
Senior Member
 
Justin's Avatar
 
Join Date: Dec 1999
Location: Palm Harbor,FL USA
Posts: 202
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
This thread seems more to my taste, I kinda got caught up in the HTPC AV Switcher thread when I should have been here.

I might suggest as a possibility, instead of ActiveX script/COM, to go .Net CLR for the UI/Server.

I have done some work in C# building,running and controlling DShow filter graphs, and it can be done quite nicely.

Why .Net? Well your suggestions for Scripting and remote control can be accommodated from .Net IMO much more robustly.

For scripting, .Net doesn't really have a scripting runtime per say, but it is because they have forgone scripting for dynamic compilation. This is how ASP.net works, and the runtime has C# and VB.net compilers built in that can be used as objects. Code can be generated, parsed and compiled on the fly from within an application.

For remote control, .Net has remoting, which allows any CLR object to be "remoted" accessed out of process whether locally or across the network.

these coupled with the the Rapid GUI development while still allowing fully multihreaded application design and low level access to COM and C style apis(PInvoke) should make this a great match for what needs to be accomplished.

Whatever technology is used, it would be ideal to have a HTPC app like this. It almost seems like it would end up being some sort of Media Center type app with a user accessible filter graph and scripting/plugin type ability.

If .Net is considered to be viable, let me know I may be able to contribute to such a project.

Justin
Justin is offline  
post #13 of 230 Old 03-24-2003, 01:38 PM
AVS Special Member
 
helzerr's Avatar
 
Join Date: Feb 2002
Location: Ocala, FL
Posts: 1,976
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Disclaimer: I am not even remotely a software engineer...

One idea I had tossed around in some Delta 410 discussions a while back: Create a virtual sound card "driver" so it becomes easy to shim all this processing between any application that can choose its sound device and the real hardware. Maybe this isn't such a big deal now that more applications are Direct Show aware, but it sure would be nice for "legacy" applications like Winamp that have no way (that I know of at least) to use a direct show graph.

Is there any validity to this idea, or am I off in left field here?


To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
helzerr is offline  
post #14 of 230 Old 03-24-2003, 02:08 PM
Member
 
jjarmoc's Avatar
 
Join Date: Jan 2003
Location: Chicago, IL
Posts: 199
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Helzerr -
Like you, I have very little knowledge of programming. However, I like to think I have a good understanding of things at the higher level. I work with this stuff after all.
Anyhow, i'd agree than having some sort of virtual driver seems to be the best way to handle this. By implementing the program at such a low level, any program can run on top of it without having to be aware it even exists! I'm sure I've seen similar things done in other applications, but off the top of my head I can't think of any examples.

For what it's worth, I'm not the right guy to contribute to the programing aspect of this, but I'd be more than willing to help out with the administrative and organizational aspects as much as possible. I'd also be willing to test, and possibly help with the UI design and stuff when things reach that stage. I have a basic to intermediate knowledge of a few scripting and programming languages, so maybe I can help a little more than I think.. but I'm certainly not the person to take the lead on this.

Perhaps it'd be best to split it into a few sub-projects?
jjarmoc is offline  
post #15 of 230 Old 03-24-2003, 02:42 PM - Thread Starter
 
ElvisIncognito's Avatar
 
Join Date: Apr 2001
Location: Margaritaville, CA, USA
Posts: 2,176
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 11
Quote:
Originally Posted by JohnAd
There is a lot to do, the hard bit will be defining the UI layer and the interaction with the other parts of the system. VB Scripting is actually quite easy to add if you use COM throughout as I would plan to.

As I mentioned before, this is the rough approach I was going to take anyway with DScaler 5 (probably time for a name change though), I just need to prove a few things out first before making a full proposal but things are looking OK at the moment. In terms of what else is required I'd say try and get the audio filters you need sorted and then maybe we'll be ready to integrate at some point in the future.

One thing I'd say would be nice is some graphic design skills to work on the UI layer and possibly do some mock ups. For the main interface I'm thinking about a skinable DVD style interface with sliders, check boxes, and some kind of scrolling list mechanism.
Thanks for the detailed responses, John. Frankly, the GUI was/is the least of my worries since the number of people able to help out in that area is considerably larger as compared to those who can write DirectShow filters. I've done a lot of work with Active Server Pages (using VBscript), so hopefully I can help out in this area (though I haven't a clue about COM.) Scripting is my specialty, so it's good to know that I'll at least be able to contribute in this area... I'm a guru with NT shell scripting (fat lot of good that will do here!) and pretty good with Python (and VBscript as mentioned.)

I completely agree with you on a skinnable interface. That way everyone can achieve the look & feel that best fits their home theater. I'm really hoping Blight will get involved with this at some point... it seems to me he's done a fabulous job with filters & graphs in Zoom Player, and it's skinnable. I'm not sure ZP is the best place to integrate all this (though maybe it is) but it's certainly a good model for what we're shooting for, I think.
ElvisIncognito is offline  
post #16 of 230 Old 03-24-2003, 03:46 PM
AVS Special Member
 
salsbst's Avatar
 
Join Date: Jul 2002
Location: Washington, DC, USA
Posts: 1,226
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
I'm reading up on DirectShow.... would love to be able to contribute. Last time I used C++ was for a small IIS ISAPI filter. C++ has always been a "when I absolutely must use C++" kinda language for me. ;) Never done any realtime-type work nor media processing, either, so I can't promise to be very helpful. But I'm going to try to learn.

Justin, I think C# and .net are great for many things. I don't know that they'd be suitable for developing DirectShow filters, though. I think data would need to be marshalled in and out of the "managed code" memory area and I think this would present performance problems.

One issue that concerns me is the way in which any DirectShow filters that we develop would interact with the rest of the world. For examples:

Will I really be able to get the SPDIF data (for example) from my Delta 410's SPDIF input into a DirectShow graph?

Which music player will allow me to insert a hypothetical CS II filter in the middle of its processing? Do I have to give up Media Center to get this?

[edit: corrected spellinq]

Stuart --
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
salsbst is offline  
post #17 of 230 Old 03-24-2003, 04:05 PM
Member
 
slehman's Avatar
 
Join Date: Mar 2003
Posts: 110
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally posted by jjarmoc
Helzerr -
Like you, I have very little knowledge of programming. However, I like to think I have a good understanding of things at the higher level. I work with this stuff after all.
Anyhow, i'd agree than having some sort of virtual driver seems to be the best way to handle this. By implementing the program at such a low level, any program can run on top of it without having to be aware it even exists! I'm sure I've seen similar things done in other applications, but off the top of my head I can't think of any examples.
This should definitely be doable. There was a program called Virtual Audio Cable in the past that did it at the MME driver level. That would be totally unacceptable for this application, but the concept should carry over to the WDM/kernal streaming model now used. It very well may already exist.

I am not a Windows power-user or Windows programmer by any means, but I do have some familiarity with the audio sub-systems. I spend the most of my day on Mac OS, including some audio programming, and did a little audio development on BeOS (which was a very interesting model for media applications).

This would be a very interesting app!

Scott
slehman is offline  
post #18 of 230 Old 03-24-2003, 04:44 PM - Thread Starter
 
ElvisIncognito's Avatar
 
Join Date: Apr 2001
Location: Margaritaville, CA, USA
Posts: 2,176
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 11
Welcome aboard, Scott! It's great to have you involved. Is the basic (core/audio processing) code reasonably portable? I'm wondering if we might be able to leverage your knowledge of audio processing to get the processing code written, then compensate for your Mac-centricity ;) by having somebody who is familiar with DirectShow programming put a D'Show wrapper on it.

Anybody have any thoughts on this? Is this feasible/practical/logical?
ElvisIncognito is offline  
post #19 of 230 Old 03-24-2003, 05:06 PM
Senior Member
 
Justin's Avatar
 
Join Date: Dec 1999
Location: Palm Harbor,FL USA
Posts: 202
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
I definitely did not mean to imply writing directshow filters in C#, but building and controlling filtergraphs is another matter, its analogous to pushing buttons on av components, it doesn't have to be high performance like the internals of the DS filters do. The filters would definitely be in the realm of C++ for now ;).

Justin

Quote:
Originally posted by salsbst
I'm reading up on DirectShow.... would love to be able to contribute. Last time I used C++ was for a small IIS ISAPI filter. C++ has always been a "when I absolutely must use C++" kinda language for me. ;) Never done any realtime-type work nor media processing, either, so I can't promise to be very helpful. But I'm going to try to learn.

Justin, I think C# and .net are great for many things. I don't know that they'd be suitable for developing DirectShow filters, though. I think data would need to be marshalled in and out of the "managed code" memory area and I think this would present performance problems.

One issue that concerns me is the way in which any DirectShow filters that we develop would interact with the rest of the world. For examples:

Will I really be able to get the SPDIF data (for example) from my Delta 410's SPDIF input into a DirectShow graph?

Which music player will allow me to insert a hypothetical CS II filter in the middle of its processing? Do I have to give up Media Center to get this?

[edit: corrected spellinq]
Justin is offline  
post #20 of 230 Old 03-24-2003, 06:40 PM
Member
 
slehman's Avatar
 
Join Date: Mar 2003
Posts: 110
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
Quote:
Originally posted by ElvisIncognito
Welcome aboard, Scott! It's great to have you involved. Is the basic (core/audio processing) code reasonably portable? I'm wondering if we might be able to leverage your knowledge of audio processing to get the processing code written, then compensate for your Mac-centricity ;) by having somebody who is familiar with DirectShow programming put a D'Show wrapper on it.
The app I've been working on is a real-time modular audio processing system. There's not much that would be directly useful (it's mostly effects type stuff - pitch shifting, flanging, delays, etc.) or portable (to take full advantage of OS audio features, you usually need to use the platform-specific APIs). The engine is portable, but I don't think it would be practical for this particular application.

So I don't think there will be much code to leverage, but I have been interested in porting to Windows and have started poking around.

Scott
slehman is offline  
post #21 of 230 Old 03-24-2003, 09:39 PM - Thread Starter
 
ElvisIncognito's Avatar
 
Join Date: Apr 2001
Location: Margaritaville, CA, USA
Posts: 2,176
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 11
Quote:
Originally posted by slehman
The app I've been working on is a real-time modular audio processing system. There's not much that would be directly useful (it's mostly effects type stuff - pitch shifting, flanging, delays, etc.)
The delay function would certainly prove useful, as one of our criteria is to provide for delay capabilities to synch video and audio. Also, I like seeing "modular" since we hope to "divide and conquer" in order to make this happen.

Any experience with DSP modes?

Here's an MSDN link that may prove helpful regrarding the DirectShow API: http://msdn.microsoft.com/library/en...directshow.asp
ElvisIncognito is offline  
post #22 of 230 Old 03-25-2003, 12:57 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Quote:
Originally posted by ElvisIncognito
Frankly, the GUI was/is the least of my worries since the number of people able to help out in that area is considerably larger as compared to those who can write DirectShow filters.
The UI is a bit chicken and egg, without a UI nobody will use the filters, without filters nobody will use the UI.


Quote:
I've done a lot of work with Active Server Pages (using VBscript), so hopefully I can help out in this area (though I haven't a clue about COM.)
The actual creation of the UI I see being very low level GDI/bitmap programming with some stuff to bolt on COM automation so that the scripting will work.

Quote:
Scripting is my specialty, so it's good to know that I'll at least be able to contribute in this area... I'm a guru with NT shell scripting (fat lot of good that will do here!) and pretty good with Python (and VBscript as mentioned.)
Scripting will be an extreamly useful skill once the framework is in place. It will be the main method for personalising the sytem.

Quote:
I completely agree with you on a skinnable interface. That way everyone can achieve the look & feel that best fits their home theater. I'm really hoping Blight will get involved with this at some point... it seems to me he's done a fabulous job with filters & graphs in Zoom Player, and it's skinnable.
My vision for skin goes pretty deep, it's probably more akin to replaceable UI.

Quote:
I'm not sure ZP is the best place to integrate all this (though maybe it is) but it's certainly a good model for what we're shooting for, I think.
ZP is about half way there, for me what's missing is, WAF, scripting integration, open source.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #23 of 230 Old 03-25-2003, 01:02 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Quote:
Originally posted by salsbst
Will I really be able to get the SPDIF data (for example) from my Delta 410's SPDIF input into a DirectShow graph?
It's certainly possible, But hopefully there will be ageneric way we can do it. Probably we need an ASIO to DS shim.[/b]
Quote:
Which music player will allow me to insert a hypothetical CS II filter in the middle of its processing? Do I have to give up Media Center to get this?
Media player allows for plug-ins on both the video and audio path, media center will probably use this method or we will have to use DShow merit to always insert filters in the graph

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #24 of 230 Old 03-25-2003, 01:03 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Quote:
Originally posted by ElvisIncognito
Anybody have any thoughts on this? Is this feasible/practical/logical?
Yes, Adding a DShow wrapper is pretty easy, even easier to use DMO to start with.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #25 of 230 Old 03-25-2003, 01:10 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Quote:
Originally posted by slehman
So I don't think there will be much code to leverage, but I have been interested in porting to Windows and have started poking around.
Scott

Rather than look at DirectShow as a whole I suggest you start off with DMO. It's much cleaner as as you don't have to worry so much about sample lifetimes and connection logic. See

http://msdn.microsoft.com/library/de...diaobjects.asp

For more info. Also if we do go open source, as I hope we will, the framework used in the MS samples for DirectShow filters isn't compatible with the GPL. Sadly most open source DirectShow filters aren't aware of this recent restriction as most continue to use it.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #26 of 230 Old 03-25-2003, 03:37 AM
Senior Member
 
AndrewPC's Avatar
 
Join Date: Dec 2001
Location: Sydney, Australia
Posts: 230
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
This is an extremely interesting topic....and it would be great to see it get off the ground.

Tell me, how would you handle, multiple s-video/component/composite inputs. The cost would begin to be quite expensive, not to mention hell from compatiblity issues with multiple input cards installed....

Also, at the moment, a lack of hardware exists to allow HD inputs into a pc

This could be similar with audio too, although one card can normally handle more audio inputs. I know this would, if the quality is up there be cheaper than most hi-end receivers, but will people diffferentiate it from an expensive computer?

I can see where you are going, with a HD pci card, and internal DVD etc, but there would be a lot of ppl that would still wish to use a lot of their "Legacy" equipment, and the standard receiver normally has many analogue video and sound along with digital sound inputs.

Still....I think it is a great idea, with plenty of potential for a very powerful, hi quality system, but it would certainly benefit from some custom made input boards.

Andrew
AndrewPC is offline  
post #27 of 230 Old 03-25-2003, 03:59 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
Quote:
Originally posted by AndrewPC
Tell me, how would you handle, multiple s-video/component/composite inputs. The cost would begin to be quite expensive, not to mention hell from compatiblity issues with multiple input cards installed....
Just by having multiple cards or by using the holo3d with daughterboard.

Quote:
Also, at the moment, a lack of hardware exists to allow HD inputs into a pc
True, but the key point there is at the moment, we should be ready if it comes.

Quote:
but will people diffferentiate it from an expensive computer?
I see the medium term future as now with some people building from parts, other buying ready made from suppliers. I don't think anybody here is talking about creating a fixed hardware box.

Quote:
I can see where you are going, with a HD pci card, and internal DVD etc, but there would be a lot of ppl that would still wish to use a lot of their "Legacy" equipment, and the standard receiver normally has many analogue video and sound along with digital sound inputs.
I'll have a different setup from people in the US because I have a DVB-T card, others in the UK will want to integrate with a satellite box others with cable, I'm going to probably continue to use a receiver but others will want to use the PC as a pre/pro. I see a world in which almost everybody has a different hardware config so therefore I see the need to create a tool for people to plug together the various bits into a whole rather than have more bits however cleverly controlled.

In this model external "legacy" devices or software can be wrapped into the new system, IR controled devices won't be able to supply feedback but serial connected ones might.

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
post #28 of 230 Old 03-25-2003, 04:18 AM
Member
 
Emmanuel Piat's Avatar
 
Join Date: Dec 2000
Location: Besançon, FRANCE
Posts: 131
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
thanks for this post ElvisIncognito :).

My own opinion is that the best way to achieve "easily" your specifications is to use the actual DD and DTS decoding filters (ac3dec, windvd, ...) and to add a post processing filter just after.

Some previous basic works in this direction has been already done just to show that "it is possible" :

http://www.avsforum.com/avs-vb/showt...hreadid=218836

bye.
Emmanuel
Emmanuel Piat is offline  
post #29 of 230 Old 03-25-2003, 04:19 AM
Senior Member
 
da5id's Avatar
 
Join Date: Dec 2001
Location: Toronto, Canada
Posts: 386
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 10
John, I have the same view as you regarding "deep" skinning. I've been away for a while (family reasons) but I am the developer of Glissando, a music jukebox-type front end written in Flash MX. While developing Glissando I got several requests for the presence or absence of certain UI features. The original design didn't accommodate that type of customization. I recently started up development of Glissando again with an eye to an extremely flexible skinning system.

Here's an excerpt from a message I sent to two people here on AVS:
Quote:
I've been working on a new version of Glissando. It's not quite a rewrite, but close to it. This version has ridiculously extensive skinning capabilities where the entire interface is defined by an XML file. And I mean everything: you have complete control over position of components, their appearance, size, behaviour, and even whether they appear or not. You can create buttons with your own custom states (up, over, down) which can be vector drawings (defined right in the XML file), other Flash files, images, etc. You can have miscellaneous graphics, images, text, animations anywhere on the interface. Text can be any font, style and size you like. And you can do all of this without requiring the Flash authoring application; you just make changes to the XML skin file.
I'm currently putting the finishing touches on an XML-defined scrolling list to represent (in Glissando's case) the current playlist. None of what I've done is specific to a music jukebox application; I've purposely made things generic so I can take this framework into my next project: a unified, simple interface to every HTPC application out there.

I agree with those suggesting .NET and C# for certain aspects of this project. But I do see it as a "server-side" technology. Control of an HTPC should (IMHO) be available from anywhere. Flash MX has very good XML handling capabilities. Glissando controls Media Jukebox remotely via a set of XML request/responses. I just bought a book entitled Flash.NET which will allow me to glue my app to a .NET back end.

For examples of Flash as more than just annoying web page ad banners, take look at Glissando, any of Mario's *Lobby apps, or the 4AM Music Console, all done with Flash.
da5id is offline  
post #30 of 230 Old 03-25-2003, 05:11 AM
AVS Special Member
 
JohnAd's Avatar
 
Join Date: Jun 2000
Location: London
Posts: 1,725
Mentioned: 0 Post(s)
Tagged: 0 Thread(s)
Quoted: 0 Post(s)
Liked: 16
da5id

I'd not considered flash as an option, but you're right it would probably be suitable for a full screen and maybe WinCE versions of a UI. Personally I'm looking towards a burn-in avoiding alpha blended GUI that will certainly be of interest to CRT projector and plasma owners but probably not to everyone else. The flash interfaces that you mention do indeed have the "bling" element that left to my own devices I'd not do, especially as I'll be avoiding strong colours to avoid burn-in.

This basic difference of approach will make it critical that we can split out the UI at low level in a manner that we can all work with. I'm tempted to stick with COM as the communication layer because it has all the properties that I think we need and is cross-language if not cross platform. XML will be easy for some and very hard for others, also I'm not clear how events will fit into this structure.

Also remember when considering the UI that the devices will range from LCD screens upwards so to me at least there are the following fundamental concepts that we have to model:

1) Present the user with a list and scroll through items and then select one
2) Allow adjustment of settings
3) Display feedback on users input
4) Display current status, track time etc

I see the UI being controled with arrow keys, enter, back and top (keyboard or remote), a mouse (left click, right click, other button), a finger (WinCE with maybe two of the bottoms doing back and top).

how that data is presented to the user and what constitutes a list item can probably be made very complex and rich but it should not be a requirement to use all that richness. I'd see as list item as having the following properties

1) Name
2) Description
3) Picture
4) Web link for more info
5) URL of item decribed e.g tv://bbc1, http://www.avsforum.com/, file:////c://video//test.mpg etc
6) Collection of related items
7) start time
8) end time (or length)

John

My Company -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.

Free Projects -
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
&
To view links or images in signatures your post count must be 0 or greater. You currently have 0 posts.
JohnAd is offline  
Closed Thread Home Theater Computers

User Tag List

Thread Tools
Show Printable Version Show Printable Version
Email this Page Email this Page


Forum Jump: 

Posting Rules  
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off