Exemplo n.º 1
0
        public unsafe                           AudioFormat[] GetOutputFormatList(byte[] magicCookie = null)
        {
            var afi = new AudioFormatInfo();

            afi.AudioStreamBasicDescription = this;

            var  type_size = sizeof(AudioFormat);
            uint size;

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

            Debug.Assert(sizeof(AudioFormat) == type_size);

            var data = new AudioFormat[size / type_size];

            fixed(AudioFormat *ptr = &data[0])
            {
                var res = AudioFormatPropertyNative.AudioFormatGetProperty(AudioFormatProperty.OutputFormatList, type_size, ref afi, ref size, ptr);

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

                Array.Resize(ref data, (int)size / type_size);
                return(data);
            }
        }
Exemplo n.º 2
0
        public unsafe AudioFormat[] GetFormatList(byte[] magicCookie)
        {
            if (magicCookie == null)
                throw new ArgumentNullException ("magicCookie");

            var afi = new AudioFormatInfo ();
            afi.AudioStreamBasicDescription = this;

            fixed (byte* b = magicCookie)
            {
                afi.MagicCookieWeak = b;
                afi.MagicCookieSize = magicCookie.Length;

                var type_size = sizeof (AudioFormat);
                uint size;
                if (AudioFormatPropertyNative.AudioFormatGetPropertyInfo (AudioFormatProperty.FormatList, type_size, ref afi, out size) != 0)
                    return null;

                Debug.Assert (sizeof (AudioFormat) == type_size);

                var data = new AudioFormat[size / type_size];
                fixed (AudioFormat* ptr = &data[0]) {
                    var res = AudioFormatPropertyNative.AudioFormatGetProperty (AudioFormatProperty.FormatList, type_size, ref afi, ref size, ptr);
                    if (res != 0)
                        return null;

                    Array.Resize (ref data, (int)size / type_size);
                    return data;
                }
            }
        }