[Libav-user] Find audio frames headers within bitstream

Vasiliy Volkov volk.vasiliy at gmail.com
Wed Nov 7 14:09:46 EET 2018


ср, 7 нояб. 2018 г. в 14:44, Paul B Mahol <onemda at gmail.com>:

> On 11/7/18, Vasiliy Volkov <volk.vasiliy at gmail.com> wrote:
> > ср, 7 нояб. 2018 г. в 14:14, Paul B Mahol <onemda at gmail.com>:
> >
> >> On 11/7/18, Vasiliy Volkov <volk.vasiliy at gmail.com> wrote:
> >> > Hi, again,
> >> >
> >> > we've encountered an issue with decoding audio streams. Sometimes
> audio
> >> > codec headers are not aligned to PES packets (we work with mpegts). So
> >> when
> >> > we try to decode such streams libav decoder fails, because he can't
> >> > find
> >> > where to start decoding process. For such task libav has parsers,
> which
> >> > need to be used for correct decoding arbitrary bitstreams: first you
> >> > find
> >> > position of header, next send to decoder. We've find that there are
> >> exists
> >> > private api for such task: libavcodec/mpegaudiodecheader.h but it's
> >> > private, and using it in our project is not very clean way, and all
> >> public
> >> > API's requires to use avio* methods which we don't like to use.
> >> >
> >> > Is there any other of private API way to find audio frames headers
> >> > positions?
> >> >
> >>
> >> What is wrong with using parsers?
> >>
> >
> > Parsers are private api and when we compile libav they are not included,
> > so we need to copy header file into our project and then access -- it's
> not
> > good way.
>
> Why they are not included when you compile FFmpeg?
>

Paul, ok, we've found why they are not included :) Not all headers take
into account in Makefile:
libavcodec/Makefile
HEADERS = ac3_parser.h                                                  \
          adts_parser.h                                                 \
          avcodec.h                                                     \
          avdct.h                                                       \
          avfft.h                                                       \
          d3d11va.h                                                     \
          dirac.h                                                       \
          dv_profile.h                                                  \
          dxva2.h                                                       \
          jni.h                                                         \
          mediacodec.h                                                  \
          qsv.h                                                         \
          vaapi.h                                                       \
          vdpau.h                                                       \
          version.h                                                     \
          videotoolbox.h                                                \
          vorbis_parser.h                                               \
          xvmc.h                                                        \

 And libavcodec/mpegaudiodecheader.h just not selected here.


> > So what is the proper way?
>
> Proper way is to have parsers included, and to have them automatically
> used.
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20181107/1ad81418/attachment.html>


More information about the Libav-user mailing list