Exemplo n.º 1
0
        //==========================================================================
        public libvlc_track_description_t libvlc_video_get_track_description(IntPtr p_mi)
        {
            VerifyAccess();

            IntPtr pointer = m_libvlc_video_get_track_description(p_mi);

            if (pointer == IntPtr.Zero)
            {
                return(null);
            }

            // I still have no clue whether the returned descriptions have to be freed
            // in any way; but i assume not

            internal_libvlc_track_description_t track_description = (internal_libvlc_track_description_t)Marshal.PtrToStructure(pointer, typeof(internal_libvlc_track_description_t));
            libvlc_track_description_t          result            = new libvlc_track_description_t {
                i_id = track_description.i_id, psz_name = track_description.psz_name
            };
            libvlc_track_description_t current = result;

            while (track_description.p_next != IntPtr.Zero)
            {
                track_description = (internal_libvlc_track_description_t)Marshal.PtrToStructure(track_description.p_next, typeof(internal_libvlc_track_description_t));
                current.p_next    = new libvlc_track_description_t {
                    i_id = track_description.i_id, psz_name = track_description.psz_name
                };
                current = current.p_next;
            }
            current.p_next = null;

            m_libvlc_track_description_list_release(pointer);

            return(result);
        }
Exemplo n.º 2
0
        //==========================================================================
        public libvlc_track_description_t libvlc_video_get_spu_description(IntPtr p_mi)
        {
            VerifyAccess();

            IntPtr pointer = m_libvlc_video_get_spu_description(p_mi);

            if (pointer == IntPtr.Zero)
            {
                return(null);
            }

            internal_libvlc_track_description_t track_description = (internal_libvlc_track_description_t)Marshal.PtrToStructure(pointer, typeof(internal_libvlc_track_description_t));
            libvlc_track_description_t          result            = new libvlc_track_description_t {
                i_id = track_description.i_id, psz_name = track_description.psz_name
            };
            libvlc_track_description_t current = result;

            while (track_description.p_next != IntPtr.Zero)
            {
                track_description = (internal_libvlc_track_description_t)Marshal.PtrToStructure(track_description.p_next, typeof(internal_libvlc_track_description_t));
                current.p_next    = new libvlc_track_description_t {
                    i_id = track_description.i_id, psz_name = track_description.psz_name
                };
                current = current.p_next;
            }
            current.p_next = null;

            m_libvlc_track_description_list_release(pointer);

            return(result);
        }