Changes between Initial Version and Version 1 of Windows98_Support


Ignore:
Timestamp:
Feb 23, 2007 4:37:09 PM (17 years ago)
Author:
bennylp
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Windows98_Support

    v1 v1  
     1= Windows 95/98 Support in PJLIB/PJSIP/PJMEDIA = 
     2 
     3PJLIB supports both the older Windows 95/98/ME family of Microsoft OSes (win95/win98/winme) and the more advanced Windows NT family of OS'es (WinNT/2000/XP/2003/Vista). However, support for Win95/98 is not turned ON by default so it needs a bit of tweaking in both configuration and project settings. 
     4 
     5This short article describes how to enable Win95/98 support in the software. The instructions here have been tested on Windows 98, however it should work on Windows 95 and Windows ME as well. 
     6 
     7Thanks '''Sebastian E. Ovide''' for reporting and testing this. 
     8 
     9 
     10== Undefine WinNT in config_site.h == 
     11 
     12The following configuration is needed in your {{{pj/config_site.h}}} file to activate Win95/98 support: 
     13 
     14{{{ 
     15#undef PJ_WIN32_WINNT 
     16#define PJ_WIN32_WINNT  0x0300 
     17#undef _WIN32_WINNT 
     18}}} 
     19 
     20These would disable the use of NT features in PJLIB's {{{os_core_win32.c}}} file. 
     21 
     22 
     23== Disable Win32 Native File I/O in pjlib == 
     24 
     25Still in pjlib. Since version 0.5.10, pjlib uses Win32 native {{{CreateFile()/ReadFile()/WriteFile()}}} API for dealing with file I/O, since the ANSI {{{fopen()}}} has a limitation that it can only open a maximum of {{{FOPEN_MAX}}} simultaneous file, and the limit on Windows is about 64. But unfortunately, it looks like {{{CreateFile()}}} doesn't work as expected on Win98, although it doesn't look like it uses any NT specific features. 
     26 
     27So we need to disable Win32 native file I/O and replace it with ANSI stream. To do this: 
     28 
     29 1. Open pjlib project 
     30 1. Exclude {{{file_io_win32.c}}} from pjlib build. 
     31 1. Include (do not exclude) {{{file_io_ansi.c}}} in pjlib build. 
     32 
     33 
     34 
     35== Disable IoCompletionPort in pjlib == 
     36 
     37On '''Debug''' build, the Visual Studio workspace will use socket '''select()''' as the back-end implementation for PJLIB's '''ioqueue'''. This is fine. 
     38 
     39However, on '''Release''' build, the Visual Studio workspace will use WinNT '''IOCompletionPort''' (IOCP) as the '''ioqueue''' backend, and IOCP is not available on Win95/98/ME. 
     40 
     41As a workaround for this, open the '''pjlib''' project settings, and exclude {{{ioqueue_winnt.c}}} from the Release build, and include {{{ioqueue_select.c}}} in the Release build. 
     42 
     43 
     44== Disable DirectSound in pjmedia == 
     45 
     46By default, PJMEDIA uses PortAudio on Windows with DirectSound set as the prefered sound backend. This may not work properly on Win95/98, and it may be better to disable DirectSound support and just use '''waveIn/waveOut''' device. 
     47 
     48To disable DirectSound in PortAudio in PJMEDIA: 
     49 1. Open pjmedia project settings 
     50 1. Add {{{PA_NO_DS}}} macro in the project's '''Preprocessor''' settings. 
     51 
     52