[vlc-devel] [PATCH] Open Sound Control support using liblo

Nicholas J Humfrey njh at aelius.com
Mon Dec 22 01:11:10 CET 2008


Rémi, thank you very much for going through my code so thoroughly.

I have made a few changes and improvements to the patch and uploaded  
it to the same location:
http://www.aelius.com/njh/tmp/vlc-git+liblo.patch

However there are still a couple of things to resolve.



> 1/ "char* psz_from = lo_address_get_url(lo_message_get_source(msg));"
> In the documentation you have:
> "char* lo_address_get_url( lo_address a )
>   Return a URL representing an OSC address.
>   Returned value must be free'd."
> So your code leaks memory.

Oops, sorry. I have fixed that now.


> 2/ "static vlc_object_t *osc_global_this;"
> I don't like the use of a static variable. If you can fix this ?

I don't like it either! Meant to ask when I submitted the patch what  
the best way round that is. The problem is that the ErrorHandler  
callback doesn't doesn't have a user_data parameter, so there is no  
way to pass a vlc_object to the msg_Err() function. Suggestions?


> 3/ "psz_port = var_CreateGetString( p_intf, "osc-port" );
>     if (strlen(psz_port) == 0)"
>
> In case of a problem, var_CreateGetString can return NULL, so strlen  
> can
> segfault here. "if( psz_port && *psz_port == '\0' )" may be better.

Thanks, changed applied.


> 4/ "lo_server_recv_noblock( p_sys->p_server, i_poll_delay );"
> If you can wait properly that's better.

I am working on getting a new function added to liblo to make this  
possible...



nick.

>
> On 14 Dec 2008, at 01:08, Nicholas J Humfrey wrote:
>
>> Hello,
>>
>> I have written a patch against git-master which adds limited OSC  
>> support to VLC:
>> http://www.aelius.com/njh/tmp/vlc-git+liblo.patch
>>
>> I have also added some documentation to the wiki:
>> http://wiki.videolan.org/Documentation:Modules/osc
>>
>>
>> OSC is an asynchronous protocol and there is still no standard way  
>> of implementing replies to queries. So I chose to implement a small  
>> set of messages that do not need two way communication:
>>
>> /deck/play
>> /deck/pause
>> /deck/stop
>> /deck/eject
>> /deck/load (s)
>>
>>
>> nick.
>>
>



More information about the vlc-devel mailing list