1. 23 Oct, 2021 2 commits
  2. 22 Oct, 2021 4 commits
  3. 21 Oct, 2021 10 commits
  4. 20 Oct, 2021 8 commits
  5. 19 Oct, 2021 5 commits
  6. 18 Oct, 2021 11 commits
    • Paul B Mahol's avatar
      f7ddf4fc
    • Mattias Wadman's avatar
      libavcodec/flac_parser: Validate subframe zero bit and type · 49597300
      Mattias Wadman authored
      Reduces the risk of finding false frames that happens to have valid values and CRC.
      
      Fixes ticket #9185 ffmpeg flac decoder incorrectly finds junk frame
      https://trac.ffmpeg.org/ticket/9185
      49597300
    • Paul B Mahol's avatar
      374d6469
    • Paul B Mahol's avatar
      025ae145
    • Paul B Mahol's avatar
      374f2ac3
    • James Almer's avatar
      avcodec/h264_picture: don't assume Film Grain Params side data will be present · 762e18da
      James Almer authored
      If a decoding error happens before frame side data is allocated, this assert may be
      triggered. And since applying film grain is not enforced (we just warn it wasn't
      applied and move on), we can just do that in such scenarios.
      
      Fixes: Assertion failure
      Fixes: clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_H264_fuzzer-5528650032742400
      Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
      762e18da
    • Brad Hards's avatar
      libavcodec/libx264: add user data unregistered SEI encoding · 7c08cad2
      Brad Hards authored
      MISB ST 0604 and ST 2101 require user data unregistered SEI messages
      (precision timestamps and sensor identifiers) to be included. That
      currently isn't supported for libx264. This patch adds support
      for user data unregistered SEI messages in accordance with ISO/IEC
      14496-10:2020(E) section D.1.7 (syntax) and D.2.7 (semantics).
      
      This code is based on a similar change for libx265 (commit
      1f585030).
      Signed-off-by: 's avatarDerek Buitenhuis <derek.buitenhuis@gmail.com>
      7c08cad2
    • Martin Storsjö's avatar
      seek: Fix crashes in ff_seek_frame_binary if built with latest Clang 14 · ab792634
      Martin Storsjö authored
      Passing an uninitialized variable as argument to a function is
      undefined behaviour (UB). The compiler can assume that UB does not
      happen.
      
      Hence, the compiler can assume that the variables are never
      uninitialized when passed as argument, which means that the codepaths
      that initializes them must be taken.
      
      In ff_seek_frame_binary, this means that the compiler can assume
      that the codepaths that initialize pos_min and pos_max are taken,
      which means that the conditions "if (sti->index_entries)" and
      "if (index >= 0)" can be optimized out.
      
      Current Clang git versions (upcoming Clang 14) enabled an optimization
      that does this, which broke the current version of this function
      (which intentionally left the variables uninitialized, but silencing
      warnings about being uninitialized). See [1] for discussion on
      the matter.
      
      [1] https://reviews.llvm.org/D105169#3069555Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
      ab792634
    • Martin Storsjö's avatar
      aarch64: h264qpel: Do vertical filtering without transposing · fd3bd5c4
      Martin Storsjö authored
      This gives rather big speedups on these functions:
      
      Before:
      put_h264_qpel_8_mc01_8_neon:     241.0   131.5   138.7
      put_h264_qpel_8_mc02_8_neon:     214.7   121.2   127.5
      put_h264_qpel_8_mc03_8_neon:     242.5   131.2   135.7
      put_h264_qpel_8_mc11_8_neon:     421.2   218.7   251.0
      put_h264_qpel_8_mc12_8_neon:     878.0   509.5   537.5
      put_h264_qpel_8_mc13_8_neon:     423.7   217.0   252.0
      put_h264_qpel_8_mc21_8_neon:     858.2   479.5   514.0
      put_h264_qpel_8_mc22_8_neon:     649.7   385.2   403.0
      put_h264_qpel_8_mc23_8_neon:     860.2   476.5   517.7
      put_h264_qpel_8_mc31_8_neon:     437.2   219.5   252.5
      put_h264_qpel_8_mc32_8_neon:     892.5   510.5   546.0
      put_h264_qpel_8_mc33_8_neon:     438.2   218.5   257.0
      put_h264_qpel_16_mc01_8_neon:    944.2   509.7   546.7
      put_h264_qpel_16_mc02_8_neon:    878.7   469.5   509.7
      put_h264_qpel_16_mc03_8_neon:    945.7   510.7   557.0
      put_h264_qpel_16_mc11_8_neon:   1663.2   858.5   979.5
      put_h264_qpel_16_mc12_8_neon:   3510.2  2027.7  2112.7
      put_h264_qpel_16_mc13_8_neon:   1664.7   857.5   980.5
      put_h264_qpel_16_mc21_8_neon:   3366.2  1928.5  2030.5
      put_h264_qpel_16_mc22_8_neon:   2584.7  1514.7  1590.2
      put_h264_qpel_16_mc23_8_neon:   3367.7  1927.7  2035.0
      put_h264_qpel_16_mc31_8_neon:   1716.7   849.7   997.0
      put_h264_qpel_16_mc32_8_neon:   3564.0  2044.2  3835.2
      put_h264_qpel_16_mc33_8_neon:   1717.7   863.0   989.5
      
      After:
      put_h264_qpel_8_mc01_8_neon:     136.0    73.7    76.0
      put_h264_qpel_8_mc02_8_neon:     108.7    65.0    64.0
      put_h264_qpel_8_mc03_8_neon:     137.5    72.7    73.0
      put_h264_qpel_8_mc11_8_neon:     316.2   159.0   188.5
      put_h264_qpel_8_mc12_8_neon:     653.0   375.5   384.7
      put_h264_qpel_8_mc13_8_neon:     318.7   165.5   189.5
      put_h264_qpel_8_mc21_8_neon:     739.2   385.7   432.5
      put_h264_qpel_8_mc22_8_neon:     530.7   295.5   309.5
      put_h264_qpel_8_mc23_8_neon:     741.2   393.7   421.0
      put_h264_qpel_8_mc31_8_neon:     332.2   162.5   190.0
      put_h264_qpel_8_mc32_8_neon:     667.5   378.2   390.5
      put_h264_qpel_8_mc33_8_neon:     332.7   166.5   195.5
      put_h264_qpel_16_mc01_8_neon:    524.2   285.2   294.0
      put_h264_qpel_16_mc02_8_neon:    454.7   252.2   250.2
      put_h264_qpel_16_mc03_8_neon:    525.7   286.0   283.0
      put_h264_qpel_16_mc11_8_neon:   1243.2   630.7   726.7
      put_h264_qpel_16_mc12_8_neon:   2610.2  1479.7  1481.2
      put_h264_qpel_16_mc13_8_neon:   1250.5   631.7   727.7
      put_h264_qpel_16_mc21_8_neon:   2890.2  1571.2  1679.7
      put_h264_qpel_16_mc22_8_neon:   2108.7  1177.5  1223.5
      put_h264_qpel_16_mc23_8_neon:   2891.7  1578.7  1667.7
      put_h264_qpel_16_mc31_8_neon:   1296.7   630.5   752.5
      put_h264_qpel_16_mc32_8_neon:   2664.0  1483.2  1503.5
      put_h264_qpel_16_mc33_8_neon:   1297.7   632.5   747.2
      
      I.e. overall a 20%-60% reduction in runtime of these
      functions.
      Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
      fd3bd5c4
    • Martin Storsjö's avatar
      arm/aarch64: Improve scheduling in the avg form of h264_qpel · 2d5a7f6d
      Martin Storsjö authored
      Don't use the loaded registers directly, avoiding stalls on in
      order cores. Use vrhadd.u8 with q registers where easily possible.
      Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
      2d5a7f6d
    • Gyan Doshi's avatar
      d04c0050