Changeset 79

Show
Ignore:
Timestamp:
01/06/04 15:41:30 (5 years ago)
Author:
rossbencina
Message:

revised some text, added table of tests

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pa_proposals/trunk/status.html

    r77 r79  
    3131 
    3232<P><A href="http://www.portaudio.com/">PortAudio Home Page</A></P> 
    33 <P>Updated: December 27, 2003 </P> 
     33<P>Updated: January 7, 2004 </P> 
    3434 
    3535<H2>Background</H2> 
     
    3939</P> 
    4040 
    41 <P> Although each proposal is relatively small when taken in isolation, the overall scale of required changes from V18 to V19 is substantial. The new common infrastructure imposes a new interface for implementations. This new interface increases reliability and consistency and reduces development effort, but requires considerable refactoring (some would say redevelopment) of existing PortAudio implementations relative to the V18 code base.  
     41<P> Although each proposal is relatively small when taken in isolation, the overall scale of required changes from V18 to V19 is substantial. The new common infrastructure imposes a new interface for implementations. This new interface increases reliability and consistency and reduces development effort, but calls for considerable refactoring (some would say redevelopment) of existing PortAudio implementations relative to the V18 code base.  
    4242</P>  
    4343<P> 
    44 At the time of writing, a substantial portion of V19 functionality has been implemented for Windows (MME, DirectSound, and ASIO) and for Linux (ALSA, OSS, and JACK), work has commenced on the SGI versions. However no work has commenced on the other platforms which are well supported by V18: the Macintosh (SoundManager, CoreAudio). 
     44At the time of writing, a substantial portion of V19 functionality has been implemented for Windows (MME, DirectSound, and ASIO) for Linux (ALSA, OSS, and JACK), and SGI. However no work has commenced on the Macintosh (SoundManager, CoreAudio) which was well supported by V18. The current ASIO version has not been back-ported to the Macintosh, however it would require little effort to do so. 
    4545</P> 
    4646 <P> 
     
    6767<H3>Common Infrastructure</H3> 
    6868 
     69<p> 
     70The list below indicates issues related to the common infrastructure code which is shared by all implementations. Items marked todo on these list still require work. 
     71</p> 
     72 
    6973<ul> 
    7074<li>Internal interface documentation (need to finish pa_process.h documentation)  
     
    8488 
    8589<li>Underflow/overflow flags underspecified interaction with the callback adapter when buffer adaption is being used. 
     90<span class="done">done</span> 
     91 
     92<li>Support Underflow/overflow flags and paNeverDropInput in pa_process.c 
    8693<span class="not_done">todo</span> 
    8794 
     
    129136<li>Provide version information via Pa_GetVersion() and Pa_GetVersionText() (see <a href="018-VersionInformationInterface.html">proposal 018</a>) <span class="done">done</span> 
    130137 
     138<li>Proposal 004, (among others), is not tested by any of the current pa_tests 
     139<span class="not_done">todo</span> 
     140 
     141 
    131142</ul> 
    132143 
    133 <H3>Host API Implementations</H3> 
     144<H3>Host API Feature Implementation</H3> 
    134145 
    135146<p> 
     
    138149 
    139150<p> 
    140 All features marked <span class="done">green</span> are thought to be implemented correctly, however this does not preclude bugs. Some features marked <span class="not_done">red</span> may be partially implemented or include placeholder hacks which may make them appear to work in some situations. The status of features marked <span class="unknown">yellow</span> is not presently known - developers who wrote or understand the code are requested to clarify and report the status of the entries marked yellow. 
     151All features marked <span class="done">green</span> are thought to be implemented correctly, however this does not preclude bugs. Some features marked <span class="not_done">red</span> may be partially implemented or include placeholder hacks which may make them appear to work in some situations. The status of features marked <span class="unknown">yellow</span> is not presently known - developers who wrote or understand the code are requested to clarify and report the status of the entries marked yellow. Features marked <span class="na">white</span> are not applicable (for example it's not possible to implement the blocking API with Jack). 
    141152</p> 
    142153 
     
    578589</p> 
    579590 
     591<p> 
     592The above status report needs to be taken in the context of the V18 release, the features it implemented (and didn't implement), and the quality and consistency of its implementations. For example many features listed above were not part of the V18 API, some were not consistently implemented accross all platforms, and some of the bug-like items were also present in V18. So the overall conclusion is that V19 is in pretty good shape. Aside from the total lack of support on the Mac at this stage, the V19 API is moderately functional on all other platforms, in many cases to a level that matches or surpasses V18. 
     593</p> 
     594 
     595<H3>Tests</H3> 
     596 
     597<p> 
     598The following table indicates the status of running each test in /pa_tests with each Host API. <span class="not_done">Red</span> means a test fails, <span class="done">green</span> means the test passes and <span class="unknown">yellow</span> means the test result is unknown (perhaps you'd like to run the test and report the result for us). 
     599</p> 
     600 
     601<p> 
     602Note that these tests don't yet cover every feature of the V19 API. All of the tests from the V18 PortAudio release are listed below, which should give some indication of the degree to which V19-devel currently implements the V18 feature set. 
     603</p> 
     604 
     605<table border="1"> 
     606 
     607<tr><td><b>Test</b></td> 
     608<td>Description</td> 
     609<td>wmme</td> 
     610<td>ds</td> 
     611<td>asio</td> 
     612<td>alsa</td> 
     613<td>jack</td> 
     614<td>oss</td> 
     615<td>mac_sm</td> 
     616<td>mac_core</td> 
     617<td>sgi</td> 
     618</tr> 
     619 
     620<tr><td>paqa_devs.c</td><td> Self Testing Quality Assurance app for PortAudio Try to open each device and run through all the possible configurations</td> 
     621<td class="unknown">wmme</td> 
     622<td class="unknown">ds</td> 
     623<td class="unknown">asio</td> 
     624<td class="unknown">alsa</td> 
     625<td class="unknown">jack</td> 
     626<td class="unknown">oss</td> 
     627<td class="unknown">mac_sm</td> 
     628<td class="unknown">mac_core</td> 
     629<td class="done">sgi</td> 
     630</tr> 
     631 
     632<tr><td>paqa_errs.c</td><td> Self Testing Quality Assurance app for PortAudio Do lots of bad things to test error reporting </td> 
     633<td class="unknown">wmme</td> 
     634<td class="unknown">ds</td> 
     635<td class="unknown">asio</td> 
     636<td class="unknown">alsa</td> 
     637<td class="unknown">jack</td> 
     638<td class="unknown">oss</td> 
     639<td class="unknown">mac_sm</td> 
     640<td class="unknown">mac_core</td> 
     641<td class="unknown">sgi</td> 
     642</tr> 
     643 
     644<tr><td>patest1.c</td><td> Ring modulate the audio input with a sine wave for 20 seconds</td> 
     645<td class="unknown">wmme</td> 
     646<td class="unknown">ds</td> 
     647<td class="unknown">asio</td> 
     648<td class="unknown">alsa</td> 
     649<td class="unknown">jack</td> 
     650<td class="unknown">oss</td> 
     651<td class="unknown">mac_sm</td> 
     652<td class="unknown">mac_core</td> 
     653<td class="done">sgi</td> 
     654</tr> 
     655 
     656<tr><td>patest_buffer.c</td><td> Test opening streams with different buffer sizes </td> 
     657<td class="unknown">wmme</td> 
     658<td class="unknown">ds</td> 
     659<td class="unknown">asio</td> 
     660<td class="unknown">alsa</td> 
     661<td class="unknown">jack</td> 
     662<td class="unknown">oss</td> 
     663<td class="unknown">mac_sm</td> 
     664<td class="unknown">mac_core</td> 
     665<td class="done">sgi</td> 
     666</tr> 
     667 
     668<tr><td>patest_callbackstop.c</td><td> Test the paComplete callback result code </td> 
     669<td class="unknown">wmme</td> 
     670<td class="unknown">ds</td> 
     671<td class="unknown">asio</td> 
     672<td class="unknown">alsa</td> 
     673<td class="unknown">jack</td> 
     674<td class="unknown">oss</td> 
     675<td class="unknown">mac_sm</td> 
     676<td class="unknown">mac_core</td> 
     677<td class="done">sgi</td> 
     678</tr> 
     679 
     680<tr><td>patest_clip.c</td><td> Play a sine wave for several seconds at an amplitude that would require clipping </td> 
     681<td class="unknown">wmme</td> 
     682<td class="unknown">ds</td> 
     683<td class="unknown">asio</td> 
     684<td class="unknown">alsa</td> 
     685<td class="unknown">jack</td> 
     686<td class="unknown">oss</td> 
     687<td class="unknown">mac_sm</td> 
     688<td class="unknown">mac_core</td> 
     689<td class="done">sgi</td> 
     690</tr> 
     691 
     692<tr><td>patest_dither.c</td><td> Attempt to hear difference between dithered and non-dithered signal</td> 
     693<td class="unknown">wmme</td> 
     694<td class="unknown">ds</td> 
     695<td class="unknown">asio</td> 
     696<td class="unknown">alsa</td> 
     697<td class="unknown">jack</td> 
     698<td class="unknown">oss</td> 
     699<td class="unknown">mac_sm</td> 
     700<td class="unknown">mac_core</td> 
     701<td class="done">sgi</td> 
     702</tr> 
     703 
     704<tr><td>patest_hang.c</td><td> Play a sine then hang audio callback to test watchdog </td> 
     705<td class="unknown">wmme</td> 
     706<td class="unknown">ds</td> 
     707<td class="unknown">asio</td> 
     708<td class="unknown">alsa</td> 
     709<td class="unknown">jack</td> 
     710<td class="unknown">oss</td> 
     711<td class="unknown">mac_sm</td> 
     712<td class="unknown">mac_core</td> 
     713<td class="done">sgi</td> 
     714</tr> 
     715 
     716<tr><td>patest_latency.c</td><td> Hear the latency caused by big buffers. Play a sine wave and change frequency based on letter input </td> 
     717<td class="unknown">wmme</td> 
     718<td class="unknown">ds</td> 
     719<td class="unknown">asio</td> 
     720<td class="unknown">alsa</td> 
     721<td class="unknown">jack</td> 
     722<td class="unknown">oss</td> 
     723<td class="unknown">mac_sm</td> 
     724<td class="unknown">mac_core</td> 
     725<td class="done">sgi</td> 
     726</tr> 
     727 
     728<tr><td>patest_leftright.c</td><td> Play different tone sine waves that alternate between left and right channel </td> 
     729<td class="unknown">wmme</td> 
     730<td class="unknown">ds</td> 
     731<td class="unknown">asio</td> 
     732<td class="unknown">alsa</td> 
     733<td class="unknown">jack</td> 
     734<td class="unknown">oss</td> 
     735<td class="unknown">mac_sm</td> 
     736<td class="unknown">mac_core</td> 
     737<td class="done">sgi</td> 
     738</tr> 
     739 
     740<tr><td>patest_longsine.c</td><td> Play a sine wave until ENTER hit </td> 
     741<td class="unknown">wmme</td> 
     742<td class="unknown">ds</td> 
     743<td class="unknown">asio</td> 
     744<td class="unknown">alsa</td> 
     745<td class="unknown">jack</td> 
     746<td class="unknown">oss</td> 
     747<td class="unknown">mac_sm</td> 
     748<td class="unknown">mac_core</td> 
     749<td class="done">sgi</td> 
     750</tr> 
     751 
     752<tr><td>patest_many.c</td><td> Start and stop the PortAudio Driver multiple times </td> 
     753<td class="unknown">wmme</td> 
     754<td class="unknown">ds</td> 
     755<td class="unknown">asio</td> 
     756<td class="unknown">alsa</td> 
     757<td class="unknown">jack</td> 
     758<td class="unknown">oss</td> 
     759<td class="unknown">mac_sm</td> 
     760<td class="unknown">mac_core</td> 
     761<td class="done">sgi</td> 
     762</tr> 
     763 
     764<tr><td>patest_maxsines.c</td><td> How many sine waves can we calculate and play in less than 80% CPU Load </td> 
     765<td class="unknown">wmme</td> 
     766<td class="unknown">ds</td> 
     767<td class="unknown">asio</td> 
     768<td class="unknown">alsa</td> 
     769<td class="unknown">jack</td> 
     770<td class="unknown">oss</td> 
     771<td class="unknown">mac_sm</td> 
     772<td class="unknown">mac_core</td> 
     773<td class="done">sgi</td> 
     774</tr> 
     775 
     776<tr><td>patest_multi_sine.c</td><td> Play a different sine wave on each channel </td> 
     777<td class="unknown">wmme</td> 
     778<td class="unknown">ds</td> 
     779<td class="unknown">asio</td> 
     780<td class="unknown">alsa</td> 
     781<td class="unknown">jack</td> 
     782<td class="unknown">oss</td> 
     783<td class="unknown">mac_sm</td> 
     784<td class="unknown">mac_core</td> 
     785<td class="done">sgi</td> 
     786</tr> 
     787 
     788<tr><td>patest_pink.c</td><td> Generate Pink Noise using Gardner method </td> 
     789<td class="unknown">wmme</td> 
     790<td class="unknown">ds</td> 
     791<td class="unknown">asio</td> 
     792<td class="unknown">alsa</td> 
     793<td class="unknown">jack</td> 
     794<td class="unknown">oss</td> 
     795<td class="unknown">mac_sm</td> 
     796<td class="unknown">mac_core</td> 
     797<td class="done">sgi</td> 
     798</tr> 
     799 
     800<tr><td>patest_prime.c</td><td> Test stream priming mode </td> 
     801<td class="unknown">wmme</td> 
     802<td class="unknown">ds</td> 
     803<td class="unknown">asio</td> 
     804<td class="unknown">alsa</td> 
     805<td class="unknown">jack</td> 
     806<td class="unknown">oss</td> 
     807<td class="unknown">mac_sm</td> 
     808<td class="unknown">mac_core</td> 
     809<td class="done">sgi</td> 
     810</tr> 
     811 
     812<tr><td> 
     813patest_read_record.c</td><td> Record input into an array; Save array to a file; Playback recorded data. Implemented using the blocking API (Pa_ReadStream(), Pa_WriteStream() ) </td> 
     814<td class="unknown">wmme</td> 
     815<td class="unknown">ds</td> 
     816<td class="unknown">asio</td> 
     817<td class="unknown">alsa</td> 
     818<td class="unknown">jack</td> 
     819<td class="unknown">oss</td> 
     820<td class="unknown">mac_sm</td> 
     821<td class="unknown">mac_core</td> 
     822<td class="done">sgi</td> 
     823</tr> 
     824 
     825<tr><td>patest_record.c</td><td> Record input into an array; Save array to a file; Playback recorded data </td> 
     826<td class="unknown">wmme</td> 
     827<td class="unknown">ds</td> 
     828<td class="unknown">asio</td> 
     829<td class="unknown">alsa</td> 
     830<td class="unknown">jack</td> 
     831<td class="unknown">oss</td> 
     832<td class="unknown">mac_sm</td> 
     833<td class="unknown">mac_core</td> 
     834<td class="done">sgi</td> 
     835</tr> 
     836 
     837<tr><td>patest_ringmix.c</td><td> Ring modulate inputs to left output, mix inputs to right output </td> 
     838<td class="unknown">wmme</td> 
     839<td class="unknown">ds</td> 
     840<td class="unknown">asio</td> 
     841<td class="unknown">alsa</td> 
     842<td class="unknown">jack</td> 
     843<td class="unknown">oss</td> 
     844<td class="unknown">mac_sm</td> 
     845<td class="unknown">mac_core</td> 
     846<td class="done">sgi</td> 
     847</tr> 
     848 
     849<tr><td>patest_saw.c</td><td> Play a simple (aliasing) sawtooth wave </td> 
     850<td class="unknown">wmme</td> 
     851<td class="unknown">ds</td> 
     852<td class="unknown">asio</td> 
     853<td class="unknown">alsa</td> 
     854<td class="unknown">jack</td> 
     855<td class="unknown">oss</td> 
     856<td class="unknown">mac_sm</td> 
     857<td class="unknown">mac_core</td> 
     858<td class="done">sgi</td> 
     859</tr> 
     860 
     861<tr><td>patest_sine.c</td><td> Play a sine wave for several seconds </td> 
     862<td class="unknown">wmme</td> 
     863<td class="unknown">ds</td> 
     864<td class="unknown">asio</td> 
     865<td class="unknown">alsa</td> 
     866<td class="unknown">jack</td> 
     867<td class="unknown">oss</td> 
     868<td class="unknown">mac_sm</td> 
     869<td class="unknown">mac_core</td> 
     870<td class="done">sgi</td> 
     871</tr> 
     872 
     873<tr><td>patest_sine8.c</td><td> Test 8 bit data: play a sine wave for several seconds</td> 
     874<td class="unknown">wmme</td> 
     875<td class="unknown">ds</td> 
     876<td class="unknown">asio</td> 
     877<td class="unknown">alsa</td> 
     878<td class="unknown">jack</td> 
     879<td class="unknown">oss</td> 
     880<td class="unknown">mac_sm</td> 
     881<td class="unknown">mac_core</td> 
     882<td class="done">sgi</td> 
     883</tr> 
     884 
     885<tr><td>patest_sine_formats.c</td><td> Play a sine wave for several seconds. Test various data formats </td> 
     886<td class="unknown">wmme</td> 
     887<td class="unknown">ds</td> 
     888<td class="unknown">asio</td> 
     889<td class="unknown">alsa</td> 
     890<td class="unknown">jack</td> 
     891<td class="unknown">oss</td> 
     892<td class="unknown">mac_sm</td> 
     893<td class="unknown">mac_core</td> 
     894<td class="done">sgi</td> 
     895</tr> 
     896 
     897<tr><td>patest_sine_time.c</td><td> Play a sine wave for several seconds, pausing in the middle. Uses the Pa_GetStreamTime() call </td> 
     898<td class="unknown">wmme</td> 
     899<td class="unknown">ds</td> 
     900<td class="unknown">asio</td> 
     901<td class="unknown">alsa</td> 
     902<td class="unknown">jack</td> 
     903<td class="unknown">oss</td> 
     904<td class="unknown">mac_sm</td> 
     905<td class="unknown">mac_core</td> 
     906<td class="done">sgi</td> 
     907</tr> 
     908 
     909<tr><td>patest_start_stop.c</td><td> Play a sine wave for several seconds start and stop the stream multiple times</td> 
     910<td class="unknown">wmme</td> 
     911<td class="unknown">ds</td> 
     912<td class="unknown">asio</td> 
     913<td class="unknown">alsa</td> 
     914<td class="unknown">jack</td> 
     915<td class="unknown">oss</td> 
     916<td class="unknown">mac_sm</td> 
     917<td class="unknown">mac_core</td> 
     918<td class="done">sgi</td> 
     919</tr> 
     920 
     921<tr><td>patest_stop.c</td><td> Test different ways of stopping audio </td> 
     922<td class="unknown">wmme</td> 
     923<td class="unknown">ds</td> 
     924<td class="unknown">asio</td> 
     925<td class="unknown">alsa</td> 
     926<td class="unknown">jack</td> 
     927<td class="unknown">oss</td> 
     928<td class="unknown">mac_sm</td> 
     929<td class="unknown">mac_core</td> 
     930<td class="done">sgi</td> 
     931</tr> 
     932 
     933<tr><td>patest_sync.c</td><td> Test time stamping and synchronization of audio and video </td> 
     934<td class="unknown">wmme</td> 
     935<td class="unknown">ds</td> 
     936<td class="unknown">asio</td> 
     937<td class="unknown">alsa</td> 
     938<td class="unknown">jack</td> 
     939<td class="unknown">oss</td> 
     940<td class="unknown">mac_sm</td> 
     941<td class="unknown">mac_core</td> 
     942<td class="done">sgi</td> 
     943</tr> 
     944 
     945<tr><td>patest_toomanysines.c</td><td> Play more sine waves than we can handle in real time as a stress test </td> 
     946<td class="unknown">wmme</td> 
     947<td class="unknown">ds</td> 
     948<td class="unknown">asio</td> 
     949<td class="unknown">alsa</td> 
     950<td class="unknown">jack</td> 
     951<td class="unknown">oss</td> 
     952<td class="unknown">mac_sm</td> 
     953<td class="unknown">mac_core</td> 
     954<td class="done">sgi</td> 
     955</tr> 
     956 
     957<tr><td>patest_underflow.c</td><td> Simulate an output buffer underflow condition. Tests whether the stream can be stopped when underflowing buffers</td> 
     958<td class="unknown">wmme</td> 
     959<td class="unknown">ds</td> 
     960<td class="unknown">asio</td> 
     961<td class="unknown">alsa</td> 
     962<td class="unknown">jack</td> 
     963<td class="unknown">oss</td> 
     964<td class="unknown">mac_sm</td> 
     965<td class="unknown">mac_core</td> 
     966<td class="done">sgi</td> 
     967</tr> 
     968 
     969<tr><td>patest_wire.c</td><td> Pass input directly to output </td> 
     970<td class="unknown">wmme</td> 
     971<td class="unknown">ds</td> 
     972<td class="unknown">asio</td> 
     973<td class="unknown">alsa</td> 
     974<td class="unknown">jack</td> 
     975<td class="unknown">oss</td> 
     976<td class="unknown">mac_sm</td> 
     977<td class="unknown">mac_core</td> 
     978<td class="done">sgi</td> 
     979</tr> 
     980 
     981<tr><td>patest_write_sine.c</td><td> Play a sine wave for several seconds using the blocking API (Pa_WriteStream()) </td> 
     982<td class="unknown">wmme</td> 
     983<td class="unknown">ds</td> 
     984<td class="unknown">asio</td> 
     985<td class="unknown">alsa</td> 
     986<td class="unknown">jack</td> 
     987<td class="unknown">oss</td> 
     988<td class="unknown">mac_sm</td> 
     989<td class="unknown">mac_core</td> 
     990<td class="done">sgi</td> 
     991</tr> 
     992 
     993</table> 
    580994 
    581995 
     
    583997 
    584998<p> 
    585 The above status report needs to be taken in the context of the V18 release, the features it implemented (and didn't implement), and the quality and consistency of its implementations. For example many features listed above were not part of the V18 API, some were not consistently implemented accross all platforms, and some of the bug-like items were also present in V18. It remains to be decided whether every item above must be marked complete before V19 is released. One option we are considering is to release V19 as soon as it can do everything V18 could do. 
     999It remains to be decided whether every item above must be marked complete before V19 is released. However there will need to be more than one platform totally complete before we can consider releasing anything. For the time being, the focus is on completing the uncompleted tasks listed on this page. 
    5861000</p> 
    5871001 
     
    5941008 
    5951009</BODY> 
    596 </HTML>× 
     1010</HTML>l