Hello,<br><br><div class="gmail_quote">On 6 September 2012 08:46, Rémi Denis-Courmont <span dir="ltr"><<a href="mailto:remi@remlab.net" target="_blank">remi@remlab.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Le lundi 3 septembre 2012 19:52:18, Mark Lee a écrit :</blockquote><div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">>+int libvlc_media_player_record_stop( libvlc_media_player_t *p_mi )<br>
<div><div class="h5">
> +{<br>
> +    input_thread_t *p_input_thread;<br>
> +<br>
> +    p_input_thread = libvlc_get_input_thread( p_mi );<br>
> +    if( !p_input_thread )<br>
> +        return -1;<br>
> +<br>
> +    var_SetBool( p_input_thread, "record", false );<br>
> +<br>
> +    vlc_object_release( p_input_thread );<br>
> +    return 0;<br>
> +}<br>
<br>
</div></div>I'm not sure it makes sense to have a return value here. How is the caller<br>
supposed to deal with a failure?<br></blockquote><div><br>It was just an indication, trying to be consistent with other methods. Trivial to remove it of course.<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">
> diff --git a/modules/stream_out/record.c b/modules/stream_out/record.c<br>
> index de6d32e..40ddfea 100644<br>
> --- a/modules/stream_out/record.c<br>
> +++ b/modules/stream_out/record.c<br>
</div><div class="im">> @@ -172,6 +176,19 @@ static void Close( vlc_object_t * p_this )<br>
>      if( p_sys->p_out )<br>
>          sout_StreamChainDelete( p_sys->p_out, p_sys->p_out );<br>
><br>
> +    if( p_sys->psz_record_file ) {<br>
> +        for( vlc_object_t *p_mp = p_stream->p_parent; p_mp; p_mp =<br>
> p_mp->p_parent )<br>
> +        {<br>
> +            if( var_Type( p_mp, "recording-finished" ) )<br>
> +            {<br>
> +                var_SetString( p_mp, "recording-finished",<br>
> p_sys->psz_record_file ); +                break;<br>
> +            }<br>
> +        }<br>
> +<br>
> +        free( p_sys->psz_record_file );<br>
> +    }<br>
<br>
</div>Oh? That actually works? I thought the parent is the stream output instance<br>
(or the upstream stream out plugin) rather than the input thread...<br></blockquote><div><br>It does work. You eventually (IIRC three iterations) get back to the libvlc media player instance.<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


That's not really the recommended way to provide callbacks.<br></blockquote><div><br>OK, but I can't see any other way to link up the sout with the media player so the media player knows the recording is finished. I couldn't find a way for the media player to add a callback to the sout - i.e. I found no route to get to the sout reference from the libvlc media player.<br>
<br>There's also a minor code-style error I spotted, which I would address with a new patch, but maybe I'm now at a dead end with this.<br></div></div>