Opened 3 years ago

Last modified 7 months ago

#9178 open defect

AAC -profile options missing in help since 4.3

Reported by: Mattias Wadman Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:
How to reproduce:

With ffmpeg 4.2.3:

$ ffmpeg -hide_banner -help full | grep -C 10 aac_he_v2
  -nssew             <int>        E..V..... nsse weight (from INT_MIN to INT_MAX) (default 8)
  -skip_top          <int>        .D.V..... number of macroblock rows at the top which are skipped (from INT_MIN to INT_MAX) (default 0)
  -skip_bottom       <int>        .D.V..... number of macroblock rows at the bottom which are skipped (from INT_MIN to INT_MAX) (default 0)
  -profile           <int>        E..VA.... (from INT_MIN to INT_MAX) (default unknown)
     unknown                      E..VA....
     aac_main                     E...A....
     aac_low                      E...A....
     aac_ssr                      E...A....
     aac_ltp                      E...A....
     aac_he                       E...A....
     aac_he_v2                    E...A....
     aac_ld                       E...A....
     aac_eld                      E...A....
     mpeg2_aac_low                E...A....
     mpeg2_aac_he                 E...A....
     dts                          E...A....
     dts_es                       E...A....
     dts_96_24                    E...A....
     dts_hd_hra                   E...A....
     dts_hd_ma                    E...A....
     mpeg4_sp                     E..V.....

With ffmpeg 4.3 and higher:

$ ffmpeg -hide_banner -help full | grep -C 10 aac_he_v2

I think they went missing after commit aee036cdd05499ae9dcba5b50e88f1cc02ea203e (avcodec: move aacenc profiles to profiles.h) which i guess intended them to show up as options under the aac and libfdk_aac codec but they are missing from that help also.

With ffmpeg 4.4.0:

$ ffmpeg -hide_banner -help encoder=aac
Encoder aac [AAC (Advanced Audio Coding)]:
    General capabilities: delay small
    Threading capabilities: none
    Supported sample rates: 96000 88200 64000 48000 44100 32000 24000 22050 16000 12000 11025 8000 7350
    Supported sample formats: fltp
AAC encoder AVOptions:
  -aac_coder         <int>        E...A...... Coding algorithm (from 0 to 2) (default fast)
     anmr            0            E...A...... ANMR method
     twoloop         1            E...A...... Two loop searching method
     fast            2            E...A...... Default fast search
  -aac_ms            <boolean>    E...A...... Force M/S stereo coding (default auto)
  -aac_is            <boolean>    E...A...... Intensity stereo coding (default true)
  -aac_pns           <boolean>    E...A...... Perceptual noise substitution (default true)
  -aac_tns           <boolean>    E...A...... Temporal noise shaping (default true)
  -aac_ltp           <boolean>    E...A...... Long term prediction (default false)
  -aac_pred          <boolean>    E...A...... AAC-Main prediction (default false)
  -aac_pce           <boolean>    E...A...... Forces the use of PCEs (default false)

$ ffmpeg -hide_banner -help encoder=libfdk_aac
Encoder libfdk_aac [Fraunhofer FDK AAC]:
    General capabilities: delay small
    Threading capabilities: none
    Supported sample rates: 96000 88200 64000 48000 44100 32000 24000 22050 16000 12000 11025 8000
    Supported sample formats: s16
    Supported channel layouts: mono stereo 3.0 4.0 5.0 5.1 7.1(wide) 7.1
libfdk_aac AVOptions:
  -afterburner       <int>        E...A...... Afterburner (improved quality) (from 0 to 1) (default 1)
  -eld_sbr           <int>        E...A...... Enable SBR for ELD (for SBR in other configurations, use the -profile parameter) (from 0 to 1) (default 0)
  -eld_v2            <int>        E...A...... Enable ELDv2 (LD-MPS extension for ELD stereo signals) (from 0 to 1) (default 0)
  -signaling         <int>        E...A...... SBR/PS signaling style (from -1 to 2) (default default)
     default         -1           E...A...... Choose signaling implicitly (explicit hierarchical by default, implicit if global header is disabled)
     implicit        0            E...A...... Implicit backwards compatible signaling
     explicit_sbr    1            E...A...... Explicit SBR, implicit PS signaling
     explicit_hierarchical 2            E...A...... Explicit hierarchical signaling
  -latm              <int>        E...A...... Output LATM/LOAS encapsulated data (from 0 to 1) (default 0)
  -header_period     <int>        E...A...... StreamMuxConfig and PCE repetition period (in frames) (from 0 to 65535) (default 0)
  -vbr               <int>        E...A...... VBR mode (1-5) (from 0 to 5) (default 0)

Looking at the commit history for libavcodec/profiles.h it seems like the same thing might have happened to other codec profile options:

mpeg4 82f9eb6f6c7165a404426bee8a61aac76508a177
mpeg2 dd76226842f268c7f85a125da1834e3af2413be4
av1 82b64e9bf671e37c078a4aae26b6f5c68723d7f9

Change History (3)

comment:1 by Balling, 20 months ago

Status: newopen

That is real strange, because FF_MPV_COMMON_OPTS in 82f9eb6f6c7165a404426bee8a61aac76508a177 does work.

comment:2 by Balling, 7 months ago

So no fix?

comment:3 by Mattias Wadman, 7 months ago

Hi, I can probably have a look tomorrow or so.

Took a quick peek at the code and notice one thing. The options tables with profile constants rows with unit name "avctx.profile" seems to lack a parent "profile" option (with OFFSET etc) that has unit "actx.profile". Is that a problem or will the option table be merge with the default avcodec_options somehow that has a "profile" option.

Sorry for probably using wrong terminology

Note: See TracTickets for help on using tickets.