public void loadMedia()
        {
            _isLoading    = true;
            _firedCanPlay = false;

            WriteDebug("method:load " + media.CurrentState);
            WriteDebug(" - " + _mediaUrl.ToString());

            // Load custom MediaStreamSource
            switch (_codec)
            {
            case "audio/wav":
            {
                Stream stream = new PartialHTTPStream(_mediaUrl);
                _streamSource = new WaveMediaStreamSource(stream);
                media.SetSource(_streamSource);
            }
            break;

            case "audio/flac":
            {
                Stream stream = new PartialHTTPStream(_mediaUrl);
                FlacBox.WaveOverFlacStream flacStream = new FlacBox.WaveOverFlacStream(stream, FlacBox.WaveOverFlacStreamMode.Decode);
                _streamSource = new WaveMediaStreamSource(flacStream);
                media.SetSource(_streamSource);
            }
            break;

            default:
                _streamSource = null;
                media.Source  = new Uri(_mediaUrl, UriKind.Absolute);
                break;
            }
        }
Exemple #2
0
        void Play_TouchUpInside(object sender, EventArgs e)
        {
            OutputLabel.Text = $"Playing";

            var os = new MemoryStream();

            if (_options.StreamFormat == AudioRecordOptions.Format.Flac)
            {
                using (var fs = new MemoryStream(bytes))
                {
                    using (var f = new FlacBox.WaveOverFlacStream(fs, FlacBox.WaveOverFlacStreamMode.Decode, false))
                    {
                        f.CopyTo(os);
                        os.Seek(0, SeekOrigin.Begin);
                    }
                }
            }
            else
            {
                os = new MemoryStream(bytes);
            }

            using (var data = NSData.FromStream(os))
            {
                PlayData(data);
            }
        }
Exemple #3
0
        async void Start_Click(object sender, System.EventArgs e)
        {
            if (_recorder != null)
            {
                return;
            }

            _recorder = new AndroidAudioRecorder();
            var result = await _recorder.Record(_options);

            _output.Text = $"Recorded {result.AudioBytes.Length} bytes";

            // playback file
            _tmpFile = File.CreateTempFile("TCL", "wav", CacheDir);
            _tmpFile.DeleteOnExit();

            if (_options.StreamFormat == AudioRecordOptions.Format.Wave)
            {
                var fos = new FileOutputStream(_tmpFile);
                fos.Write(result.AudioBytes);
                fos.Close();
            }
            else
            {
                using (var ms = new System.IO.MemoryStream(result.AudioBytes))
                {
                    using (var fos = System.IO.File.OpenWrite(_tmpFile.AbsolutePath))
                    {
                        using (var f = new FlacBox.WaveOverFlacStream(ms, FlacBox.WaveOverFlacStreamMode.Decode, false))
                        {
                            f.CopyTo(fos);
                        }
                    }
                }
            }

            _recorder = null;
        }
        /// <summary>
        /// Sets the track.
        /// </summary>
        /// <param name="trackId">The track identifier.</param>
        public void SetTrack(string trackId)
        {
            CurrentSong = trackId;
            LibraryTrack track = library.GetTrack(trackId);
            if (track != null)
            {
                WaveStream stream;
                if (Path.GetExtension(track.Path) == ".flac")
                {
                    var flac = new FlacBox.WaveOverFlacStream(new FlacBox.FlacReader(File.OpenRead(track.Path), false));
                    stream = new RawSourceWaveStream(flac, new WaveFormat());
                }
                else
                {
                    stream = new MediaFoundationReader(track.Path);
                }

                try
                {
                    waveOutDevice.Init(stream);
                }
                catch
                {
                    nextCallback();
                }
            }
            else
            {
                nextCallback();
            }
        }
        public void loadMedia()
        {
            _isLoading = true;
            _firedCanPlay = false;

            WriteDebug("method:load " + media.CurrentState);
            WriteDebug(" - " + _mediaUrl.ToString());

            // Load custom MediaStreamSource
            switch (_codec)
            {
                case "audio/wav":
                    {
                        Stream stream = new PartialHTTPStream(_mediaUrl);
                        _streamSource = new WaveMediaStreamSource(stream);
                        media.SetSource(_streamSource);
                    }
                    break;

                case "audio/flac":
                    {
                        Stream stream = new PartialHTTPStream(_mediaUrl);
                        FlacBox.WaveOverFlacStream flacStream = new FlacBox.WaveOverFlacStream(stream, FlacBox.WaveOverFlacStreamMode.Decode);
                        _streamSource = new WaveMediaStreamSource(flacStream);
                        media.SetSource(_streamSource);
                    }
                    break;

                default:
                    _streamSource = null;
                    media.Source = new Uri(_mediaUrl, UriKind.Absolute);
                    break;
            }
        }