1. 12 Oct, 2019 1 commit
  2. 07 Oct, 2019 1 commit
    • Andreas Rheinhardt's avatar
      avcodec/flac_parser: Fix off-by-one error · e5e5be4c
      Andreas Rheinhardt authored
      The flac parser uses a fifo to buffer its data. Consequently, when
      searching for sync codes of flac packets, one needs to take care of
      the possibility of wraparound. This is done by using an optimized start
      code search that works on each of the continuous buffers separately and
      by explicitly checking whether the last pre-wrap byte and the first
      post-wrap byte constitute a valid sync code.
      
      Moreover, the last MAX_FRAME_HEADER_SIZE - 1 bytes ought not to be searched
      for (the start of) a sync code because a header that might be found in this
      region might not be completely available. These bytes ought to be searched
      lateron when more data is available or when flushing.
      
      Unfortunately there was an off-by-one error in the calculation of the
      length to search of the post-wrap buffer: It was too large, because the
      calculation was based on the amount of bytes available in the fifo from
      the last pre-wrap byte onwards. This meant that a header might be
      parsed twice (once prematurely and once regularly when more data is
      available); it could also mean that an invalid header will be treated as
      valid (namely if the length of said invalid header is
      MAX_FRAME_HEADER_SIZE and the invalid byte that will be treated as the
      last byte of this potential header happens to be the right CRC-8).
      
      Should a header be parsed twice, the second instance will be the best child
      of the first instance; the first instance's score will be
      FLAC_HEADER_BASE_SCORE - FLAC_HEADER_CHANGED_PENALTY ( = 3) higher than
      the second instance's score. So the frame belonging to the first
      instance will be output and it will be done as a zero length frame (the
      difference of the header's offset and the child's offset). This has
      serious consequences when flushing, as returning a zero length buffer
      signals to the caller that no more data will be output; consequently the
      last frames not yet output will be dropped.
      
      Furthermore, a "sample/frame number mismatch in adjacent frames" warning
      got output when returning the zero-length frame belonging to the first
      header, because the child's sample/frame number of course didn't match
      the expected sample frame/number given its parent.
      
      filter/hdcd-mix.flac from the FATE-suite was affected by this (the last
      frame was omitted) which is the reason why several FATE-tests needed to
      be updated.
      
      Fixes ticket #5937.
      Signed-off-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
      e5e5be4c
  3. 04 Oct, 2019 1 commit
  4. 26 Sep, 2019 2 commits
  5. 25 Sep, 2019 1 commit
  6. 20 Sep, 2019 1 commit
  7. 19 Sep, 2019 3 commits
  8. 18 Sep, 2019 1 commit
  9. 11 Sep, 2019 2 commits
  10. 09 Sep, 2019 1 commit
  11. 08 Sep, 2019 1 commit
    • Calvin Walton's avatar
      lavfi/concat: allow to support inputs with different frame rates · 3ad5d4df
      Calvin Walton authored
      Right now, the concat filter does not set the frame_rate value on any of
      the out links. As a result, the default ffmpeg behaviour kicks in - to
      copy the framerate from the first input to the outputs.
      
      If a later input is higher framerate, this results in dropped frames; if
      a later input is lower framerate it might cause judder.
      
      This patch checks if all of the video inputs have the same framerate, and
      if not it sets the out link to use '1/0' as the frame rate, the value
      meaning "unknown/vfr".
      
      A test is added to verify the VFR behaviour. The existing test for CFR
      behaviour passes unchanged.
      3ad5d4df
  12. 05 Sep, 2019 1 commit
  13. 30 Aug, 2019 2 commits
  14. 29 Aug, 2019 1 commit
  15. 28 Aug, 2019 1 commit
  16. 27 Aug, 2019 1 commit
  17. 24 Aug, 2019 1 commit
  18. 23 Aug, 2019 1 commit
    • Marton Balint's avatar
      avformat/mpegtsenc: get rid of packet counting for sdt/pat/pmt · 2fb55089
      Marton Balint authored
      The packet counting based approach caused excessive sdt/pat/pmt for VBR, so
      let's use a timestamp based approach instead similar to how we emit PCRs.
      SDT/PAT/PMT period should be consistent for both VBR and CBR from now on.
      
      Also change the type of sdt_period and pat_period to AV_OPT_TYPE_DURATION so no
      floating point math is necessary.
      
      Fixes ticket #3714.
      Signed-off-by: 's avatarMarton Balint <cus@passwd.hu>
      2fb55089
  19. 19 Aug, 2019 1 commit
    • Guo, Yejun's avatar
      FATE/dnn: let fate/dnn tests depend on ffmpeg static libraries · d0fa1a58
      Guo, Yejun authored
      background:
      DNN (deep neural network) is a sub module of libavfilter, and FATE/dnn
      is unit test for the DNN module, one unit test for one dnn layer.
      The unit tests are not based on the APIs exported by libavfilter,
      they just directly call into the functions within DNN submodule.
      
      There is an issue when run the following command:
      build$ ../ffmpeg/configure --disable-static --enable-shared
      make
      make fate-dnn-layer-pad
      
      And part of error message:
      tests/dnn/dnn-layer-pad-test.o: In function `test_with_mode_symmetric':
      /work/media/ffmpeg/build/src/tests/dnn/dnn-layer-pad-test.c:73: undefined reference to `dnn_execute_layer_pad'
      
      The root cause is that function dnn_execute_layer_pad is a LOCAL symbol
      in libavfilter.so, and so the linker could not find it when build dnn-layer-pad-test.
      To check it, just run: readelf -s libavfilter/libavfilter.so | grep dnn
      
      So, add dependency in fate/dnn Makefile with ffmpeg static libraries.
      This is the same method used in fate/checkasm
      Signed-off-by: 's avatarGuo, Yejun <yejun.guo@intel.com>
      Signed-off-by: 's avatarPedro Arthur <bygrandao@gmail.com>
      d0fa1a58
  20. 17 Aug, 2019 2 commits
  21. 13 Aug, 2019 1 commit
  22. 05 Aug, 2019 1 commit
  23. 01 Aug, 2019 1 commit
  24. 29 Jul, 2019 1 commit
  25. 25 Jul, 2019 1 commit
  26. 22 Jul, 2019 2 commits
    • Limin Wang's avatar
      avformat/f_select: add support for more pixel formats for scene change score calculations · b696caba
      Limin Wang authored
      This avoids automatic conversions to rgb if scene change score is used in the expression.
      
      Below is the tested results for the new added pixel format without autoscale to rgb24:
      1. AV_PIX_FMT_YUVJ420P
      time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
      "sws_flags=+accurate_rnd+bitexact;movie=../fate-suite/svq3/Vertical400kbit.sorenson3.mov,select=gt(scene\,.25)"
      
      master:
      pkt_pts=1620|tag:lavfi.scene_score=1.000000
      pkt_pts=4140|tag:lavfi.scene_score=0.875036
      pkt_pts=5800|tag:lavfi.scene_score=1.000000
      pkt_pts=6720|tag:lavfi.scene_score=0.461625
      pkt_pts=8160|tag:lavfi.scene_score=1.000000
      pkt_pts=9760|tag:lavfi.scene_score=1.000000
      pkt_pts=14080|tag:lavfi.scene_score=0.838916
      pkt_pts=15700|tag:lavfi.scene_score=1.000000
      pkt_pts=18500|tag:lavfi.scene_score=0.474948
      pkt_pts=20040|tag:lavfi.scene_score=0.379700
      pkt_pts=21760|tag:lavfi.scene_score=1.000000
      ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  0.71s user 0.01s system 99% cpu 0.721 total
      
      patch applied:
      pkt_pts=1620|tag:lavfi.scene_score=1.000000
      pkt_pts=4140|tag:lavfi.scene_score=0.668643
      pkt_pts=5800|tag:lavfi.scene_score=0.996721
      pkt_pts=6720|tag:lavfi.scene_score=0.357390
      pkt_pts=8160|tag:lavfi.scene_score=0.886268
      pkt_pts=9760|tag:lavfi.scene_score=0.926219
      pkt_pts=14080|tag:lavfi.scene_score=0.650033
      pkt_pts=15700|tag:lavfi.scene_score=1.000000
      pkt_pts=18500|tag:lavfi.scene_score=0.316402
      pkt_pts=20040|tag:lavfi.scene_score=0.269509
      pkt_pts=21760|tag:lavfi.scene_score=1.000000
      ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  0.19s user 0.01s system 81% cpu 0.240 total
      
      2. AV_PIX_FMT_YUV420P
      time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
      "sws_flags=+accurate_rnd+bitexact;movie=../Passengers_Breakfast_1080-sdr.mkv,select=gt(scene\,.2)"
      master:
      pkt_pts=3587|tag:lavfi.scene_score=0.462364
      pkt_pts=4838|tag:lavfi.scene_score=0.419519
      pkt_pts=6548|tag:lavfi.scene_score=0.397027
      pkt_pts=9968|tag:lavfi.scene_score=0.419245
      pkt_pts=12471|tag:lavfi.scene_score=0.413084
      pkt_pts=16225|tag:lavfi.scene_score=0.506370
      pkt_pts=19645|tag:lavfi.scene_score=0.507538
      pkt_pts=22314|tag:lavfi.scene_score=0.504319
      pkt_pts=24817|tag:lavfi.scene_score=0.417544
      pkt_pts=25651|tag:lavfi.scene_score=0.413916
      pkt_pts=26652|tag:lavfi.scene_score=0.487707
      18.58s user 0.07s system 99% cpu 18.663 total
      
      patch applied:
      pkt_pts=3587|tag:lavfi.scene_score=0.272173
      pkt_pts=4838|tag:lavfi.scene_score=0.247841
      pkt_pts=6548|tag:lavfi.scene_score=0.233134
      pkt_pts=9968|tag:lavfi.scene_score=0.247253
      pkt_pts=12471|tag:lavfi.scene_score=0.244129
      pkt_pts=16225|tag:lavfi.scene_score=0.302531
      pkt_pts=19645|tag:lavfi.scene_score=0.303560
      pkt_pts=22314|tag:lavfi.scene_score=0.301861
      pkt_pts=24817|tag:lavfi.scene_score=0.249331
      pkt_pts=25651|tag:lavfi.scene_score=0.247096
      pkt_pts=26652|tag:lavfi.scene_score=0.287728
      10.90s user 0.06s system 99% cpu 10.967 total
      
      3. AV_PIX_FMT_YUV422P
      
      time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
      "sws_flags=+accurate_rnd+bitexact;movie=../Passengers_Breakfast_1080-sdr.mkv,format=yuv422p,select=gt(scene\,.2)"
      master:
      
      patched applied:
      pkt_pts=3587|tag:lavfi.scene_score=0.224017
      pkt_pts=4838|tag:lavfi.scene_score=0.204225
      pkt_pts=9968|tag:lavfi.scene_score=0.204636
      pkt_pts=12471|tag:lavfi.scene_score=0.202772
      pkt_pts=16225|tag:lavfi.scene_score=0.248765
      pkt_pts=19645|tag:lavfi.scene_score=0.250144
      pkt_pts=22314|tag:lavfi.scene_score=0.248802
      pkt_pts=24817|tag:lavfi.scene_score=0.208362
      pkt_pts=25651|tag:lavfi.scene_score=0.205777
      pkt_pts=26652|tag:lavfi.scene_score=0.230742
      
      4.  AV_PIX_FMT_YUV420P10
      time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
      "sws_flags=+accurate_rnd+bitexact;movie=../Passengers_Breakfast_4k.mkv,select=gt(scene\,.2)"
      
      master:
      pkt_pts=3587|tag:lavfi.scene_score=0.269890
      pkt_pts=4838|tag:lavfi.scene_score=0.248957
      pkt_pts=6548|tag:lavfi.scene_score=0.234619
      pkt_pts=9969|tag:lavfi.scene_score=0.224912
      pkt_pts=12471|tag:lavfi.scene_score=0.225158
      pkt_pts=16225|tag:lavfi.scene_score=0.289809
      pkt_pts=19645|tag:lavfi.scene_score=0.285013
      pkt_pts=22314|tag:lavfi.scene_score=0.280295
      pkt_pts=24817|tag:lavfi.scene_score=0.206486
      pkt_pts=25651|tag:lavfi.scene_score=0.208556
      pkt_pts=26652|tag:lavfi.scene_score=0.249577
      ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  76.03s user 0.22s system 99% cpu 1:16.27 total
      
      patch applied
      pkt_pts=3587|tag:lavfi.scene_score=0.269890
      pkt_pts=4838|tag:lavfi.scene_score=0.248957
      pkt_pts=6548|tag:lavfi.scene_score=0.234619
      pkt_pts=9969|tag:lavfi.scene_score=0.224912
      pkt_pts=12471|tag:lavfi.scene_score=0.225158
      pkt_pts=16225|tag:lavfi.scene_score=0.289809
      pkt_pts=19645|tag:lavfi.scene_score=0.285013
      pkt_pts=22314|tag:lavfi.scene_score=0.280295
      pkt_pts=24817|tag:lavfi.scene_score=0.206486
      pkt_pts=25651|tag:lavfi.scene_score=0.208556
      pkt_pts=26652|tag:lavfi.scene_score=0.249577
      ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  50.27s user 0.20s system 99% cpu 50.476 total
      
      5. AV_PIX_FMT_RGBA, AV_PIX_FMT_ABGR, AV_PIX_FMT_BGRA, AV_PIX_FMT_GRAY8
      are tested by format= with the fate sample: Vertical400kbit.sorenson3.mov like below:
      time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
      "sws_flags=+accurate_rnd+bitexact;movie=../fate-suite/svq3/Vertical400kbit.sorenson3.mov,format=rgba,select=gt(scene\,.25)"
      
      patch applied:
      pkt_pts=1620|tag:lavfi.scene_score=1.000000
      pkt_pts=4140|tag:lavfi.scene_score=0.656277
      pkt_pts=5800|tag:lavfi.scene_score=1.000000
      pkt_pts=6720|tag:lavfi.scene_score=0.346218
      pkt_pts=8160|tag:lavfi.scene_score=0.987686
      pkt_pts=9760|tag:lavfi.scene_score=1.000000
      pkt_pts=14080|tag:lavfi.scene_score=0.629187
      pkt_pts=15700|tag:lavfi.scene_score=1.000000
      pkt_pts=18500|tag:lavfi.scene_score=0.356211
      pkt_pts=20040|tag:lavfi.scene_score=0.284775
      pkt_pts=21760|tag:lavfi.scene_score=1.000000
      
      6. AV_PIX_FMT_YUVJ422P
      time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
      "sws_flags=+accurate_rnd+bitexact;movie=../fate-suite/svq3/Vertical400kbit.sorenson3.mov,format=yuvj422p,select=gt(scene\,.25)"
      
      patch applied:
      pkt_pts=1620|tag:lavfi.scene_score=0.838281
      pkt_pts=4140|tag:lavfi.scene_score=0.541382
      pkt_pts=5800|tag:lavfi.scene_score=0.780588
      pkt_pts=6720|tag:lavfi.scene_score=0.298274
      pkt_pts=8160|tag:lavfi.scene_score=0.699106
      pkt_pts=9760|tag:lavfi.scene_score=0.730136
      pkt_pts=14080|tag:lavfi.scene_score=0.537742
      pkt_pts=15700|tag:lavfi.scene_score=0.811946
      pkt_pts=18500|tag:lavfi.scene_score=0.263382
      pkt_pts=21760|tag:lavfi.scene_score=0.880773
      Reviewed-by: 's avatarMarton Balint <cus@passwd.hu>
      Signed-off-by: 's avatarLimin Wang <lance.lmwang@gmail.com>
      b696caba
    • Limin Wang's avatar
      fate: change the scenecut fate threshold · d75c7dd4
      Limin Wang authored
      why change .4 to .25, it's for:
      one scenecut(pkt_pts=20040) isn't detected by 0.4 threshold
      
      why not change to 0.3 instead of 0.25:
      it will miss the scenecut(pkt_pts=20040) after applying the next
      patch which enables yuvj420
      
      for fate testing, it's better to catch all scenecut scenes.
      Reviewed-by: 's avatarMarton Balint <cus@passwd.hu>
      Signed-off-by: 's avatarLimin Wang <lance.lmwang@gmail.com>
      d75c7dd4
  27. 15 Jul, 2019 1 commit
  28. 12 Jul, 2019 1 commit
  29. 11 Jul, 2019 2 commits
  30. 07 Jul, 2019 1 commit
  31. 12 Jun, 2019 2 commits