Skip to content

Commit

Permalink
Changed the way the _startPlayerFromAsset verb works, instead of gene…
Browse files Browse the repository at this point in the history
…rating a temporary file and then playing it, I made it use the file's buffer and then I used the _startPlayerFromBuffer verb passing the file's buffer as parameter
  • Loading branch information
Alvarocda committed Oct 8, 2021
1 parent 108f701 commit 4faf941
Showing 1 changed file with 13 additions and 64 deletions.
77 changes: 13 additions & 64 deletions tau_sound/lib/public/tau_player.dart
Original file line number Diff line number Diff line change
Expand Up @@ -917,15 +917,6 @@ class TauPlayer implements TauPlayerCallback {
return PlayerState.values[state];
}

Future<File> _loadAudioFromAsset(String path) async {
final byteData = await rootBundle.load(path);
var tempDir = await getTemporaryDirectory();
var tempPath = '${tempDir.path}/flutter_sound_tmp.wav';
final audioAsset = File(tempPath);
await audioAsset.writeAsBytes(byteData.buffer.asUint8List());
return audioAsset;
}

Future<PlayerState> _startPlayerFromAsset(
InputAssetNode fromAsset,
OutputDeviceNode to, {
Expand All @@ -936,61 +927,19 @@ class TauPlayer implements TauPlayerCallback {
bool defaultPauseResume = true,
bool removeUIWhenStopped = true,
}) async {
var audioFile = await _loadAudioFromAsset(fromAsset.path);

var uri = audioFile.uri.toString();
var codec = fromAsset.codec;
var fileNode =
InputFileNode(uri, codec: fromAsset.codec, track: fromAsset.track);
if (codec is Pcm && codec.audioFormat == AudioFormat.raw) {
fileNode = await fileNode.toWave();
uri = fileNode.uri;
codec = fileNode.codec;
}

var oldCodec = codec.deprecatedCodec;

var what = <String, dynamic>{
'codec': oldCodec,
'path': uri,
'fromDataBuffer': null,
};
await _convert(oldCodec, what);
oldCodec = what['codec'] as Codec;
uri = what['path'] as String;

var state = PlayerState.isStopped.index;
if (withShadeUI) {
var track = Track(
codec: oldCodec,
trackPath: uri,
trackAuthor: fileNode.track.author,
trackTitle: fileNode.track.title,
albumArtFile: fileNode.track.albumArtFile,
albumArtAsset: fileNode.track.albumArtAsset,
albumArtUrl: fileNode.track.albumArtURL);

state = await TauPlayerPlatform.instance.startPlayerFromTrack(
this,
progress: Duration.zero,
duration: Duration.zero,
track: track.toMap(),
canPause: (onPaused != null || defaultPauseResume),
canSkipForward: (onSkipForward != null),
canSkipBackward: (onSkipBackward != null),
defaultPauseResume: defaultPauseResume,
removeUIWhenStopped: removeUIWhenStopped,
);
} else {
state = await TauPlayerPlatform.instance.startPlayer(
this,
codec: oldCodec,
fromURI: uri,
fromDataBuffer: null,
);
}

return PlayerState.values[state];
final byteData = await rootBundle.load(fromAsset.path);
var assetBuffer = byteData.buffer.asUint8List();
var bufferNode = InputBufferNode(assetBuffer,
codec: fromAsset.codec, track: fromAsset.track);
return await _startPlayerFromBuffer(
bufferNode,
to,
defaultPauseResume: defaultPauseResume,
onPaused: onPaused,
onSkipBackward: onSkipBackward,
onSkipForward: onSkipForward,
removeUIWhenStopped: removeUIWhenStopped,
);
}

Future<PlayerState> _startPlayerFromBuffer(
Expand Down

0 comments on commit 4faf941

Please sign in to comment.