AVS Forum banner
Status
Not open for further replies.
1 - 6 of 6 Posts

·
Registered
Joined
·
2,171 Posts
Discussion Starter · #1 ·
For those that aren't aware of it there are two extremely interesting projects going on over in the (Wintel) HTPC forum. Both are linked in my sig.


While the software project is thus far based on DirectX architecture (and may therefore exclude Linux-based HTPCs), the progress on that project is not very far along. A functional design spec is in the works, but the core functionality for this project is all the audio processing functionality that a high-end preamp/processor has that the HTPC lacks (or if it has it, it's sound-card specific where it should be hardware independent) such as AC3/DTS decoding, bass management, room/speaker correction/equalization, etc.


The hardware project (which is modular by design) seeks to provide (among many other things) a DAC/ADC module and a video capture module.


While responding to posts about driver concerns for the hardware project this morning, it occured to me that there are a good many driver programmers in the Linux world... And since the hardware project is meant to be a public domain/open source type of project (thus the programmers on the software project can have a great deal of say in design/interface issues)... And since, quite frankly, I'd much rather my HTPC was Linux-based anyway...


This seems like the perfect opportunity for Linux to leap-frog Windows as the HTPC platform of choice. Let M$ pursue this market with their lame-ass "Media Center Edition" - Linux could easily become "the REAL HTPC".


To save you the time/trouble of reading these two lengthy threads, here's a link to the (current, version 1.0) functional design spec for the hardware project and here's a link to the block diagram that illustrates the various modules that are planned. I'll copy the core design criteria for the software project into a following post.


I hope you'll join me in generating some enthusiasm for these two projects. We have some good talent on the hardware side and I truly believe it's going to happen. My involvement in both projects thus far has been that of spearhead, cheerleader, organizer and recruiter. If you have any suggestions as to Linux programmers that I can/should contact, please LMK...
 

·
Registered
Joined
·
2,171 Posts
Discussion Starter · #2 ·
The issue that the software project seeks to address is 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.


On the Windows side, depending on your choice of software DVD player and/or sound card, the HTPC still lacks much of this functionality. Some DVD player software will decode some or 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 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...


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
 

·
Registered
Joined
·
2,171 Posts
Discussion Starter · #3 ·
A few notes regarding the post above...

Items 3 and 4 (Decode AC3/DTS audio from an external source) will likely be a moot point if the hardware project succeeds in its goal of assuming core sound card functionality. If the PCI interface card inserts the digital audio bitstream (regardless of whether it started out as an anlog signal or digital) onto the PCI bus in a format that the software can handle/is expecting, then effectively, all sources become internal.

Item 8 (Select from different inputs) should be as simple as providing control signals to the PCI interface card which it will then relay to the appropriate module(s). An API will be required for control of the hardware, but again, Linux programmers could have a great deal of input regarding the API.

Item 11 (processing should be applied in the digital realm, then ... output using a non-mangling method) was aimed squarely at WDM and Windows kmixer - probably a non-issue for Linux.

Items 13 and 15 (synthetic 5/6/7.1 surround from 2-channel sources and "Hall"/"Theater"/"Stadium" effects, etc.) may be able to be handled via a (hardware) DSP module, but (while it would be easily upgradeable) a software solution would be a better choice, IMHO.

Item 14 (Pass multi-channel analog audio ... straight through to amplifiers) has been discussed at length in the hardware project - if it's going to happen at all, that's probably where/how it will happen.

Items 16 and 17 (Input gain adjustments for level-matching and user adjustable clipping thresholds) may be hardware functions as well (or maybe driver functions) but I think a software solution would be far more flexible/useful.
 

·
Registered
Joined
·
1,005 Posts
If there is interest in implementing it under Linux - people should be looking at and talking to the developers working on the Advanced Linux Sound Architecture (ALSA) who are at http://www.alsa-project.org/ . ALSA has been under development for something like 5 years now and is in the 2.5.x series of beta kernels, so will be a standard supported interface when 2.6 / 3.0 is released.


The ALSA people have done a lot of work to assure reliable, deterministic, low-latency performance along with providing an extremely flexible and functional interface. So far, most of the work on top of ALSA seems to be oriented towards the professional music and audio community, which have requirements that really aren't that different from many of the things you are looking for.


At the very least, you will find some familiar names on the list of sound cards supported by ALSA.


On the video side, I don't know if there is as comprehensive an infrastructure as ALSA, I haven't encountered such a beast, but I haven't looked for one either.
 

·
Registered
Joined
·
2,171 Posts
Discussion Starter · #5 ·
Thanks, Jerry. I noticed ALSA in another post and was planning to contact them. Looks very promising, I think.
 

·
Registered
Joined
·
374 Posts
For the audio side of things, the right way to handle this under linux is probably using Jack. I'm doing a mini version of this right now, using Jack/BruteFIR to run my DSP xover/room correction stuff, and much of what you talk about is merely a refinement of this with a decent set of UI wrappers.


DTS decoding is currently a no-go under Linux. However, most of the Windows video codecs have been hacked/ported to run under the various Linux media players, so I wouldn't necessarily think it's impossible to do the same with a DTS codec. Ditto the other proprietary systems, as long as they are in standalone filters. Would take some hacking, and might be legally questionable in some cases, though.


The decoding of external sources is a slight problem with Jack at the moment. It's theoretically possible, but currently the Jack internals convert all audio data to floating point, so access to the raw bitstream is not possible. "Should be" a relatively manageable extension, though.


The only 'problem' with Jack is that it is targeted at being a pro-studio interconnect mechanism with realtime performance /low latency as the fundamental driving goals. Serving as a general-purpose audio connection system is secondary, and so suggestions of changes to accomodate multimedia systems are not always met with enthusiasm


So, I'd say that 50-60% of your list is directly feasible right now, and aside from the propriety codec questions, the rest are pretty straightforward extensions.


Links
http://jackit.sourceforge.net Jack audio connection kit
http://www.ludd.luth.se/~torger/brutefir.html BruteFIR - general purpose FIR convolution engine, which can do all the filtering/mixing/delay you could ask for and more.
 
1 - 6 of 6 Posts
Status
Not open for further replies.
Top