コード例 #1
0
        //==========================================================================
        public int libvlc_media_get_tracks_info(IntPtr p_md, out libvlc_media_track_info_t[] tracks)
        {
            VerifyAccess();

            IntPtr result_buffer;
            int    result = m_libvlc_media_get_tracks_info(p_md, out result_buffer);

            if (result < 0)
            {
                tracks = null;
                return(result);
            }

            IntPtr buffer = result_buffer;

            tracks = new libvlc_media_track_info_t[result];
            for (int i = 0; i < tracks.Length; i++)
            {
                tracks[i] = (libvlc_media_track_info_t)Marshal.PtrToStructure(buffer, typeof(libvlc_media_track_info_t));
                buffer   += Marshal.SizeOf(typeof(libvlc_media_track_info_t));
            }

            libvlc_free(result_buffer);

            return(result);
        }
コード例 #2
0
 internal MediaTrackInfos(libvlc_media_track_info_t info)
 {
     Codec         = info.i_codec;
     Id            = info.i_id;
     TrackType     = (MediaTrackTypes)info.i_type;
     Profile       = info.i_profile;
     Level         = info.i_level;
     AudioChannels = info.audio.i_channels;
     AudioRate     = info.audio.i_rate;
     VideoHeight   = info.video.i_height;
     VideoWidth    = info.video.i_width;
 }
コード例 #3
0
 /// <summary>
 /// Returns information about tracks retrieved after <see cref="Parse"/> call.
 /// </summary>
 /// <returns>
 /// A <see cref="libvlc_media_track_info_t[]"/> array of tracks.
 /// </returns>
 public libvlc_media_track_info_t[] GetTracksInfo()
 {
     if (tracksInfo != null && tracksInfo.Length > 0)
     {
         libvlc_media_track_info_t[] tracks = new libvlc_media_track_info_t[tracksInfo.Length];
         tracksInfo.CopyTo(tracks, 0);
         return(tracks);
     }
     else
     {
         return(new libvlc_media_track_info_t[] {});
     }
 }
コード例 #4
0
        public static MediaTrackInfo ToMediaInfo(this libvlc_media_track_info_t tInfo)
        {
            MediaTrackInfo mti = new MediaTrackInfo();

            mti.Channels = tInfo.audio.i_channels;
            mti.Codec    = tInfo.i_codec;
            mti.Height   = tInfo.video.i_width;
            mti.Id       = tInfo.i_id;
            mti.Level    = tInfo.i_level;
            mti.Profile  = tInfo.i_profile;
            mti.Rate     = tInfo.audio.i_rate;
            mti.Width    = tInfo.video.i_width;

            return(mti);
        }
コード例 #5
0
    //==========================================================================
    public int libvlc_media_get_tracks_info(IntPtr p_md, out libvlc_media_track_info_t[] tracks)
    {
      VerifyAccess();

      IntPtr result_buffer;
      int result = m_libvlc_media_get_tracks_info(p_md, out result_buffer);
      if(result < 0)
      {
        tracks = null;
        return result;
      }

      IntPtr buffer = result_buffer;
      tracks = new libvlc_media_track_info_t[result];
      for(int i = 0; i < tracks.Length; i++)
      {
        tracks[i] = (libvlc_media_track_info_t)Marshal.PtrToStructure(buffer, typeof(libvlc_media_track_info_t));
        buffer += Marshal.SizeOf(typeof(libvlc_media_track_info_t));
      }

      libvlc_free(result_buffer);

      return result;
    }