;========================================================================== ; MODULE: SeqTest.txt ; AUTHOR: JohnMil ; DATE: 9-10-92 ; ; This is the data file for duplicating the Win 3.1 MCI Test coverage for ; the entire MCISeq test. This data file was gleaned by running the 3.1 test, ; then stripping out all the commands in the order they occurred, then filling ; in expected return values. ; ; There are still some problems with this script. In particular, the path to ; sequencer files and the position reported for a file which is playing will ; probably both vary. Errors should be hand-checked. ; ; Rules for construction of this data file can be found in MCI\MCIGen\TestLoop. ; ;========================================================================== ; ; ; ;============================ TestCase TC_SEQ_AUDIO_VID_TST ;============================ ; close all * open %element% 0 1 set %element% audio left on MCIERR_UNSUPPORTED_FUNCTION set %element% video all on MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% video all off MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% audio left off MCIERR_UNSUPPORTED_FUNCTION set %element% video all on MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% video all off MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% audio right on MCIERR_UNSUPPORTED_FUNCTION set %element% video all on MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% video all off MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% audio right off MCIERR_UNSUPPORTED_FUNCTION set %element% video all on MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% video all off MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% audio all on MCIERR_UNSUPPORTED_FUNCTION set %element% video all on MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% video all off MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% audio all off MCIERR_UNSUPPORTED_FUNCTION set %element% video all on MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 set %element% video all off MCIERR_UNRECOGNIZED_KEYWORD seek %element% to start 0 play %element% 0 seek %element% to start 0 record %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 seek %element% to start 0 play %element% 0 close all 0 ; ;=========================== TestCase TC_CAPS_DEV_SEQ ;=========================== ; close all * capability %driver% compound device 0 true capability %driver% device type 0 %driver% capability %driver% can record 0 false capability %driver% can play 0 true capability %driver% can save 0 false capability %driver% can eject 0 false capability %driver% has audio 0 true capability %driver% has video 0 false capability %driver% uses files 0 true close all * open %driver% alias %alias% 0 1 capability %alias% compound device 0 true capability %alias% device type 0 %driver% capability %alias% can record 0 false capability %alias% can play 0 true capability %alias% can save 0 false capability %alias% can eject 0 false capability %alias% has audio 0 true capability %alias% has video 0 false capability %alias% uses files 0 true play %alias% MCIERR_UNSUPPORTED_FUNCTION capability %alias% compound device 0 true capability %alias% device type 0 %driver% capability %alias% can record 0 false capability %alias% can play 0 true capability %alias% can save 0 false capability %alias% can eject 0 false capability %alias% has audio 0 true capability %alias% has video 0 false capability %alias% uses files 0 true close all 0 ; ;=========================== TestCase TC_CAPS_ELEM_SEQ ;=========================== ; close all * capability %element% compound device 0 true capability %element% device type 0 %driver% capability %element% can record 0 false capability %element% can play 0 true capability %element% can save 0 false capability %element% can eject 0 false capability %element% has audio 0 true capability %element% has video 0 false capability %element% uses files 0 true close all * open %element% alias %alias% 0 * capability %alias% compound device 0 true capability %alias% device type 0 %driver% capability %alias% can record 0 false capability %alias% can play 0 true capability %alias% can save 0 false capability %alias% can eject 0 false capability %alias% has audio 0 true capability %alias% has video 0 false capability %alias% uses files 0 true play %alias% 0 capability %alias% compound device 0 true capability %alias% device type 0 %driver% capability %alias% can record 0 false capability %alias% can play 0 true capability %alias% can save 0 false capability %alias% can eject 0 false capability %alias% has audio 0 true capability %alias% has video 0 false capability %alias% uses files 0 true close all 0 ; ;=========================== TestCase TC_INFO_SEQ_TSTS ;=========================== ; close all * info %driver% file MCIERR_UNSUPPORTED_FUNCTION open %element% alias %alias% 0 1 info %driver% file MCIERR_UNSUPPORTED_FUNCTION play %alias% 0 info %driver% file MCIERR_UNSUPPORTED_FUNCTION stop %alias% 0 record %alias% MCIERR_UNSUPPORTED_FUNCTION info %driver% file MCIERR_UNSUPPORTED_FUNCTION close all * close all * ; ;=========================== TestCase TC_SEQ_PAUSE_RESUME ;=========================== ; close all * resume %element% MCIERR_UNSUPPORTED_FUNCTION pause %element% 0 open %element% 0 1 pause %element% 0 play %element% 0 pause %element% 0 resume %element% MCIERR_UNSUPPORTED_FUNCTION stop %element% 0 play %element% 0 seek %element% to start 0 pause %element% 0 seek %element% to 307 0 pause %element% 0 status %element% port 0 mapper resume %element% MCIERR_UNSUPPORTED_FUNCTION pause %element% 0 status %element% port 0 mapper pause %element% 0 resume %element% MCIERR_UNSUPPORTED_FUNCTION close %element% 0 ; ;============================ TestCase TC_FT_SEQ_TIME_PLAYS ;============================ ; close all * open %element% 0 * status %element% time format 0 song pointer play %element% to 486 0 set %element% time format smpte 24 0 status %element% position 0 00:00:* status %element% position 0 00:00:* play %element% from 2 to 76 MCIERR_OUTOFRANGE status %element% position 0 00:00:* status %element% position 0 00:00:* play %element% from 441 MCIERR_OUTOFRANGE set %element% time format smpte 25 0 status %element% position 0 00:00:* status %element% position 0 00:00:* play %element% from 15 to 491 MCIERR_OUTOFRANGE status %element% position 0 00:00:* status %element% position 0 00:00:* play %element% from 118 MCIERR_OUTOFRANGE set %element% time format smpte 30 0 status %element% position 0 00:00:* status %element% position 0 00:00:* play %element% from 355 to 264 MCIERR_OUTOFRANGE status %element% position 0 00:00:* status %element% position 0 00:00:* play %element% from 382 MCIERR_OUTOFRANGE set %element% time format smpte 30 drop 0 status %element% position 0 00:00:* status %element% position 0 00:00:* play %element% from 348 to 57 MCIERR_OUTOFRANGE status %element% position 0 00:00:* status %element% position 0 00:00:* play %element% from 343 MCIERR_OUTOFRANGE set %element% time format song pointer 0 status %element% position 0 * status %element% position 0 * play %element% from 132 to 257 0 status %element% position 0 * status %element% position 0 * play %element% from 24 0 close all 0 ; ;======================== TestCase TC_SEQ_AUTO_PLAY ;======================== ; close all * play %element% 0 stop %element% 0 sysinfo all quantity open 0 * sysinfo %element% quantity open MCIERR_DEVICE_TYPE_REQUIRED status %element% length 0 1376 play %element% from 369 0 seek %element% to 318 0 sysinfo all quantity open 0 * play %element% 0 close %element% * play %element% from 257 to 350 0 open %element% alias %alias% 0 * play %alias% * stop %alias% 0 seek %alias% to start 0 play %alias% * pause %alias% 0 resume %alias% MCIERR_UNSUPPORTED_FUNCTION pause %alias% 0 close all * ; ;========================== TestCase TC_SEQ_PLAY_STATES ;========================== ; close all * open %element% alias %alias% 0 * play %alias% 0 status %alias% mode 0 playing play %alias% 0 seek %alias% to start 0 play %alias% 0 record %alias% MCIERR_UNSUPPORTED_FUNCTION play %alias% 0 close %alias% 0 play %element% 0 close %alias% MCIERR_INVALID_DEVICE_NAME open %element% MCIERR_DEVICE_OPEN seek %element% to end 0 play %element% 0 status %element% length 0 1376 play %element% from 1104 0 pause %element% 0 play %element% 0 stop %element% 0 close all 0 ; ;=========================== TestCase TC_RAND_SEQ_CMD_TST ;=========================== ; close all * sysinfo all quantity open 0 * pause %element% 0 status %element% port 0 mapper status %element% port 0 mapper status %element% port 0 mapper status %element% position 0 0 sysinfo %element% quantity open MCIERR_DEVICE_TYPE_REQUIRED status %element% position 0 0 set %element% time format song pointer 0 sysinfo %element% quantity open MCIERR_DEVICE_TYPE_REQUIRED stop %element% 0 seek %element% to start 0 status %element% port 0 mapper seek %element% to start 0 status %element% port 0 mapper status %element% position 0 0 status %element% position 0 0 stop %element% 0 stop %element% 0 stop %element% 0 sysinfo %element% quantity open MCIERR_DEVICE_TYPE_REQUIRED status %element% port 0 mapper status %element% offset 0 96:00:00:00 status %element% position 0 0 set %element% time format song pointer 0 sysinfo all quantity open 0 * status %element% position 0 0 set %element% time format song pointer 0 status %element% position 0 0 status %element% position 0 0 set %element% time format song pointer 0 pause %element% 0 pause %element% 0 pause %element% 0 sysinfo %element% quantity open MCIERR_DEVICE_TYPE_REQUIRED status %element% position 0 0 sysinfo %element% quantity open MCIERR_DEVICE_TYPE_REQUIRED sysinfo %element% quantity open MCIERR_DEVICE_TYPE_REQUIRED set %element% time format song pointer 0 seek %element% to start 0 sysinfo all quantity open 0 * close all * ; ;============================ TestCase TC_RAND_SEQ_POS_TST ;============================ ; close all * open %element% alias %alias% 0 1 set %element% time format smpte 24 0 status %alias% length 0 1376 play %alias% from 120 0 seek %alias% to 130 0 play %alias% from 96 to 10 MCIERR_OUTOFRANGE set %element% time format smpte 25 0 status %alias% length 0 1376 play %alias% from 321 0 seek %alias% to 194 0 play %alias% from 130 to 75 MCIERR_OUTOFRANGE set %element% time format smpte 30 0 status %alias% length 0 1376 play %alias% from 435 0 seek %alias% to 307 0 play %alias% from 415 to 123 MCIERR_OUTOFRANGE set %element% time format smpte 30 drop 0 status %alias% length 0 1376 play %alias% from 266 0 seek %alias% to 426 0 play %alias% from 144 to 300 0 set %element% time format song pointer 0 status %alias% length 0 1376 play %alias% from 102 0 seek %alias% to 140 0 play %alias% from 291 to 54 MCIERR_OUTOFRANGE close %alias% 0 ; ;============================ TestCase TC_SEQ_REC_STATES ;============================ ; close all * open new type %driver% alias %alias% * status %alias% length MCIERR_INVALID_DEVICE_NAME record %alias% MCIERR_INVALID_DEVICE_NAME status %alias% mode MCIERR_INVALID_DEVICE_NAME pause %alias% MCIERR_INVALID_DEVICE_NAME record %alias% from 317 MCIERR_INVALID_DEVICE_NAME status %alias% length MCIERR_INVALID_DEVICE_NAME stop %alias% MCIERR_INVALID_DEVICE_NAME status %alias% position MCIERR_INVALID_DEVICE_NAME status %alias% length MCIERR_INVALID_DEVICE_NAME record %alias% overwrite from 7 to 5 MCIERR_INVALID_DEVICE_NAME seek %alias% to start MCIERR_INVALID_DEVICE_NAME play %alias% MCIERR_INVALID_DEVICE_NAME seek %alias% to start MCIERR_INVALID_DEVICE_NAME record %alias% insert MCIERR_INVALID_DEVICE_NAME record %alias% insert MCIERR_INVALID_DEVICE_NAME delete %alias% MCIERR_UNRECOGNIZED_COMMAND status %alias% mode MCIERR_INVALID_DEVICE_NAME seek %alias% to start MCIERR_INVALID_DEVICE_NAME play %alias% MCIERR_INVALID_DEVICE_NAME record %alias% overwrite MCIERR_INVALID_DEVICE_NAME pause %alias% MCIERR_INVALID_DEVICE_NAME resume %alias% MCIERR_INVALID_DEVICE_NAME status %alias% mode MCIERR_INVALID_DEVICE_NAME delete %alias% from 0 MCIERR_UNRECOGNIZED_COMMAND status %alias% length MCIERR_INVALID_DEVICE_NAME save %alias% tstmid1.mid MCIERR_INVALID_DEVICE_NAME close all * ; ;=============================== TestCase TC_SEQ_SET_PARAM ;=============================== ; close all * set %element% port mapper 0 set %element% port 0 0 set %element% port 1 * !Assumes that only one SB card is installed set %element% port 2 MCIERR_SEQ_PORT_NONEXISTENT set %element% port none 0 set %element% port mapper 0 set %element% tempo 100 0 set %element% tempo 1 0 set %element% tempo 1000 0 set %element% tempo 150 0 set %element% offset 00:01:01:01 0 set %element% offset 0 0 set %element% offset 00:00:35:00 0 set %element% offset 50:00 MCIERR_OUTOFRANGE set %element% master MCIERR_NO_INTEGER play %element% 0 set %element% master MCIERR_NO_INTEGER play %element% 0 set %element% master MCIERR_NO_INTEGER play %element% 0 set %element% slave MCIERR_NO_INTEGER play %element% 0 set %element% slave MCIERR_NO_INTEGER play %element% 0 set %element% slave MCIERR_NO_INTEGER play %element% 0 set %element% slave MCIERR_NO_INTEGER play %element% 0 stop %element% 0 ;open new type %driver% alias %alias% ;MCIERR_UNSUPPORTED_FUNCTION ; ; Since 'new' isn't supported, we just open an existing file. open %element% alias %alias% 0 * set %alias% port mapper 0 set %alias% port 0 0 set %alias% port 1 * set %alias% port 2 MCIERR_SEQ_PORT_NONEXISTENT set %alias% port none 0 set %alias% port mapper 0 set %alias% tempo 100 0 set %alias% tempo 1 0 set %alias% tempo 1000 0 set %alias% tempo 150 0 set %alias% offset 100 MCIERR_OUTOFRANGE set %alias% offset 1 0 set %alias% offset 1000 MCIERR_OUTOFRANGE set %alias% offset 150 MCIERR_OUTOFRANGE set %alias% master MCIERR_NO_INTEGER play %alias% 0 set %alias% master MCIERR_NO_INTEGER play %alias% 0 set %alias% master MCIERR_NO_INTEGER play %alias% 0 set %alias% slave MCIERR_NO_INTEGER play %alias% 0 set %alias% slave MCIERR_NO_INTEGER play %alias% 0 set %alias% slave MCIERR_NO_INTEGER play %alias% 0 set %alias% slave MCIERR_NO_INTEGER play %alias% 0 close all 0 open %element% 0 1 play %element% 0 set %element% port mapper 0 set %element% port 0 0 set %element% port 1 * set %element% port 2 MCIERR_SEQ_PORT_NONEXISTENT set %element% port none 0 set %element% port mapper 0 set %element% tempo 100 0 set %element% tempo 1 0 set %element% tempo 1000 0 set %element% tempo 150 0 set %element% offset 100 MCIERR_OUTOFRANGE set %element% offset 1 0 set %element% offset 1000 MCIERR_OUTOFRANGE set %element% offset 150 MCIERR_OUTOFRANGE set %element% master MCIERR_NO_INTEGER play %element% 0 set %element% master MCIERR_NO_INTEGER play %element% 0 set %element% master MCIERR_NO_INTEGER play %element% 0 set %element% slave MCIERR_NO_INTEGER play %element% 0 set %element% slave MCIERR_NO_INTEGER play %element% 0 set %element% slave MCIERR_NO_INTEGER play %element% 0 set %element% slave MCIERR_NO_INTEGER play %element% 0 close all 0 open %driver% 0 1 set %driver% port mapper MCIERR_UNSUPPORTED_FUNCTION set %driver% port 0 MCIERR_UNSUPPORTED_FUNCTION set %driver% port 1 MCIERR_UNSUPPORTED_FUNCTION set %driver% port 2 MCIERR_UNSUPPORTED_FUNCTION set %driver% port none MCIERR_UNSUPPORTED_FUNCTION set %driver% port mapper MCIERR_UNSUPPORTED_FUNCTION set %driver% tempo 100 MCIERR_UNSUPPORTED_FUNCTION set %driver% tempo 1 MCIERR_UNSUPPORTED_FUNCTION set %driver% tempo 1000 MCIERR_UNSUPPORTED_FUNCTION set %driver% tempo 150 MCIERR_UNSUPPORTED_FUNCTION set %driver% offset 100 MCIERR_UNSUPPORTED_FUNCTION set %driver% offset 1 MCIERR_UNSUPPORTED_FUNCTION set %driver% offset 1000 MCIERR_UNSUPPORTED_FUNCTION set %driver% offset 150 MCIERR_UNSUPPORTED_FUNCTION set %driver% master MCIERR_NO_INTEGER play %driver% MCIERR_UNSUPPORTED_FUNCTION set %driver% master MCIERR_NO_INTEGER play %driver% MCIERR_UNSUPPORTED_FUNCTION set %driver% master MCIERR_NO_INTEGER play %driver% MCIERR_UNSUPPORTED_FUNCTION set %driver% slave MCIERR_NO_INTEGER play %driver% MCIERR_UNSUPPORTED_FUNCTION set %driver% slave MCIERR_NO_INTEGER play %driver% MCIERR_UNSUPPORTED_FUNCTION set %driver% slave MCIERR_NO_INTEGER play %driver% MCIERR_UNSUPPORTED_FUNCTION set %driver% slave MCIERR_NO_INTEGER play %driver% MCIERR_UNSUPPORTED_FUNCTION close all * close all * ; ;=============================== TestCase TC_SEQ_BAD_SET_PARAM ;=============================== ; close all * set %element% door open MCIERR_UNSUPPORTED_FUNCTION set %element% door closed MCIERR_UNSUPPORTED_FUNCTION open %element% 0 1 play %element% 0 set %element% door open MCIERR_UNSUPPORTED_FUNCTION set %element% door closed MCIERR_UNSUPPORTED_FUNCTION close all 0 open %driver% 0 1 set %driver% door open MCIERR_UNSUPPORTED_FUNCTION set %driver% door closed MCIERR_UNSUPPORTED_FUNCTION close all * ; ;=============================== TestCase TC_SEQ_STATUS_PARAM ;=============================== ; close all * status %element% division type 0 =%ElemDivType% status %element% media present 0 true status %element% port 0 mapper status %element% tempo 0 =%ElemTempo% status %element% offset 0 =%ElemOffset% status %element% slave 0 file status %element% master 0 none ;open new type %driver% alias %alias% ;MCIERR_UNSUPPORTED_FUNCTION ; ; Since 'new' isn't supported, we just open an existing file. open %element% alias %alias% 0 * status %alias% division type 0 %ElemDivType% status %alias% media present 0 true status %alias% port 0 mapper status %alias% tempo 0 %ElemTempo% status %alias% offset 0 %ElemOffset% status %alias% slave 0 file status %alias% master 0 none close all 0 open %element% 0 * play %element% 0 status %element% division type 0 %ElemDivType% status %element% media present 0 true status %element% port 0 mapper status %element% tempo 0 %ElemTempo% status %element% offset 0 %ElemOffset% status %element% slave 0 file status %element% master 0 none close all 0 open %driver% 0 * status %driver% division type MCIERR_UNSUPPORTED_FUNCTION status %driver% media present MCIERR_UNSUPPORTED_FUNCTION status %driver% port MCIERR_UNSUPPORTED_FUNCTION status %driver% tempo MCIERR_UNSUPPORTED_FUNCTION status %driver% offset MCIERR_UNSUPPORTED_FUNCTION status %driver% slave MCIERR_UNSUPPORTED_FUNCTION status %driver% master MCIERR_UNSUPPORTED_FUNCTION close all * ; ;=============================== TestCase TC_SEQ_BAD_STATUS_PARAM ;=============================== ; close all * status %element% position track 0 MCIERR_OUTOFRANGE status %element% position track 2 MCIERR_OUTOFRANGE status %element% position track -1 MCIERR_OUTOFRANGE status %element% length track 0 MCIERR_OUTOFRANGE status %element% length track 2 MCIERR_OUTOFRANGE status %element% length track -1 MCIERR_OUTOFRANGE open %element% 0 * play %element% 0 status %element% position track 0 MCIERR_OUTOFRANGE status %element% position track 2 MCIERR_OUTOFRANGE status %element% position track -1 MCIERR_OUTOFRANGE status %element% length track 0 MCIERR_OUTOFRANGE status %element% length track 2 MCIERR_OUTOFRANGE status %element% length track -1 MCIERR_OUTOFRANGE close all 0 open %driver% 0 * status %driver% position track 0 MCIERR_UNSUPPORTED_FUNCTION status %driver% position track 2 MCIERR_UNSUPPORTED_FUNCTION status %driver% position track -1 MCIERR_UNSUPPORTED_FUNCTION status %driver% length track 0 MCIERR_UNSUPPORTED_FUNCTION status %driver% length track 2 MCIERR_UNSUPPORTED_FUNCTION status %driver% length track -1 MCIERR_UNSUPPORTED_FUNCTION close all * ; ;=========================== TestCase TC_SEQ_STOP_TST ;=========================== ; close all * stop %element% 0 open %element% alias %alias% 0 * stop %alias% 0 status %alias% mode 0 stopped play %alias% 0 stop %alias% 0 status %alias% mode 0 stopped play %alias% 0 pause %alias% 0 stop %alias% 0 status %alias% mode 0 stopped seek %alias% to 236 0 stop %alias% 0 status %alias% mode 0 * stop %alias% 0 status %alias% mode 0 * play %alias% from 0 0 pause %alias% 0 resume %alias% MCIERR_UNSUPPORTED_FUNCTION stop %alias% 0 status %alias% mode 0 stopped close %alias% * *Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.