My build of -current is a few days old. I'm having problems recording with aucat on a particular device.
The system has an integrated "Intel 82891DB AC97" audio chipset and has three physical jacks: one output (headphone/hp) and two inputs (mic/line-in). All the OpenBSD audio toys work perfectly with the integrated device. The system also has a "Logitech QuickCam Pro 9000" USB web cam and in addition to the camera, it also contains a fairly limited audio device, basically a cheap, mono microphone with a fixed frequency (16,000Hz). The dmesg and output of `audioctl -f /dev/audio1` are at the end. uvideo(4) /dev/video0 uaudio(4) /dev/audio1 With OpenBSD 4.4-Stable, I can record with the cheap microphone using either ffmpeg or aucat but aucat on 4.4-stable requires user ('-u') settings for the device to record properly. recording $ ffmpeg -f oss -ar 16000 -i /dev/audio1 out-ffmpeg-4.4.wav $ aucat -u -c 0:0 -r 16000 -f /dev/audio1 -o out-aucat-4.4.wav $ aucat -u -e u8 -c 0:0 -r 16000 -f /dev/audio1 -o test44.raw playing $ mplayer out-ffmpeg-4.4.wav $ mplayer out-aucat-4.4.wav $ aucat -u -e u8 -c 0:0 -r 16000 -i test44.raw Doing the same tests above on OpenBSD 4.5-current shows both ffmpeg and aucat no longer work for recording audio through the webcam mic. I'm sure there is a rate/frequency problem (i.e. playing too fast), but also there seems to be a lot of distortion. Q: Could the ffmpeg record/playback issue be due to the use of 'oss' as the format? And if so, is there a "better" choice for recording formats with ffmpeg given the improvements in OpenBSD audio? Yes, I know the easy answer is to just use the perfectly working microphone in the integrated sound card on the main board (audio0), but getting this funky, cheap microphone on the webcam working properly with the new aucat seems useful... mainly because it worked fine with 4.4-stable, and the quirks of the device makes for a good test of aucat. Without the "-u" switch on aucat(1), it will try to auto configure itself, but on the cheap webcam microphone, aucat is ignoring the number of channels (1) and ignoring the fixed rate (16,000Hz). The most strange part of aucat on this microphone is the "-c" switch channel control somehow effects speed. The default number of channels is two (stereo) according to the man page for aucat, but the device itself only has one channel. Using the -c switch along with rate plays close to normal speed but with lots of distortion. $ aucat -d /dev/audio1 -u -e s16le -c 0:0 -r 16000 -o out-wcam.raw $ aucat -u -e s16le -c 0:0 -r 16000 -i out-wcam.raw But not using the -c switch plays far too fast (with distortion) $ aucat -d /dev/audio1 -u -e s16le -r 16000 -o out-wcam.raw $ aucat -u -e s16le -r 16000 -i out-wcam.raw Q: I don't understand why/how the number of channels affects the rate? If I turn on debugging and let aucat auto-configure itself (without forcing the issue with the '-u' switch), you can see it's actually trying to resample from 16000 to 441000Hz, but the resulting file plays too fast and with lots of distortion. $ aucat -f /dev/audio1 -o out-wcam-plain.raw out-wcam-plain.raw: assuming headerless file safile_new: using 5872(2936) fpb file_new: sndio:hdl dev_init: hw recording s16le,0:0,16000Hz dev_init: using 8808 fpb safile_start: play/rec started file_new: wav:out-wcam-plain.raw cmap_new: out-wcam-plain.raw: s16le,0:0,16000Hz -> s16le,0:1,44100Hz resamp_new: 2936/8092 ^Cdev_done: dev_mix = 0x0, dev_sub = 0x89665500 safile_stop: play/rec stopped aproc_del: rpipe(hdl): terminating... file_del: sndio:hdl <>: delayed sub_hup: sub: eof aproc_del: sub(sub): terminating... aproc_del: resamp(out-wcam-plain.raw): terminating... aproc_del: cmap(out-wcam-plain.raw): terminating... aproc_del: wpipe(out-wcam-plain.raw): terminating... file_del: wav:out-wcam-plain.raw <WOK>: immediate aproc_del: wpipe(out-wcam-plain.raw): freed aproc_del: cmap(out-wcam-plain.raw): freed aproc_del: resamp(out-wcam-plain.raw): freed aproc_del: sub(sub): freed aproc_del: rpipe(hdl): has refs file_del: sndio:hdl <>: immediate aproc_del: rpipe(hdl): terminating... aproc_del: rpipe(hdl): freed I'm not sure what else I can test or try. If there is any further information that might be useful, just let me know. Kind Regards, JCR ********************************************************** $ audioctl -f /dev/audio1 name=USB audio version= config=uaudio encodings=ulinear:8*,mulaw:8*,alaw:8*,slinear:8*,slinear_le:16,ulinear_le:16*,slinear_be:16*,ulinear_be:16* properties=full_duplex,independent full_duplex=0 fullduplex=0 blocksize=2288 hiwat=28 lowat=21 output_muted=0 monitor_gain=0 mode=record play.rate=8000 play.channels=1 play.precision=8 play.encoding=mulaw play.gain=127 play.balance=32 play.port=0x0 play.avail_ports=0x0 play.seek=0 play.samples=0 play.eof=0 play.pause=0 play.error=0 play.waiting=0 play.open=0 play.active=0 play.buffer_size=65536 play.block_size=2288 play.errors=0 record.rate=16000 record.channels=1 record.precision=8 record.encoding=mulaw record.gain=127 record.balance=32 record.port=0x0 record.avail_ports=0x0 record.seek=0 record.samples=0 record.eof=0 record.pause=0 record.error=0 record.waiting=0 record.open=1 record.active=1 record.buffer_size=32768 record.block_size=1144 record.errors=0 ********************************************************** $ dmesg OpenBSD 4.5-beta (GENERIC) #0: Thu Feb 19 19:32:43 PST 2009 j...@vid.foo.bar:/usr/src/sys/arch/i386/compile/GENERIC cpu0: Intel(R) Pentium(R) 4 CPU 2.40GHz ("GenuineIntel" 686-class) 2.40 GHz cpu0: FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,SBF,CNXT-ID,xTPR real mem = 2137550848 (2038MB) avail mem = 2058645504 (1963MB) mainbus0 at root bios0 at mainbus0: AT/286+ BIOS, date 04/17/03, BIOS32 rev. 0 @ 0xfd844, SMBIOS rev. 2.31 @ 0xf0240 (51 entries) bios0: vendor IBM version "24KT41AUS" date 04/17/2003 bios0: IBM 8310XXS acpi0 at bios0: rev 0 acpi0: tables DSDT FACP TCPA APIC BOOT acpi0: wakeup devices USB1(S3) USB2(S3) USB3(S3) USBE(S3) SLOT(S5) KBC_ (S3) COMA(S5) COMB(S5) acpitimer0 at acpi0: 3579545 Hz, 24 bits acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: apic clock running at 132MHz ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 20, 24 pins acpiprt0 at acpi0: bus 0 (PCI0) acpiprt1 at acpi0: bus 2 (SLOT) acpiprt2 at acpi0: bus -1 (AGP_) acpicpu0 at acpi0 acpitz0 at acpi0: critical temperature 105 degC acpibtn0 at acpi0: PWRB bios0: ROM list: 0xc0000/0xb400 0xe0000/0x10000! pci0 at mainbus0 bus 0: configuration mode 1 (bios) pchb0 at pci0 dev 0 function 0 "Intel 82845G Host" rev 0x01 vga1 at pci0 dev 2 function 0 "Intel 82845G Video" rev 0x01 wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) intagp0 at vga1 agp0 at intagp0: aperture at 0x88000000, size 0x8000000 inteldrm0 at vga1: apic 1 int 16 (irq 11) drm0 at inteldrm0 uhci0 at pci0 dev 29 function 0 "Intel 82801DB USB" rev 0x01: apic 1 int 16 (irq 11) uhci1 at pci0 dev 29 function 1 "Intel 82801DB USB" rev 0x01: apic 1 int 19 (irq 10) uhci2 at pci0 dev 29 function 2 "Intel 82801DB USB" rev 0x01: apic 1 int 18 (irq 5) ehci0 at pci0 dev 29 function 7 "Intel 82801DB USB" rev 0x01: apic 1 int 23 (irq 9) usb0 at ehci0: USB revision 2.0 uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1 ppb0 at pci0 dev 30 function 0 "Intel 82801BA Hub-to-PCI" rev 0x81 pci1 at ppb0 bus 2 fxp0 at pci1 dev 8 function 0 "Intel PRO/100 VE" rev 0x81, i82562: apic 1 int 20 (irq 11), address 00:09:6b:f3:41:ad inphy0 at fxp0 phy 1: i82562EM 10/100 PHY, rev. 0 cbb0 at pci1 dev 10 function 0 "Ricoh 5C475 CardBus" rev 0x81: apic 1 int 22 (irq 9) cardslot0 at cbb0 slot 0 flags 0 cardbus0 at cardslot0: bus 3 device 0 cacheline 0x0, lattimer 0x20 pcmcia0 at cardslot0 ichpcib0 at pci0 dev 31 function 0 "Intel 82801DB LPC" rev 0x01 pciide0 at pci0 dev 31 function 1 "Intel 82801DB IDE" rev 0x01: DMA, channel 0 configured to compatibility, channel 1 configured to compatibility wd0 at pciide0 channel 0 drive 0: < 6Y250L6> wd0: 16-sector PIO, LBA48, 239372MB, 490234752 sectors wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 5 atapiscsi0 at pciide0 channel 1 drive 0 scsibus0 at atapiscsi0: 2 targets cd0 at scsibus0 targ 0 lun 0: <LITE-ON, LTR-48246S, SUS5> ATAPI 5/cdrom removable wd1 at pciide0 channel 1 drive 1: <IC35L040AVER07-0> wd1: 16-sector PIO, LBA, 39266MB, 80418240 sectors cd0(pciide0:1:0): using PIO mode 4, Ultra-DMA mode 2 wd1(pciide0:1:1): using PIO mode 4, Ultra-DMA mode 5 ichiic0 at pci0 dev 31 function 3 "Intel 82801DB SMBus" rev 0x01: apic 1 int 17 (irq 9) iic0 at ichiic0 admtemp0 at iic0 addr 0x4c: adm1032 spdmem0 at iic0 addr 0x50: 1GB DDR SDRAM non-parity PC2700CL2.5 spdmem1 at iic0 addr 0x51: 1GB DDR SDRAM non-parity PC2700CL2.5 auich0 at pci0 dev 31 function 5 "Intel 82801DB AC97" rev 0x01: apic 1 int 17 (irq 9), ICH4 AC97 ac97: codec id 0x41445374 (Analog Devices AD1981B) ac97: codec features headphone, 20 bit DAC, No 3D Stereo audio0 at auich0 usb1 at uhci0: USB revision 1.0 uhub1 at usb1 "Intel UHCI root hub" rev 1.00/1.00 addr 1 usb2 at uhci1: USB revision 1.0 uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1 usb3 at uhci2: USB revision 1.0 uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1 isa0 at ichpcib0 isadma0 at isa0 com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo pckbc0 at isa0 port 0x60/5 pckbd0 at pckbc0 (kbd slot) pckbc0: using irq 1 for kbd slot wskbd0 at pckbd0: console keyboard, using wsdisplay0 pms0 at pckbc0 (aux slot) pckbc0: using irq 12 for aux slot wsmouse0 at pms0 mux 0 pcppi0 at isa0 port 0x61 midi0 at pcppi0: <PC speaker> spkr0 at pcppi0 lpt0 at isa0 port 0x378/4 irq 7 npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16 fdc0 at isa0 port 0x3f0/6 irq 6 drq 2 fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec mtrr: Pentium Pro MTRR support uvideo0 at uhub0 port 6 configuration 1 interface 0 "Logitech QuickCam Pro 9000" rev 2.00/0.08 addr 2 video0 at uvideo0 uaudio0 at uhub0 port 6 configuration 1 interface 2 "Logitech QuickCam Pro 9000" rev 2.00/0.08 addr 2 uaudio0: audio rev 1.00, 2 mixer controls audio1 at uaudio0 softraid0 at root root on wd0a swap on wd0b dump on wd0b auich0: measured ac97 link rate at 47765 Hz, will use 48000 Hz video0 detached uvideo0 detached audio1 detached uaudio0 detached uvideo0 at uhub0 port 5 configuration 1 interface 0 "Logitech QuickCam Pro 9000" rev 2.00/0.08 addr 2 video0 at uvideo0 uaudio0 at uhub0 port 5 configuration 1 interface 2 "Logitech QuickCam Pro 9000" rev 2.00/0.08 addr 2 uaudio0: audio rev 1.00, 2 mixer controls audio1 at uaudio0 -- J.C. Roberts