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:
| [DllImport("/usr/local/lib/libmp3lame.so")] public static extern IntPtr lame_init(); [DllImport("/usr/local/lib/libmp3lame.so")] public static extern uint lame_set_in_samplerate(IntPtr lame, int samplerrate); [DllImport("/usr/local/lib/libmp3lame.so")] public static extern uint lame_set_VBR(IntPtr lame, vbr_mode_e mode); [DllImport("/usr/local/lib/libmp3lame.so")] public static extern uint lame_init_params(IntPtr lame); [DllImport("/usr/local/lib/libmp3lame.so")] public static extern uint lame_close(IntPtr lame);
[DllImport("/usr/local/lib/libmp3lame.so")] public static extern uint lame_encode_flush(IntPtr lame, byte[] mp3_buffer, int size); [DllImport("/usr/local/lib/libmp3lame.so")] public static extern uint lame_encode_buffer_interleaved(IntPtr lame, IntPtr pcm_buffer, int read, byte[] mp3_buffer, int size);
public static uint Encode(IntPtr p, byte[] input, int index, int count, byte[] output) { uint tencoded = 0; GCHandle handle = GCHandle.Alloc(input, GCHandleType.Pinned); try { IntPtr ptr = (IntPtr)(handle.AddrOfPinnedObject().ToInt32() + index); tencoded = lame_encode_buffer_interleaved(p, ptr,count / 2, output, output.Length); } finally { handle.Free(); } return tencoded; } |