<div dir="ltr"><div><div><div><div><div><div><div><div>Hi Ilkka,<br><br></div>Thanks for your advice.<br><br></div>I did a little dig on the opus.c decoder, and I found the only thing this decoder needs, to decode Opus raw data, is an OggOpus header.<br>
</div>And there is a function opus_write_header in opus_header.c, which can make one OggOpus header for me, so I just added one header to make it work.<br><br></div>The attached files are the new patches, which can enable Opus RTP stream and enable Opus raw data decoding with minimum changes.<br>
<br></div>Please help to review again.<br></div>Thanks very much!<br><br></div>Yupeng Chang<br></div>Nov-29-2013<br><div><div><div><div><div><div><div><div><div class=""> </div></div></div></div></div></div></div></div></div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On 28 November 2013 20:48, Ilkka Ollakka <span dir="ltr"><<a href="mailto:ileoo@videolan.org" target="_blank">ileoo@videolan.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hi,<br>
<br>
Thanks for the new patch.<br>
<br>
Why not use multistream api (OggOpus uses it) ? I don't have clear idea<br>
how they differ (than that basic decoder seems to output S16N and<br>
multistream can output FL32). Maybe someone more into Opus can clarify<br>
this?<br>
<br>
On Thu, Nov 28, 2013 at 08:24:11PM +0800, Yupeng Chang wrote:<br>
> From 49da1c8c17b763cf71ee65e1b9f925ccc4e7b79f Mon Sep 17 00:00:00 2001<br>
> From: Yupeng Chang <<a href="mailto:ypchang@ambarella.com">ypchang@ambarella.com</a>><br>
> Date: Thu, 28 Nov 2013 20:19:17 +0800<br>
> Subject: [PATCH 2/2] codec: Add Opus raw decoding.<br>
<div class="im"><br>
> +    written = opus_decode(p_sys->p_raw_dec,<br>
> +                          data, size,<br>
> +                          (opus_int16*)p_aout_buffer->p_buffer,<br>
> +                          buf_size / nb_channels, 0) * nb_channels * 2;<br>
</div><div class="im">> +<br>
> +    p_aout_buffer->i_nb_samples = nb_samples;<br>
> +    p_aout_buffer->i_pts = date_Get( &p_sys->end_date );<br>
</div>> +    p_aout_buffer->i_length = written;<br>
<br>
I think it would be clearer if you would do the multiplication when you<br>
set i_lenght, not directly to opus_decode return value.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Ilkka Ollakka<br>
Everybody is somebody else's weirdo.<br>
                -- Dykstra<br>
</font></span><br>_______________________________________________<br>
vlc-devel mailing list<br>
To unsubscribe or modify your subscription options:<br>
<a href="https://mailman.videolan.org/listinfo/vlc-devel" target="_blank">https://mailman.videolan.org/listinfo/vlc-devel</a><br>
<br></blockquote></div><br></div>