[Ffmpeg-devel] [PATCH] new version
Michael Niedermayer
michaelni
Wed Oct 11 02:39:50 CEST 2006
Hi
On Fri, Sep 15, 2006 at 03:23:34PM +0300, Andrew Voznytsa wrote:
> Michael Niedermayer wrote:
> > Hi
> >
> > On Thu, Sep 14, 2006 at 10:25:31PM +0300, Andrew Voznytsa wrote:
> >
> >> Michael Niedermayer wrote:
> >>
> >>> Hi
> >>>
> >>> On Thu, Sep 14, 2006 at 06:59:31PM +0300, Andrew Voznytsa wrote:
> >>>
> >>>
> >>>> Michael Niedermayer wrote:
> >>>>
> >>>>
> >>>>> wont that break amr stored in containers with a sample_rate different from
> >>>>> that?
> >>>>>
> >>>>>
> >>>>>
> >>>> As it was mentioned by Benjamin Larsson it is invalid, but as you say -
> >>>> possible.
> >>>>
> >>>> New, spears saving, patch attached. I'd notice that I need it in case
> >>>> when lavc is used without lavf. Also, for illegal use fans, it would be
> >>>> worth to change faad.c because sample_rate/channels are initialized
> >>>> using GA_DecoderSpecificInfo() (AKA extradata) instead preserving
> >>>> container values.
> >>>>
> >>>>
> >>> i think channels can be set unconditionally and
> >>> please avoid the code duplication
> >>>
> >>>
> >>>
> >> If this is so principal: according to RFC 3267 'stereophonic speech
> >> session' is possible. This RFC says that 'out-of-band signaling must be
> >> used to indicate the number of channels' . And 'Although AMR and AMR-WB
> >> codecs themselves do not support encoding of multi-channel audio content
> >> into a single bit stream, they can be used to separately encode and
> >> decode each of the individual channels'. IMO in such case number of AMR
> >> frames feed to decoder (and decoded) is equal to signaled number of
> >> channels. After decoding decoder should post process output data if
> >> required (i.e. interleave samples). Currently lavc's wrapper does not
> >> support this case. Then it would be right to check signaled number of
> >> channels and if it is 2+ return error saying that multichannel decoding
> >> not supported. Alternative way for decoding multichannel AMR would be to
> >> use a few instances of lavc's AMR decoder wrapper, but for user side it
> >> is a bit unusual use case when single track should be decoded using more
> >> than one decoder. Plus it is better to implement it once on lavc side
> >> (when required) then implementing it each time on user side.
> >>
> >> --
> >> Best regards,
> >> Andrew Voznytsa
> >>
> >>
> >
> >
> >> Index: libavcodec/amr.c
> >> ===================================================================
> >> --- libavcodec/amr.c (revision 6252)
> >> +++ libavcodec/amr.c (working copy)
> >> @@ -107,6 +107,23 @@
> >> return(MR122);
> >> }
> >>
> >> +static void amr_decode_fix_avctx(AVCodecContext * avctx)
> >> +{
> >> + const int is_amr_wb = avctx->codec_id == CODEC_ID_AMR_WB;
> >> +
> >> + if(avctx->sample_rate == 0)
> >> + {
> >> + avctx->sample_rate = 8000 * is_amr_wb;
> >> + }
> >>
> >
> > AMR_NB will end up with a sample_rate of 0 here ...
> >
> >
> > [...]
> >
> Sorry, missed. Will test it better next time.
looks ok
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
In the past you could go to a library and read, borrow or copy any book
Today you'd get arrested for mere telling someone where the library is
More information about the ffmpeg-devel
mailing list