package mm
The mm library contains high-level to create and manipulate multimedia streams (audio, video, MIDI)
Install
Dune Dependency
Authors
Maintainers
Sources
v0.8.1.tar.gz
md5=34564f61473e235e81330a53f3dbf869
sha512=de153182cd51a52e55e7df6bf4abf46a19d7ebfc81dc13c6715a7f6321f77b8b321ee80343db9e84fdf7d0ea08d31c16fe0f646ad770937e884da7500a8e65e5
doc/src/mm.oss/mm_oss.ml.html
Source file mm_oss.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
(* * Copyright 2011 The Savonet Team * * This file is part of ocaml-mm. * * ocaml-mm is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * ocaml-mm is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with ocaml-mm; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * As a special exception to the GNU Library General Public License, you may * link, statically or dynamically, a "work that uses the Library" with a publicly * distributed version of the Library to produce an executable file containing * portions of the Library, and distribute that executable file under terms of * your choice, without any of the additional requirements listed in clause 6 * of the GNU Library General Public License. * By "a publicly distributed version of the Library", we mean either the unmodified * Library as distributed by The Savonet Team, or a modified version of the Library that is * distributed under the conditions defined in clause 3 of the GNU Library General * Public License. This exception does not however invalidate any other reasons why * the executable file might be covered by the GNU Library General Public License. * *) open Mm_base open Mm_audio module OSS = struct external set_format : Unix.file_descr -> int -> int = "caml_oss_dsp_setfmt" external set_channels : Unix.file_descr -> int -> int = "caml_oss_dsp_channels" external set_rate : Unix.file_descr -> int -> int = "caml_oss_dsp_speed" end (* TODO: other formats than 16 bits? *) class writer ?(device = "/dev/dsp") channels sample_rate = object (self) inherit IO.Unix.rw ~write:true device initializer assert (OSS.set_format fd 16 = 16); assert (OSS.set_channels fd channels = channels); assert (OSS.set_rate fd sample_rate = sample_rate) method private stream_really_write buf ofs len = let w = ref 0 in while !w <> len do w := !w + self#stream_write buf (ofs + !w) (len - !w) done method write buf ofs len = let s = Audio.S16LE.make buf ofs len in self#stream_really_write s 0 (String.length s) method close = self#stream_close end class reader ?(device = "/dev/dsp") channels sample_rate = object (self) inherit IO.Unix.rw ~read:true device initializer assert (OSS.set_format fd 16 = 16); assert (OSS.set_channels fd channels = channels); assert (OSS.set_rate fd sample_rate = sample_rate) method channels = channels method sample_rate = sample_rate method length : int = assert false method duration : float = assert false method read buf ofs len = let slen = Audio.S16LE.length channels len in let s = Bytes.create slen in let r = self#stream_read s 0 slen in let len = Audio.S16LE.length channels r in Audio.S16LE.to_audio (Bytes.unsafe_to_string s) 0 buf ofs len; len method seek (_ : int) : unit = assert false method close = self#stream_close end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>