Difference between revisions of "Talk:Main Page"

From VideoLAN Wiki
Jump to navigation Jump to search
Line 28: Line 28:
 
---------------
 
---------------
  
<nowiki>static extern VlcError playlist_AddExt(
+
<pre>
 +
static extern VlcError playlist_AddExt(
 
             IntPtr p_playlist,  
 
             IntPtr p_playlist,  
 
             [MarshalAs(UnmanagedType.CustomMarshaler,MarshalTypeRef=typeof(UTF8Marshaler))] String mrl,  
 
             [MarshalAs(UnmanagedType.CustomMarshaler,MarshalTypeRef=typeof(UTF8Marshaler))] String mrl,  
Line 36: Line 37:
 
             Int64 mtime_t,  
 
             Int64 mtime_t,  
 
             [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(UTF8Marshaler))] string[] Options,
 
             [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(UTF8Marshaler))] string[] Options,
    int OptionsCount);</nowiki>
+
    int OptionsCount
 
+
);
 +
</pre>
  
  

Revision as of 21:21, 31 October 2008

Ticket #156 (closed defect: fixed) Is restarting VLC the fix

Is this fixed or is restarting VLC the fix? I am sending HD streams and after about 1 hour to 2 hours the CPU begins to spike at specific intervals corrupting the multicast stream that I am sending. I have to stop and restart VLC 0.8.5 to recover.

"VLC on VTHR leaks memory (see videolan@vthr:prod/vlc.sh) while doing intensive TS/UDP multicast streaming input/output.

A restart is needed after some time. "

Hmmm... I don't know, try both or something. The thing 02:06, 19 September 2006 (CEST)

Link to Developer's Site is broken

Please replace the current link to the developer's site (located in the to right corner) with this one http://wiki.videolan.org/Developers_Corner.

Cheers, --Materthron 14:59, 19 December 2007 (CET)

done.

-- Need to brush up the EN entries on the main page. How do I do that? PRedditt

".Net Interface to VLC" marshals strings falsely

".Net Interface to VLC" marshals strings falsely. For ex,playlist_AddExt, can not add a file to playlist if the path/filename contains a non-english char such as ğ,ü,ş,i,ö,ç etc. More correct approach can be like below:


NativeLibVlc.cs


static extern VlcError playlist_AddExt(
             IntPtr p_playlist, 
             [MarshalAs(UnmanagedType.CustomMarshaler,MarshalTypeRef=typeof(UTF8Marshaler))] String mrl, 
             [MarshalAs(UnmanagedType.CustomMarshaler,MarshalTypeRef=typeof(UTF8Marshaler))] String mrlDuplicate, 
             Mode mode,
             Int32 pos, 
             Int64 mtime_t, 
             [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(UTF8Marshaler))] string[] Options,
	     int OptionsCount
);


   class UTF8Marshaler : ICustomMarshaler
   {
       static UTF8Marshaler _MyCustomMarshaler = null;
       public static ICustomMarshaler GetInstance(string Cookie)
       {
           if (_MyCustomMarshaler == null)
           {
               _MyCustomMarshaler = new UTF8Marshaler();
           }
           return _MyCustomMarshaler;
       }
       public void CleanUpManagedData(object ManagedObj)
       {
       }
       public void CleanUpNativeData(IntPtr pNativeData)
       {
       }
       public int GetNativeDataSize()
       {
           return -1;
       }
       public IntPtr MarshalManagedToNative(object ManagedObj)
       {
           if (ManagedObj is string)
           {
               unsafe
               {
                   byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes((string)ManagedObj);
                   fixed (void* ptr = &buf[0])
                   {
                       return new IntPtr(ptr);
                   }
               }
           }
           if (ManagedObj is string[]){
               unsafe
               {
                   string[] array = (string[])ManagedObj;
                   IntPtr[] buf = new IntPtr[array.Length];
                   for (int i = 0; i < buf.Length; i++)
                   {
                       byte[] b = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(array[i]);
                       fixed(void *p=&b[0]){
                           buf[i] = (IntPtr)p;
                       }
                   }
                   fixed (void* ptr = &buf[0])
                   {
                       return new IntPtr(ptr);
                   }
               }
           }
           throw new Exception("UTF8Marshaler can only be used for \"string\" or \"string[]\". ");
       }
       public object MarshalNativeToManaged(IntPtr pNativeData)
       {
           return null;
       }
   }