<div dir="ltr"><div><div><div><div><div><div>Hi,<br></div>Thanks for your advice!<br><br></div>Could you tell me where I can get some documents about VLC architecture?<br></div>I am not quite clear how dmuxer is connected to packetizer and then connected to decoder.<br>
<br></div>Thank you!<br><br></div>Yupeng Chang<br></div>Dec-02-2013<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 1 December 2013 18:00, 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">On Fri, Nov 29, 2013 at 07:11:02PM +0800, Yupeng Chang wrote:<br>
> Hi Ilkka,<br>
<br>
Hi,<br>
<div class="im"><br>
> Thanks for your advice.<br>
<br>
> I did a little dig on the opus.c decoder, and I found the only thing this<br>
> decoder needs, to decode Opus raw data, is an OggOpus header.<br>
> And there is a function opus_write_header in opus_header.c, which can make<br>
> one OggOpus header for me, so I just added one header to make it work.<br>
<br>
</div>I would prefer this change to be other way around, so you change<br>
decoding function so it takes raw opus in and packetizer strips ogg<br>
header if present. Would be much cleaner for future in mind.<br>
<br>
It wouldn't be as small change, but I would prefer it that way.<br>
<div><div class="h5"><br>
> Please help to review again.<br>
> Thanks very much!<br>
<br>
> Yupeng Chang<br>
> Nov-29-2013<br>
<br>
<br>
> On 28 November 2013 20:48, Ilkka Ollakka <<a href="mailto:ileoo@videolan.org">ileoo@videolan.org</a>> wrote:<br>
<br>
<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>
<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>
> > > +<br>
> > > +    p_aout_buffer->i_nb_samples = nb_samples;<br>
> > > +    p_aout_buffer->i_pts = date_Get( &p_sys->end_date );<br>
> > > +    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>
<br>
> > --<br>
> > Ilkka Ollakka<br>
> > Everybody is somebody else's weirdo.<br>
> >                 -- Dykstra<br>
<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>
<br>
<br>
</div></div>> From f1c2ceb4f443551efff6714e055a55e3e2b502de Mon Sep 17 00:00:00 2001<br>
> From: Yupeng Chang <<a href="mailto:ypchang@gmail.com">ypchang@gmail.com</a>><br>
> Date: Thu, 28 Nov 2013 20:19:03 +0800<br>
> Subject: [PATCH 1/2] access: Enable Opus RTP.<br>
<br>
> ---<br>
>  modules/access/live555.cpp | 10 ++++++++++<br>
>  1 file changed, 10 insertions(+)<br>
<br>
> diff --git a/modules/access/live555.cpp b/modules/access/live555.cpp<br>
> index 824cdf2..84dcba8 100644<br>
> --- a/modules/access/live555.cpp<br>
> +++ b/modules/access/live555.cpp<br>
> @@ -980,6 +980,16 @@ static int SessionsSetup( demux_t *p_demux )<br>
<div class="im">>                      else<br>
>                          msg_Warn( p_demux,"Missing or unsupported vorbis header." );<br>
>                  }<br>
</div>> +                else if( !strcmp( sub->codecName(), "OPUS") )<br>
> +                {<br>
> +                    tk->fmt.i_codec = VLC_CODEC_OPUS;<br>
<div class="im">> +                    if( sub->rtpTimestampFrequency() )<br>
> +                        tk->fmt.audio.i_rate = sub->rtpTimestampFrequency();<br>
</div>> +                    {<br>
> +                        msg_Warn( p_demux, "Using 48kHz as default sample rate." );<br>
<div class="HOEnZb"><div class="h5">> +                        tk->fmt.audio.i_rate = 48000;<br>
> +                    }<br>
> +                }<br>
>              }<br>
>              else if( !strcmp( sub->mediumName(), "video" ) )<br>
>              {<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Ilkka Ollakka<br>
The good thing about standards is that there are so many to choose from.<br>
                -- Andrew S. Tanenbaum<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>