On 01/04/16 03:22, Tim Walker wrote: > These errors neither prevent nor stop successful decoding > of the E-AC-3 stream's "core", causing avpriv_request_sample > to be called for every single frame in the bitstream. > --- > libavcodec/ac3dec.h | 2 ++ > libavcodec/eac3dec.c | 10 ++++++++-- > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/ac3dec.h b/libavcodec/ac3dec.h > index e4d443c..4c5359c 100644 > --- a/libavcodec/ac3dec.h > +++ b/libavcodec/ac3dec.h > @@ -92,6 +92,8 @@ typedef struct AC3DecodeContext { > int lfe_mix_level_exists; ///< indicates if lfemixlevcod > is specified (lfemixlevcode) > int lfe_mix_level; ///< LFE mix level index > (lfemixlevcod) > int eac3; ///< indicates if current frame > is E-AC-3 > + int eac3_frame_dependent_found; ///< bitstream has E-AC-3 > dependent frame(s) > + int eac3_subsbtreamid_found; ///< bitstream has E-AC-3 > additional substream(s) > int dolby_surround_mode; ///< dolby surround mode > (dsurmod) > int dolby_surround_ex_mode; ///< dolby surround ex mode > (dsurexmod) > int dolby_headphone_mode; ///< dolby headphone mode > (dheadphonmod) > diff --git a/libavcodec/eac3dec.c b/libavcodec/eac3dec.c > index b9d079c..fe52d27 100644 > --- a/libavcodec/eac3dec.c > +++ b/libavcodec/eac3dec.c > @@ -300,7 +300,10 @@ int ff_eac3_parse_header(AC3DecodeContext *s) > application can select from. each independent stream can also contain > dependent streams which are used to add or replace channels. */ > if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) { > - avpriv_request_sample(s->avctx, "Dependent substream decoding"); > + if (!s->eac3_frame_dependent_found) { > + s->eac3_frame_dependent_found = 1; > + avpriv_request_sample(s->avctx, "Dependent substream decoding"); > + } > return AAC_AC3_PARSE_ERROR_FRAME_TYPE; > } else if (s->frame_type == EAC3_FRAME_TYPE_RESERVED) { > av_log(s->avctx, AV_LOG_ERROR, "Reserved frame type\n"); > @@ -312,7 +315,10 @@ int ff_eac3_parse_header(AC3DecodeContext *s) > associated to an independent stream have matching substream id's. */ > if (s->substreamid) { > /* only decode substream with id=0. skip any additional substreams. > */ > - avpriv_request_sample(s->avctx, "Additional substreams"); > + if (!s->eac3_subsbtreamid_found) { > + s->eac3_subsbtreamid_found = 1; > + avpriv_request_sample(s->avctx, "Additional substreams"); > + } > return AAC_AC3_PARSE_ERROR_FRAME_TYPE; > } > >
The set looks ok. _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel