public static AudioChannelBit? ToAudioChannel(this AudioChannelLayoutTag layoutTag)
        {
            int value;
            int size = sizeof (uint);
            int layout = (int) layoutTag;

            if (AudioFormatPropertyNative.AudioFormatGetProperty (AudioFormatProperty.BitmapForLayoutTag, sizeof (AudioChannelLayoutTag), ref layout, ref size, out value) != 0)
                return null;

            return (AudioChannelBit) value;
        }
        public int Reserved; // uint

        #if !COREBUILD

        #if !WATCH

        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;
            }
        }
        public static unsafe AudioChannelLayoutTag[] GetTagsForNumberOfChannels(int count)
        {
            const int type_size = sizeof (uint);
            int size;
            if (AudioFormatPropertyNative.AudioFormatGetPropertyInfo (AudioFormatProperty.TagsForNumberOfChannels, type_size, ref count, out size) != 0)
                return null;

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

                return data;
            }
        }
Beispiel #4
0
        public unsafe static                    AudioChannelLayoutTag[] GetAvailableEncodeChannelLayoutTags(AudioStreamBasicDescription format)
        {
            var  type_size = Marshal.SizeOf(format);
            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);
            }
        }
Beispiel #5
0
 public static AudioChannelLayout FromAudioChannelLayoutTag(AudioChannelLayoutTag channelLayoutTag)
 {
     return(GetChannelLayout(AudioFormatProperty.ChannelLayoutForTag, (int)channelLayoutTag));
 }
Beispiel #6
0
 public static bool IsReserved(this AudioChannelLayoutTag value)
 {
     return((uint)value >= 0xF0000000 && (uint)value <= 0xFFFFFFFE);
 }
Beispiel #7
0
 public static uint GetNumberOfChannels(this AudioChannelLayoutTag inLayoutTag)
 {
     return((uint)inLayoutTag & 0x0000FFFF);
 }
Beispiel #8
0
 public static AudioChannelLayout FromAudioChannelLayoutTag(AudioChannelLayoutTag channelLayoutTag)
 {
     return GetChannelLayout (AudioFormatProperty.ChannelLayoutForTag, (int) channelLayoutTag);
 }
Beispiel #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;
            }
        }
Beispiel #10
0
        public static unsafe AudioChannelLayoutTag[] GetTagsForNumberOfChannels(int count)
        {
            const int type_size = sizeof (uint);
            int size;
            if (AudioFormatPropertyNative.AudioFormatGetPropertyInfo (AudioFormatProperty.TagsForNumberOfChannels, type_size, ref count, out size) != 0)
                return null;

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

                return data;
            }
        }
Beispiel #11
0
 internal unsafe AudioChannelLayout(IntPtr h)
 {
     AudioTag = (AudioChannelLayoutTag) Marshal.ReadInt32 (h, 0);
     ChannelUsage = (AudioChannelBit) Marshal.ReadInt32 (h, 4);
     Channels = new AudioChannelDescription [Marshal.ReadInt32 (h, 8)];
     int p = 12;
     for (int i = 0; i < Channels.Length; i++){
         Channels [i] = (AudioChannelDescription) Marshal.PtrToStructure((IntPtr) (unchecked (((byte *) h) + p)), typeof(AudioChannelDescription));
         p += Marshal.SizeOf (typeof (AudioChannelDescription));
     }
 }