1. 27 Oct, 2022 21 commits
  2. 26 Oct, 2022 9 commits
  3. 25 Oct, 2022 10 commits
    • J. Dekker's avatar
      lavc/aarch64: add hevc horizontal qpel/uni/bi · 9bed814e
      J. Dekker authored
      checkasm --benchmark on Ampere Altra (Neoverse N1):
      
      put_hevc_qpel_bi_h4_8_c: 170.7
      put_hevc_qpel_bi_h4_8_neon: 64.5
      put_hevc_qpel_bi_h6_8_c: 373.7
      put_hevc_qpel_bi_h6_8_neon: 130.2
      put_hevc_qpel_bi_h8_8_c: 662.0
      put_hevc_qpel_bi_h8_8_neon: 138.5
      put_hevc_qpel_bi_h12_8_c: 1529.5
      put_hevc_qpel_bi_h12_8_neon: 422.0
      put_hevc_qpel_bi_h16_8_c: 2735.5
      put_hevc_qpel_bi_h16_8_neon: 560.5
      put_hevc_qpel_bi_h24_8_c: 6015.7
      put_hevc_qpel_bi_h24_8_neon: 1636.0
      put_hevc_qpel_bi_h32_8_c: 10779.0
      put_hevc_qpel_bi_h32_8_neon: 2204.5
      put_hevc_qpel_bi_h48_8_c: 24375.0
      put_hevc_qpel_bi_h48_8_neon: 4984.0
      put_hevc_qpel_bi_h64_8_c: 42768.0
      put_hevc_qpel_bi_h64_8_neon: 8795.7
      put_hevc_qpel_h4_8_c: 149.0
      put_hevc_qpel_h4_8_neon: 55.7
      put_hevc_qpel_h6_8_c: 321.2
      put_hevc_qpel_h6_8_neon: 106.0
      put_hevc_qpel_h8_8_c: 578.7
      put_hevc_qpel_h8_8_neon: 133.2
      put_hevc_qpel_h12_8_c: 1279.0
      put_hevc_qpel_h12_8_neon: 391.7
      put_hevc_qpel_h16_8_c: 2286.2
      put_hevc_qpel_h16_8_neon: 519.7
      put_hevc_qpel_h24_8_c: 5100.7
      put_hevc_qpel_h24_8_neon: 1546.2
      put_hevc_qpel_h32_8_c: 9022.0
      put_hevc_qpel_h32_8_neon: 2060.2
      put_hevc_qpel_h48_8_c: 20293.5
      put_hevc_qpel_h48_8_neon: 4656.7
      put_hevc_qpel_h64_8_c: 36037.0
      put_hevc_qpel_h64_8_neon: 8262.7
      put_hevc_qpel_uni_h4_8_c: 162.2
      put_hevc_qpel_uni_h4_8_neon: 61.7
      put_hevc_qpel_uni_h6_8_c: 355.2
      put_hevc_qpel_uni_h6_8_neon: 114.2
      put_hevc_qpel_uni_h8_8_c: 651.0
      put_hevc_qpel_uni_h8_8_neon: 135.7
      put_hevc_qpel_uni_h12_8_c: 1412.5
      put_hevc_qpel_uni_h12_8_neon: 402.7
      put_hevc_qpel_uni_h16_8_c: 2551.0
      put_hevc_qpel_uni_h16_8_neon: 533.5
      put_hevc_qpel_uni_h24_8_c: 5782.2
      put_hevc_qpel_uni_h24_8_neon: 1578.7
      put_hevc_qpel_uni_h32_8_c: 10586.5
      put_hevc_qpel_uni_h32_8_neon: 2102.2
      put_hevc_qpel_uni_h48_8_c: 23812.0
      put_hevc_qpel_uni_h48_8_neon: 4739.5
      put_hevc_qpel_uni_h64_8_c: 42958.7
      put_hevc_qpel_uni_h64_8_neon: 8366.5
      Signed-off-by: 's avatarJ. Dekker <jdek@itanimul.li>
      9bed814e
    • Andreas Rheinhardt's avatar
      avcodec/svq1enc: Workaround GCC bug 102513 · 894191e7
      Andreas Rheinhardt authored
      GCC 11 has a bug: When it creates clones of recursive functions
      (to inline some parameters), it clones a recursive function
      eight times by default, even when this exceeds the recursion
      depth. This happens with encode_block() in libavcodec/svq1enc.c
      where a parameter level is always in the range 0..5;
      but GCC 11 also creates functions corresponding to level UINT_MAX
      and UINT_MAX - 1 (on -O3; -O2 is fine).
      
      Using such levels would produce undefined behaviour and because
      of this GCC emits bogus -Warray-bounds warnings for these clones.
      
      Since commit d08b2900, certain
      symbols that are accessed like ff_svq1_inter_multistage_vlc[level]
      are declared with hidden visibility, which allows compilers
      to bake the offset implied by level into the instructions
      if level is a compile-time constant as it is in the clones.
      Yet this leads to insane offsets for level == UINT_MAX which
      can be incompatible with the supported offset ranges of relocations.
      This happens in the small code model (the default code model for
      AArch64).
      
      This commit therefore works around this bug by disabling cloning
      recursive functions for GCC 10 and 11. GCC 10 is affected by the
      underlying bug (see
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102513), so the workaround
      also targets it, although it only produces three versions of
      encode_block(), so it does not seem to trigger the actual issue here.
      
      The issue has been mitigated in GCC 12.1 (it no longer creates clones
      for impossible values; see also commit
      1cb7fd31), so the workaround
      does not target it.
      Reported-by: 's avatarJ. Dekker <jdek@itanimul.li>
      Signed-off-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@outlook.com>
      Signed-off-by: 's avatarJ. Dekker <jdek@itanimul.li>
      894191e7
    • Anton Khirnov's avatar
      fftools/ffmpeg_demux: stop modifying OptionsContext · 7aa5ea23
      Anton Khirnov authored
      It should be input-only to this code.
      7aa5ea23
    • Anton Khirnov's avatar
      fftools/ffmpeg_mux_init: stop modifying OptionsContext.*_disable · 0d821edb
      Anton Khirnov authored
      The current code will override the *_disable fields (set by -vn/-an
      options) when creating output streams for unlabeled complex filtergraph
      outputs, in order to disable automatic mapping for the corresponding
      media type.
      
      However, this will apply not only to automatic mappings, but to manual
      ones as well, which should not happen. Avoid this by adding local
      variables that are used only for automatic mappings.
      0d821edb
    • Anton Khirnov's avatar
      fftools/ffmpeg_mux_init: move code creating streams into a new function · 69da53ad
      Anton Khirnov authored
      Makes it easy to see where all the streams are created. Will also be
      useful in the following commit.
      69da53ad
    • Anton Khirnov's avatar
      fftools/ffmpeg_mux_init: stop modifying some OptionsContext fields · 006df0b6
      Anton Khirnov authored
      Specifically recording_time and stop_time - use local variables instead.
      OptionsContext should be input-only to this code. Will allow making it
      const in future commits.
      006df0b6
    • Anton Khirnov's avatar
    • Anton Khirnov's avatar
      fftools/ffmpeg_mux_init: avoid modifying OptionsContext.chapters_input_file · aa0ce91f
      Anton Khirnov authored
      Use a local variable instead. This will allow making OptionsContext
      const in future commits.
      aa0ce91f
    • Anton Khirnov's avatar
      fftools/ffmpeg: factor out copying metadata/chapters from of_open() · 5ccc151b
      Anton Khirnov authored
      This code shares variables like OptionsContext.metadata_*_manual, so it
      makes sense to group it together.
      5ccc151b
    • Anton Khirnov's avatar
      fftools/ffmpeg_demux: log when the demuxer thread terminates · 21ef1f2c
      Anton Khirnov authored
      Similar to what is done for muxing, may be useful for debugging.
      21ef1f2c