Skip to content

Commit 4555b9f

Browse files
committed
chore: rewrite
1 parent ff8b812 commit 4555b9f

File tree

9 files changed

+100
-32
lines changed

9 files changed

+100
-32
lines changed

.vscode/settings.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"rust-analyzer.procMacro.attributes.enable": false
3+
}

Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ crate-type = ["cdylib"]
1010
# Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix
1111
napi = { version = "2.12.2", default-features = false, features = ["napi4"] }
1212
napi-derive = "2.12.2"
13-
symphonia = { version = "0.5.4", features = ["all"] }
1413
symphonium = { version = "0.2.2", features = ["all"] }
1514
unsafe-libopus = "0.2.0"
1615

js-binding.d.ts

+23-23
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@
33

44
/* auto-generated by NAPI-RS */
55

6-
export declare function getOpusVersion(): string;
6+
export declare function getOpusVersion(): string
77
export interface ProbeResult {
88
/** The number of channels */
9-
channels: number;
9+
channels: number
1010
/** The sample rate */
11-
sampleRate: number;
11+
sampleRate: number
1212
/** The number of frames per block */
13-
framesPerBlock: number;
13+
framesPerBlock: number
1414
/** The codec type */
15-
codec: CodecType;
15+
codec: CodecType
1616
/** The number of frames */
17-
nFrames: number;
17+
nFrames: number
1818
/** The approximate duration of this media in seconds */
19-
duration: number;
19+
duration: number
2020
/** The metadata object */
21-
metadata: Array<MetadataField>;
21+
metadata: Array<MetadataField>
2222
}
2323
export const enum CodecType {
2424
UNKNOWN = 0,
@@ -86,23 +86,23 @@ export const enum CodecType {
8686
WAVPACK = 8193,
8787
MONKEYS_AUDIO = 8194,
8888
ALAC = 8195,
89-
TTA = 8196,
89+
TTA = 8196
9090
}
9191
export interface MetadataField {
92-
name: string;
93-
value: string;
92+
name: string
93+
value: string
9494
}
95-
export declare function probe(data: Buffer): Promise<ProbeResult>;
96-
export declare function probeSync(data: Buffer): ProbeResult;
95+
export declare function probe(data: Buffer): Promise<ProbeResult>
96+
export declare function probeSync(data: Buffer): ProbeResult
9797
export declare class OpusEncoder {
98-
static create(sampleRate: number, channels: number): OpusEncoder;
99-
hasEncoder(): boolean;
100-
hasDecoder(): boolean;
101-
encode(data: Buffer): Buffer;
102-
decode(data: Buffer): Buffer;
103-
setBitrate(bitrate: number): void;
104-
getBitrate(): number;
105-
applyEncoderCtl(request: number, value: number): void;
106-
applyDecoderCtl(request: number, value: number): void;
107-
get version(): string;
98+
static create(sampleRate: number, channels: number): OpusEncoder
99+
hasEncoder(): boolean
100+
hasDecoder(): boolean
101+
encode(data: Buffer): Buffer
102+
decode(data: Buffer): Buffer
103+
setBitrate(bitrate: number): void
104+
getBitrate(): number
105+
applyEncoderCtl(request: number, value: number): void
106+
applyDecoderCtl(request: number, value: number): void
107+
get version(): string
108108
}

js-binding.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ switch (platform) {
116116
nativeBinding = require('mediaplex-darwin-universal')
117117
}
118118
break
119-
} catch { }
119+
} catch {}
120120
switch (arch) {
121121
case 'x64':
122122
localFileExisted = existsSync(join(__dirname, 'mediaplex.darwin-x64.node'))

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"author": "Twilight <[email protected]>",
2828
"devDependencies": {
2929
"@napi-rs/cli": "^2.18.4",
30+
"@types/node": "^22.10.1",
3031
"ava": "^6.0.1"
3132
},
3233
"ava": {
@@ -45,4 +46,4 @@
4546
"version": "napi version"
4647
},
4748
"packageManager": "[email protected]"
48-
}
49+
}

src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ extern crate napi_derive;
55

66
pub mod opus;
77
pub mod probe;
8+
pub mod transcoder;

src/probe/mod.rs

+12-6
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,16 @@
22

33
use napi::bindgen_prelude::*;
44
use napi::{Result, Task};
5-
use symphonia::core::meta::MetadataRevision;
6-
use symphonia::core::{
7-
audio::Channels, codecs::*, io::MediaSourceStream, probe::Hint, units::TimeBase,
5+
use symphonium::symphonia::core::{
6+
audio::Channels,
7+
codecs::*,
8+
formats::FormatOptions,
9+
io::MediaSourceStream,
10+
meta::{MetadataOptions, MetadataRevision},
11+
probe::Hint,
12+
units::TimeBase,
813
};
14+
use symphonium::symphonia::default::get_probe;
915

1016
#[napi(object, js_name = "ProbeResult")]
1117
pub struct JsProbeResult {
@@ -166,10 +172,10 @@ fn probe_inner(data: Vec<u8>) -> Result<JsProbeResult> {
166172
let hint = Hint::new();
167173

168174
// Use the default options for metadata and format readers.
169-
let meta_opts: symphonia::core::meta::MetadataOptions = Default::default();
170-
let fmt_opts: symphonia::core::formats::FormatOptions = Default::default();
175+
let meta_opts: MetadataOptions = Default::default();
176+
let fmt_opts: FormatOptions = Default::default();
171177

172-
let mut probed = symphonia::default::get_probe()
178+
let mut probed = get_probe()
173179
.format(&hint, mss, &fmt_opts, &meta_opts)
174180
.map_err(|e| {
175181
Error::new(

src/transcoder/mod.rs

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// use symphonium::{DecodedAudio, SymphoniumLoader};
2+
3+
// fn create_media_source() {}
4+
5+
// struct Transcoder {
6+
// audio_data: DecodedAudio,
7+
// frames_elapsed: usize,
8+
// temp_buf_l: Vec<f32>,
9+
// temp_buf_r: Vec<f32>,
10+
// }
11+
12+
// impl Transcoder {
13+
// fn create(audio_data: DecodedAudio, max_buffer_size: usize) -> Self {
14+
// Transcoder {
15+
// audio_data,
16+
// frames_elapsed: 0,
17+
// temp_buf_l: vec![0.0; max_buffer_size],
18+
// temp_buf_r: vec![0.0; max_buffer_size],
19+
// }
20+
// }
21+
22+
// fn process(&mut self, output: &mut [f32]) {
23+
// let frames = output.len() / 2;
24+
25+
// self.audio_data.fill_stereo(
26+
// self.frames_elapsed,
27+
// &mut self.temp_buf_l[..frames],
28+
// &mut self.temp_buf_r[..frames],
29+
// );
30+
31+
// for (out, (&in1, &in2)) in output
32+
// .chunks_exact_mut(2)
33+
// .zip(self.temp_buf_l.iter().zip(self.temp_buf_r.iter()))
34+
// {
35+
// out[0] = in1;
36+
// out[1] = in2;
37+
// }
38+
39+
// self.frames_elapsed += frames;
40+
// }
41+
// }

yarn.lock

+17
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,15 @@ __metadata:
9090
languageName: node
9191
linkType: hard
9292

93+
"@types/node@npm:^22.10.1":
94+
version: 22.10.1
95+
resolution: "@types/node@npm:22.10.1"
96+
dependencies:
97+
undici-types: "npm:~6.20.0"
98+
checksum: 10c0/0fbb6d29fa35d807f0223a4db709c598ac08d66820240a2cd6a8a69b8f0bc921d65b339d850a666b43b4e779f967e6ed6cf6f0fca3575e08241e6b900364c234
99+
languageName: node
100+
linkType: hard
101+
93102
"@vercel/nft@npm:^0.27.5":
94103
version: 0.27.7
95104
resolution: "@vercel/nft@npm:0.27.7"
@@ -940,6 +949,7 @@ __metadata:
940949
resolution: "mediaplex@workspace:."
941950
dependencies:
942951
"@napi-rs/cli": "npm:^2.18.4"
952+
"@types/node": "npm:^22.10.1"
943953
ava: "npm:^6.0.1"
944954
languageName: unknown
945955
linkType: soft
@@ -1437,6 +1447,13 @@ __metadata:
14371447
languageName: node
14381448
linkType: hard
14391449

1450+
"undici-types@npm:~6.20.0":
1451+
version: 6.20.0
1452+
resolution: "undici-types@npm:6.20.0"
1453+
checksum: 10c0/68e659a98898d6a836a9a59e6adf14a5d799707f5ea629433e025ac90d239f75e408e2e5ff086afc3cace26f8b26ee52155293564593fbb4a2f666af57fc59bf
1454+
languageName: node
1455+
linkType: hard
1456+
14401457
"unicorn-magic@npm:^0.1.0":
14411458
version: 0.1.0
14421459
resolution: "unicorn-magic@npm:0.1.0"

0 commit comments

Comments
 (0)