public static ExtAudioFile OpenUrl(CFUrl url, out ExtAudioFileError error)
        {
            if (url == null)
            {
                throw new ArgumentNullException("url");
            }

            return(OpenUrl(url.Handle, out error));
        }
        public static ExtAudioFile?OpenUrl(CFUrl url, out ExtAudioFileError error)
        {
            if (url is null)
            {
                ObjCRuntime.ThrowHelper.ThrowArgumentNullException(nameof(url));
            }

            return(OpenUrl(url.Handle, out error));
        }
        public uint Read(uint numberFrames, AudioBuffers audioBufferList, out ExtAudioFileError status)
        {
            if (audioBufferList == null)
            {
                throw new ArgumentNullException("audioBufferList");
            }

            status = ExtAudioFileRead(_extAudioFile, ref numberFrames, (IntPtr)audioBufferList);
            return(numberFrames);
        }
        public uint Read(uint numberFrames, AudioBuffers audioBufferList, out ExtAudioFileError status)
        {
            if (audioBufferList is null)
            {
                ObjCRuntime.ThrowHelper.ThrowArgumentNullException(nameof(audioBufferList));
            }

            status = ExtAudioFileRead(_extAudioFile, ref numberFrames, (IntPtr)audioBufferList);
            return(numberFrames);
        }
        static ExtAudioFile OpenUrl(IntPtr urlHandle, out ExtAudioFileError error)
        {
            IntPtr ptr;

            error = ExtAudioFileOpenUrl(urlHandle, out ptr);

            if (error != ExtAudioFileError.OK || ptr == IntPtr.Zero)
            {
                return(null);
            }
            else
            {
                return(new ExtAudioFile(ptr));
            }
        }
        static ExtAudioFile CreateWithUrl(IntPtr urlHandle, AudioFileType fileType, AudioStreamBasicDescription inStreamDesc, AudioFileFlags flag, out ExtAudioFileError error)
        {
            IntPtr ptr;

            error = (ExtAudioFileError)ExtAudioFileCreateWithUrl(urlHandle, fileType, ref inStreamDesc, IntPtr.Zero, (uint)flag, out ptr);
            if (error != ExtAudioFileError.OK || ptr == IntPtr.Zero)
            {
                return(null);
            }
            else
            {
                return(new ExtAudioFile(ptr));
            }
        }
        public static ExtAudioFile CreateWithUrl(CFUrl url, AudioFileType fileType, AudioStreamBasicDescription inStreamDesc, AudioFileFlags flag, out ExtAudioFileError error)
        {
            if (url == null)
            {
                throw new ArgumentNullException("url");
            }

            return(CreateWithUrl(url.Handle, fileType, inStreamDesc, flag, out error));
        }
Exemple #8
0
        public static bool GetDataFromExtAudioFile(ExtAudioFile ext, AudioStreamBasicDescription outputFormat, int maxBufferSize,
                                                   byte[] dataBuffer, out int dataBufferSize, out ALFormat format, out double sampleRate)
        {
            uint errorStatus        = 0;
            uint bufferSizeInFrames = 0;

            dataBufferSize = 0;
            format         = ALFormat.Mono16;
            sampleRate     = 0;
            /* Compute how many frames will fit into our max buffer size */
            bufferSizeInFrames = (uint)(maxBufferSize / outputFormat.BytesPerFrame);

            if (dataBuffer != null)
            {
                var audioBufferList = new AudioBuffers(maxBufferSize);

                // This a hack so if there is a problem speak to kjpou1 -Kenneth
                // the cleanest way is to copy the buffer to the pointer already allocated
                // but what we are going to do is replace the pointer with our own and restore it later
                //
                GCHandle meBePinned  = GCHandle.Alloc(dataBuffer, GCHandleType.Pinned);
                IntPtr   meBePointer = meBePinned.AddrOfPinnedObject();

                audioBufferList.SetData(0, meBePointer);

                try {
                    // Read the data into an AudioBufferList
                    // errorStatus here returns back the amount of information read
                    ExtAudioFileError extAudioFileError = ExtAudioFileError.OK;
                    errorStatus = ext.Read(bufferSizeInFrames, audioBufferList, out extAudioFileError);
                    if (errorStatus >= 0)
                    {
                        /* Success */
                        /* Note: 0 == bufferSizeInFrames is a legitimate value meaning we are EOF. */

                        /* ExtAudioFile.Read returns the number of frames actually read.
                         * Need to convert back to bytes.
                         */
                        dataBufferSize = (int)bufferSizeInFrames * outputFormat.BytesPerFrame;

                        // Now we set our format
                        format = outputFormat.ChannelsPerFrame > 1 ? ALFormat.Stereo16 : ALFormat.Mono16;

                        sampleRate = outputFormat.SampleRate;
                    }
                    else
                    {
#if DEBUG
                        Console.WriteLine("ExtAudioFile.Read failed, Error = " + errorStatus);
#endif
                        return(false);
                    }
                } catch (Exception exc) {
#if DEBUG
                    Console.WriteLine("ExtAudioFile.Read failed: " + exc.Message);
#endif
                    return(false);
                } finally {
                    // Don't forget to free our dataBuffer memory pointer that was pinned above
                    meBePinned.Free();
                    // and restore what was allocated to beginwith
                    audioBufferList.SetData(0, IntPtr.Zero);
                }
            }
            return(true);
        }
Exemple #9
0
        public uint Read(uint numberFrames, AudioBuffers audioBufferList, out ExtAudioFileError status)
        {
            if (audioBufferList == null)
                throw new ArgumentNullException ("audioBufferList");

            status = ExtAudioFileRead (_extAudioFile, ref numberFrames, (IntPtr) audioBufferList);
            return numberFrames;
        }
        public static ExtAudioFile?CreateWithUrl(CFUrl url, AudioFileType fileType, AudioStreamBasicDescription inStreamDesc, AudioFileFlags flag, out ExtAudioFileError error)
        {
            if (url is null)
            {
                ObjCRuntime.ThrowHelper.ThrowArgumentNullException(nameof(url));
            }

            return(CreateWithUrl(url.Handle, fileType, inStreamDesc, flag, out error));
        }
Exemple #11
0
        static ExtAudioFile OpenUrl(IntPtr urlHandle, out ExtAudioFileError error)
        {
            IntPtr ptr;
            error = ExtAudioFileOpenUrl (urlHandle, out ptr);

            if (error != ExtAudioFileError.OK || ptr == IntPtr.Zero)
                return null;
            else
                return new ExtAudioFile (ptr);
        }
Exemple #12
0
 static ExtAudioFile CreateWithUrl(IntPtr urlHandle, AudioFileType fileType, AudioStreamBasicDescription inStreamDesc, AudioFileFlags flag, out ExtAudioFileError error)
 {
     IntPtr ptr;
     error = (ExtAudioFileError) ExtAudioFileCreateWithUrl (urlHandle, fileType, ref inStreamDesc, IntPtr.Zero, (uint)flag, out ptr);
     if (error != ExtAudioFileError.OK || ptr == IntPtr.Zero)
         return null;
     else
         return new ExtAudioFile (ptr);
 }
Exemple #13
0
        public static ExtAudioFile OpenUrl(CFUrl url, out ExtAudioFileError error)
        {
            if (url == null)
                throw new ArgumentNullException ("url");

            return OpenUrl (url.Handle, out error);
        }
Exemple #14
0
        public static ExtAudioFile CreateWithUrl(CFUrl url, AudioFileType fileType, AudioStreamBasicDescription inStreamDesc, AudioFileFlags flag,	out ExtAudioFileError error)
        {
            if (url == null)
                throw new ArgumentNullException ("url");

            return CreateWithUrl (url.Handle, fileType, inStreamDesc, flag, out error);
        }