1- import { encodeDecoder } from "../encodeDecoder"
2- import { malloc , StructDescriptor } from "./struct"
1+ import { Struct } from "../decorator"
2+ import { EncodeDecoder } from "../encodeDecoder"
3+ import { malloc } from "./struct"
34
5+ @Struct (
6+ 'Float32' , // duration
7+ 'Uint32' , // no
8+ 'Uint32' , // start
9+ 'string' , // titles
10+ 'string' , // artist
11+ 'string' , // album
12+ 'string' , // uri
13+ )
414export class AudioTrack {
515 constructor (
616 public titles : string [ ] ,
@@ -11,26 +21,16 @@ export class AudioTrack {
1121 public no : number ,
1222 public start = 0
1323 ) { }
24+ }
1425
15- static readonly struct : StructDescriptor = {
16- layout : ( ) =>
17- [
18- 'Float32' , // duration
19- 'Uint32' , // no
20- 'Uint32' , // start
21- 'string' , // titles
22- 'string' , // artist
23- 'string' , // album
24- 'string' , // uri
25- ]
26- }
26+ export class AudioTrackEncoderDecoder implements EncodeDecoder < AudioTrack > {
2727
28- static encode ( {
28+ encode ( {
2929 titles, artists, album, duration, uri, no, start
3030 } : AudioTrack ) : Uint8Array {
3131 const titlesStr = titles . join ( '\0' )
3232 const artistStr = artists . join ( '\0' )
33- const mem = malloc ( AudioTrack . struct )
33+ const mem = malloc ( AudioTrack )
3434
3535 mem . setArray ( [
3636 duration , no , start ,
@@ -40,18 +40,25 @@ export class AudioTrack {
4040 return new Uint8Array ( mem . getBytes ( ) )
4141 }
4242
43- static decode ( encoded : Uint8Array ) : AudioTrack {
44- const mem = malloc ( AudioTrack . struct )
43+ decode ( encoded : Uint8Array ) : AudioTrack {
44+ const mem = malloc ( AudioTrack )
4545 mem . setUint8Array ( encoded )
4646
4747 const [
4848 duration , no , start ,
4949 titles , artists , album , uri ,
5050 ] = mem . get ( )
5151
52- return new AudioTrack ( titles . split ( '\0' ) , artists . split ( '\0' ) , album , duration , uri , no , start )
52+ return new AudioTrack (
53+ titles . split ( '\0' ) ,
54+ artists . split ( '\0' ) ,
55+ album ,
56+ duration ,
57+ uri ,
58+ no ,
59+ start
60+ )
5361 }
54-
5562}
5663
57- export const songEncodeDecoder = encodeDecoder < AudioTrack > ( AudioTrack . encode , AudioTrack . decode )
64+ export const songEncodeDecoder = new AudioTrackEncoderDecoder ( )
0 commit comments