{"version":3,"file":"codec.mjs","names":[],"sources":["../src/codec.ts"],"sourcesContent":["import { Buffer } from \"node:buffer\";\nimport { Decoder, Encoder } from \"@evan/opus\";\n\nclass Codec {\n  id: number;\n  name: \"OPUS/16000\" | \"OPUS/48000/2\" | \"PCMU/8000\";\n  packetSize: number;\n  timestampInterval: number;\n  createEncoder: () => { encode: (pcm: Buffer) => Buffer };\n  createDecoder: () => { decode: (audio: Buffer) => Buffer };\n  constructor(name: \"OPUS/16000\" | \"OPUS/48000/2\" | \"PCMU/8000\") {\n    this.name = name;\n    switch (name) {\n      case \"OPUS/16000\": {\n        this.createEncoder = () => {\n          const encoder = new Encoder({ channels: 1, sample_rate: 16000 });\n          return { encode: (pcm: Buffer) => Buffer.from(encoder.encode(pcm)) };\n        };\n        this.createDecoder = () => {\n          const decoder = new Decoder({ channels: 1, sample_rate: 16000 });\n          return {\n            decode: (opus: Buffer) => Buffer.from(decoder.decode(opus)),\n          };\n        };\n        this.id = 109;\n        this.packetSize = 640;\n        this.timestampInterval = 320;\n        break;\n      }\n      case \"OPUS/48000/2\": {\n        this.createEncoder = () => {\n          const encoder = new Encoder({ channels: 2, sample_rate: 48000 });\n          return { encode: (pcm: Buffer) => Buffer.from(encoder.encode(pcm)) };\n        };\n        this.createDecoder = () => {\n          const decoder = new Decoder({ channels: 2, sample_rate: 48000 });\n          return {\n            decode: (opus: Buffer) => Buffer.from(decoder.decode(opus)),\n          };\n        };\n        this.id = 111;\n        this.packetSize = 3840;\n        this.timestampInterval = 960;\n        break;\n      }\n      case \"PCMU/8000\": {\n        this.createEncoder = () => {\n          return { encode: (pcm: Buffer) => pcm };\n        };\n        this.createDecoder = () => {\n          return { decode: (audio: Buffer) => audio };\n        };\n        this.id = 0;\n        this.packetSize = 160;\n        this.timestampInterval = 160;\n        break;\n      }\n      default: {\n        throw new Error(`unsupported codec: ${name}`);\n      }\n    }\n  }\n}\n\nexport default Codec;\n"],"mappings":";;;AAGA,IAAM,QAAN,MAAY;CACV;CACA;CACA;CACA;CACA;CACA;CACA,YAAY,MAAmD;EAC7D,KAAK,OAAO;EACZ,QAAQ,MAAR;GACE,KAAK;IACH,KAAK,sBAAsB;KACzB,MAAM,UAAU,IAAI,QAAQ;MAAE,UAAU;MAAG,aAAa;MAAO,CAAC;KAChE,OAAO,EAAE,SAAS,QAAgB,OAAO,KAAK,QAAQ,OAAO,IAAI,CAAC,EAAE;;IAEtE,KAAK,sBAAsB;KACzB,MAAM,UAAU,IAAI,QAAQ;MAAE,UAAU;MAAG,aAAa;MAAO,CAAC;KAChE,OAAO,EACL,SAAS,SAAiB,OAAO,KAAK,QAAQ,OAAO,KAAK,CAAC,EAC5D;;IAEH,KAAK,KAAK;IACV,KAAK,aAAa;IAClB,KAAK,oBAAoB;IACzB;GAEF,KAAK;IACH,KAAK,sBAAsB;KACzB,MAAM,UAAU,IAAI,QAAQ;MAAE,UAAU;MAAG,aAAa;MAAO,CAAC;KAChE,OAAO,EAAE,SAAS,QAAgB,OAAO,KAAK,QAAQ,OAAO,IAAI,CAAC,EAAE;;IAEtE,KAAK,sBAAsB;KACzB,MAAM,UAAU,IAAI,QAAQ;MAAE,UAAU;MAAG,aAAa;MAAO,CAAC;KAChE,OAAO,EACL,SAAS,SAAiB,OAAO,KAAK,QAAQ,OAAO,KAAK,CAAC,EAC5D;;IAEH,KAAK,KAAK;IACV,KAAK,aAAa;IAClB,KAAK,oBAAoB;IACzB;GAEF,KAAK;IACH,KAAK,sBAAsB;KACzB,OAAO,EAAE,SAAS,QAAgB,KAAK;;IAEzC,KAAK,sBAAsB;KACzB,OAAO,EAAE,SAAS,UAAkB,OAAO;;IAE7C,KAAK,KAAK;IACV,KAAK,aAAa;IAClB,KAAK,oBAAoB;IACzB;GAEF,SACE,MAAM,IAAI,MAAM,sBAAsB,OAAO"}