[FFmpeg-devel] [PATCH] avcodec/aacenc: set pce value by options pce

Hendrik Leppkes h.leppkes at gmail.com
Fri Nov 2 12:14:33 EET 2018


On Fri, Nov 2, 2018 at 11:13 AM Hendrik Leppkes <h.leppkes at gmail.com> wrote:
>
> On Fri, Nov 2, 2018 at 10:17 AM Steven Liu <lq at chinaffmpeg.org> wrote:
> >
> > fix ticket: 7504
> >
> > Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
> > ---
> >  libavcodec/aacenc.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
> > index 4d0abb107f..26175bdb39 100644
> > --- a/libavcodec/aacenc.c
> > +++ b/libavcodec/aacenc.c
> > @@ -973,7 +973,7 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
> >      /* Channel map and unspecified bitrate guessing */
> >      s->channels = avctx->channels;
> >
> > -    s->needs_pce = 1;
> > +    s->needs_pce = s->options.pce;
> >      for (i = 0; i < FF_ARRAY_ELEMS(aac_normal_chan_layouts); i++) {
> >          if (avctx->channel_layout == aac_normal_chan_layouts[i]) {
> >              s->needs_pce = s->options.pce;
>
> This doesn't seem correct. PCE should be used if you feed the encode a
> channel layout thats not supported without PCE - and the loop just
> below your changed line will turn PCE off (or rather defer to the user
> option) if a layout is used that doesn't need PCE.
> If you just blindly turn PCE off, you'll cause  endless regressions
> for uncommon channel layouts.
>

What I forgot to say, the actual problem with HLS is that it doesn't
deal properly with PCEs. The solution is not to turn off PCEs, but to
actually fix the ADTS muxer to properly handle PCE.

- Hendrik


More information about the ffmpeg-devel mailing list