public static AudioStreamBasicDescription[] GetAvailableStreamDescriptions(AudioFileType fileType, AudioFormatType formatType)
        {
            AudioFileTypeAndFormatID input;

            input.FileType   = fileType;
            input.FormatType = formatType;

            uint size;

            if (AudioFileGetGlobalInfoSize(AudioFileGlobalProperty.AvailableStreamDescriptionsForFormat, (uint)sizeof(AudioFileTypeAndFormatID), ref input, out size) != 0)
            {
                return(null);
            }

            var data = new AudioStreamBasicDescription[size / sizeof(AudioStreamBasicDescription)];

            fixed(AudioStreamBasicDescription *ptr = data)
            {
                var res = AudioFileGetGlobalInfo(AudioFileGlobalProperty.AvailableStreamDescriptionsForFormat, (uint)sizeof(AudioFileTypeAndFormatID), ref input, ref size, ptr);

                if (res != 0)
                {
                    return(null);
                }

                return(data);
            }
        }
Пример #2
0
 public static AudioFormatError GetFormatInfo(ref AudioStreamBasicDescription format)
 {
     unsafe {
         var size = sizeof(AudioStreamBasicDescription);
         return(AudioFormatPropertyNative.AudioFormatGetProperty(AudioFormatProperty.FormatInfo, 0, IntPtr.Zero, ref size, ref format));
     }
 }
Пример #3
0
        public static AudioConverter Create(AudioStreamBasicDescription sourceFormat, AudioStreamBasicDescription destinationFormat, out AudioConverterError error)
        {
            IntPtr ptr = new IntPtr();

            error = AudioConverterNew(ref sourceFormat, ref destinationFormat, ref ptr);
            if (error != AudioConverterError.None)
            {
                return(null);
            }

            return(new AudioConverter(ptr, true));
        }
Пример #4
0
        public static AudioConverter Create(AudioStreamBasicDescription sourceFormat, AudioStreamBasicDescription destinationFormat, AudioClassDescription[] descriptions)
        {
            if (descriptions == null)
            {
                throw new ArgumentNullException("descriptions");
            }

            IntPtr ptr = new IntPtr();
            var    res = AudioConverterNewSpecific(ref sourceFormat, ref destinationFormat, descriptions.Length, ref descriptions, ref ptr);

            if (res != AudioConverterError.None)
            {
                return(null);
            }

            return(new AudioConverter(ptr, true));
        }
Пример #5
0
        public static AudioStreamBasicDescription CreateLinearPCM(double sampleRate = 44100, uint channelsPerFrame = 2, uint bitsPerChannel = 16, bool bigEndian = false)
        {
            var desc = new AudioStreamBasicDescription(AudioFormatType.LinearPCM);

            desc.SampleRate       = sampleRate;
            desc.ChannelsPerFrame = (int)channelsPerFrame;
            desc.BitsPerChannel   = (int)bitsPerChannel;
            desc.BytesPerPacket   = desc.BytesPerFrame = (int)channelsPerFrame * sizeof(Int16);
            desc.FramesPerPacket  = 1;
            desc.FormatFlags      = AudioFormatFlags.IsSignedInteger | AudioFormatFlags.IsPacked;
            if (bigEndian)
            {
                desc.FormatFlags |= AudioFormatFlags.IsBigEndian;
            }

            return(desc);
        }
Пример #6
0
        public unsafe static int[] GetAvailableEncodeNumberChannels(AudioStreamBasicDescription format)
        {
            uint size;

            if (AudioFormatPropertyNative.AudioFormatGetPropertyInfo(AudioFormatProperty.AvailableEncodeNumberChannels, sizeof(AudioStreamBasicDescription), ref format, out size) != 0)
            {
                return(null);
            }

            var data = new int[size / sizeof(int)];

            fixed(int *ptr = data)
            {
                var res = AudioFormatPropertyNative.AudioFormatGetProperty(AudioFormatProperty.AvailableEncodeNumberChannels, sizeof(AudioStreamBasicDescription), ref format, ref size, ptr);

                if (res != 0)
                {
                    return(null);
                }

                return(data);
            }
        }
Пример #7
0
 public static AudioStreamBasicDescription AUCanonicalASBD(double sampleRate, int channel)
 {
     // setting AudioStreamBasicDescription
     int AudioUnitSampleTypeSize =
     #if !MONOMAC
     (XamCore.ObjCRuntime.Runtime.Arch == XamCore.ObjCRuntime.Arch.SIMULATOR) ? sizeof(float) : sizeof(int);
     #else
     sizeof (float);
     #endif
     AudioStreamBasicDescription audioFormat = new AudioStreamBasicDescription()
     {
         SampleRate = sampleRate,
         Format = AudioFormatType.LinearPCM,
         //kAudioFormatFlagsAudioUnitCanonical = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked | kAudioFormatFlagIsNonInterleaved | (SampleFractionBits << kLinearPCMFormatFlagsSampleFractionShift),
         FormatFlags      = (AudioFormatFlags)((int)AudioFormatFlags.IsSignedInteger | (int)AudioFormatFlags.IsPacked | (int)AudioFormatFlags.IsNonInterleaved | (int)(SampleFractionBits << (int)AudioFormatFlags.LinearPCMSampleFractionShift)),
         ChannelsPerFrame = channel,
         BytesPerPacket   = AudioUnitSampleTypeSize,
         BytesPerFrame    = AudioUnitSampleTypeSize,
         FramesPerPacket  = 1,
         BitsPerChannel   = 8 * AudioUnitSampleTypeSize,
         Reserved = 0
     };
     return audioFormat;
 }
Пример #8
0
        public static unsafe int[] GetAvailableEncodeNumberChannels(AudioStreamBasicDescription format)
        {
            uint size;
            if (AudioFormatPropertyNative.AudioFormatGetPropertyInfo (AudioFormatProperty.AvailableEncodeNumberChannels, sizeof (AudioStreamBasicDescription), ref format, out size) != 0)
                return null;

            var data = new int[size / sizeof (int)];
            fixed (int* ptr = data) {
                var res = AudioFormatPropertyNative.AudioFormatGetProperty (AudioFormatProperty.AvailableEncodeNumberChannels, sizeof (AudioStreamBasicDescription), ref format, ref size, ptr);
                if (res != 0)
                    return null;

                return data;
            }
        }
Пример #9
0
        public static unsafe AudioChannelLayoutTag[] GetAvailableEncodeChannelLayoutTags(AudioStreamBasicDescription format)
        {
            var type_size = sizeof (AudioStreamBasicDescription);
            uint size;
            if (AudioFormatPropertyNative.AudioFormatGetPropertyInfo (AudioFormatProperty.AvailableEncodeChannelLayoutTags, type_size, ref format, out size) != 0)
                return null;

            var data = new AudioChannelLayoutTag[size / sizeof (AudioChannelLayoutTag)];
            fixed (AudioChannelLayoutTag* ptr = data) {
                var res = AudioFormatPropertyNative.AudioFormatGetProperty (AudioFormatProperty.AvailableEncodeChannelLayoutTags, type_size, ref format, ref size, (int*)ptr);
                if (res != 0)
                    return null;

                return data;
            }
        }
Пример #10
0
        public static AudioStreamBasicDescription CreateLinearPCM(double sampleRate = 44100, uint channelsPerFrame = 2, uint bitsPerChannel = 16, bool bigEndian = false)
        {
            var desc = new AudioStreamBasicDescription (AudioFormatType.LinearPCM);
            desc.SampleRate = sampleRate;
            desc.ChannelsPerFrame = (int) channelsPerFrame;
            desc.BitsPerChannel = (int) bitsPerChannel;
            desc.BytesPerPacket = desc.BytesPerFrame = (int) channelsPerFrame * sizeof (Int16);
            desc.FramesPerPacket = 1;
            desc.FormatFlags = AudioFormatFlags.IsSignedInteger | AudioFormatFlags.IsPacked;
            if (bigEndian)
                desc.FormatFlags |= AudioFormatFlags.IsBigEndian;

            return desc;
        }
Пример #11
0
 static extern AudioConverterError AudioConverterNewSpecific(ref AudioStreamBasicDescription inSourceFormat, ref AudioStreamBasicDescription inDestinationFormat,
                                                             int inNumberClassDescriptions, ref AudioClassDescription[] inClassDescriptions, ref IntPtr outAudioConverter);
Пример #12
0
 static extern AudioConverterError AudioConverterNew(ref AudioStreamBasicDescription inSourceFormat, ref AudioStreamBasicDescription inDestinationFormat, ref IntPtr outAudioConverter);
Пример #13
0
 static extern int ExtAudioFileSetProperty(
     IntPtr inExtAudioFile,
     PropertyIDType inPropertyID,
     uint /* UInt32 */ ioPropertyDataSize,
     ref AudioStreamBasicDescription outPropertyData);
Пример #14
0
        public static AudioStreamBasicDescription[] GetAvailableStreamDescriptions(AudioFileType fileType, AudioFormatType formatType)
        {
            AudioFileTypeAndFormatID input;
            input.FileType = fileType;
            input.FormatType = formatType;

            uint size;
            if (AudioFileGetGlobalInfoSize (AudioFileGlobalProperty.AvailableStreamDescriptionsForFormat, (uint)sizeof (AudioFileTypeAndFormatID), ref input, out size) != 0)
                return null;

            var data = new AudioStreamBasicDescription[size / sizeof (AudioStreamBasicDescription)];
            fixed (AudioStreamBasicDescription* ptr = data) {
                var res = AudioFileGetGlobalInfo (AudioFileGlobalProperty.AvailableStreamDescriptionsForFormat, (uint)sizeof (AudioFileTypeAndFormatID), ref input, ref size, ptr);
                if (res != 0)
                    return null;

                return data;
            }
        }
Пример #15
0
        public static ExtAudioFile CreateWithUrl(CFUrl url,
            AudioFileType fileType,
            AudioStreamBasicDescription inStreamDesc,
            //AudioChannelLayout channelLayout,
            AudioFileFlags flag)
        {
            if (url == null)
                throw new ArgumentNullException ("url");

            ExtAudioFileError err;
            var audioFile = CreateWithUrl (url.Handle, fileType, inStreamDesc, flag, out err);

            if (err != ExtAudioFileError.OK) // if (err != 0)  <- to keep old implementation
                throw new ArgumentException (String.Format ("Error code:{0}", err));
            if (audioFile == null) // if (ptr == IntPtr.Zero)  <- to keep old implementation
                throw new InvalidOperationException ("Can not get object instance");

            return audioFile;
        }
Пример #16
0
 static extern int ExtAudioFileCreateWithUrl(IntPtr inURL,
     [MarshalAs(UnmanagedType.U4)] AudioFileType inFileType,
     ref AudioStreamBasicDescription inStreamDesc,
     IntPtr inChannelLayout, //AudioChannelLayout inChannelLayout, AudioChannelLayout results in compilation error (error code 134.)
     UInt32 /* UInt32 */ flags,
     out IntPtr outExtAudioFile);
Пример #17
0
 public static AudioFormatError GetFormatInfo(ref AudioStreamBasicDescription format)
 {
     unsafe {
         var size = sizeof (AudioStreamBasicDescription);
         return AudioFormatPropertyNative.AudioFormatGetProperty (AudioFormatProperty.FormatInfo, 0, IntPtr.Zero, ref size, ref format);
     }
 }
Пример #18
0
 public static extern AudioFormatError AudioFormatGetProperty(AudioFormatProperty inPropertyID, int inSpecifierSize, IntPtr inSpecifier, ref int ioPropertyDataSize,
     ref AudioStreamBasicDescription outPropertyData);
Пример #19
0
 public static unsafe extern AudioFormatError AudioFormatGetProperty(AudioFormatProperty propertyID, int inSpecifierSize, ref AudioStreamBasicDescription inSpecifier,
     ref uint ioDataSize, int* outPropertyData);
Пример #20
0
 static extern int AudioConverterNew(
     ref AudioStreamBasicDescription inSourceFormat,
     ref AudioStreamBasicDescription inDestinationFormat,
     IntPtr outAudioConverter);
Пример #21
0
 public static _AudioConverter CreateInstance(AudioStreamBasicDescription srcFormat, AudioStreamBasicDescription destFormat)
 {
     _AudioConverter inst = new _AudioConverter();
     int err_code;
     unsafe{
         IntPtr ptr = inst._audioConverter;
         IntPtr pptr =(IntPtr)(&ptr);
         err_code = AudioConverterNew(ref srcFormat, ref destFormat, pptr);
     }
     if (err_code != 0)
     {
         throw new ArgumentException(String.Format("Error code:{0}", err_code));
     }
     return inst;
 }
Пример #22
0
 static extern int AudioFileGetGlobalInfo(AudioFileGlobalProperty propertyID, uint size, ref AudioFileTypeAndFormatID inSpecifier, ref uint ioDataSize, AudioStreamBasicDescription* outPropertyData);
Пример #23
0
 public static extern AudioFormatError AudioFormatGetPropertyInfo(AudioFormatProperty propertyID, int inSpecifierSize, ref AudioStreamBasicDescription inSpecifier,
     out uint outPropertyDataSize);
Пример #24
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);
 }
Пример #25
0
        public unsafe static AudioChannelLayoutTag[] GetAvailableEncodeChannelLayoutTags(AudioStreamBasicDescription format)
        {
            var  type_size = sizeof(AudioStreamBasicDescription);
            uint size;

            if (AudioFormatPropertyNative.AudioFormatGetPropertyInfo(AudioFormatProperty.AvailableEncodeChannelLayoutTags, type_size, ref format, out size) != 0)
            {
                return(null);
            }

            var data = new AudioChannelLayoutTag[size / sizeof(AudioChannelLayoutTag)];

            fixed(AudioChannelLayoutTag *ptr = data)
            {
                var res = AudioFormatPropertyNative.AudioFormatGetProperty(AudioFormatProperty.AvailableEncodeChannelLayoutTags, type_size, ref format, ref size, (int *)ptr);

                if (res != 0)
                {
                    return(null);
                }

                return(data);
            }
        }
Пример #26
0
		static void PrepareProxy (IntPtr tap, int maxFrames, ref AudioStreamBasicDescription processingFormat)
		{
			MTAudioProcessingTap apt;
			lock (handles)
				apt = handles [tap];
			apt.callbacks.Prepare (apt, (long) maxFrames, ref processingFormat);
		}
Пример #27
0
        public static AudioConverter Create(AudioStreamBasicDescription sourceFormat, AudioStreamBasicDescription destinationFormat)
        {
            AudioConverterError res;

            return(Create(sourceFormat, destinationFormat, out res));
        }
Пример #28
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);
        }