1. 09 May, 2020 4 commits
  2. 08 May, 2020 21 commits
  3. 07 May, 2020 13 commits
  4. 06 May, 2020 2 commits
    • Limin Wang's avatar
      avformat/mux: Set AV_PKT_FLAG_KEY for is_intra_only packet · 96e5e6ab
      Limin Wang authored
      The patch will make audio and subtitle packets be marked as AV_PKT_FLAG_KEY.
      
      For audio, it'll caused the audio sample to be sync sample.
      To verify ref/fate/movenc results:
      1. Get the movenc test data
      [lmwang@vpn ffmpeg]$ libavformat/tests/movenc -w && mkdir -p audio_old && mv *.mp4 audio_old_
      
      After applied the patch:
      [lmwang@vpn ffmpeg]$ make fate-movenc SAMPLES=../fate-suite
      [lmwang@vpn ffmpeg]$ libavformat/tests/movenc -w && mkdir -p audio_key && mv *.mp4 audio_key
      
      2. Get l-smash and build boxdumper
      https://github.com/l-smash/l-smash.git
      
      3. dump the box of crc change mp4 and diff -u
      [lmwang@vpn ffmpeg]$ ../l-smash/cli/boxdumper --box audio_key/non-empty-moov-no-elst.mp4  > audio_key/non-empty-moov-no-elst.log
      [lmwang@vpn ffmpeg]$ ../l-smash/cli/boxdumper --box audio_old/non-empty-moov-no-elst.mp4  > audio_old/non-empty-moov-no-elst.log
      [lmwang@vpn ffmpeg]$ diff -u audio_key/non-empty-moov-no-elst.log audio_old/non-empty-moov-no-elst.log
      -                default_sample_flags = 0x02000000
      -                    independent
      -                    sync sample
      +                default_sample_flags = 0x01010000
      +                    dependent
      +                    non-sync sample
      
      4. have checked the change of crc are caused by default_sample_flags
      non-empty-moov.mp4, non-empty-moov-elst.mp4,
      non-empty-moov-no-elst.mp4, empty-moov.mp4, delay-moov-content.mp4,
      empty-moov-second-frag.mp4, empty-moov-second-frag-discont.mp4,
      delay-moov-second-frag-discont.mp4, delay-moov-elst-second-frag.mp4
      etc
      
      5 For subtitle, it'll effect for tests/ref/fate/binsub-movtextenc and
      tests/ref/fate/sub2video, that's expecting result for the subtitle is
      marked as keyframe. Below is the checking result of binsub-movtextenc:
      
      [lmwang@vpn ffmpeg]$ ./ffmpeg -i ../fate-suite/sub/MovText_capability_tester.mp4 -map 0 -scodec mov_text -f mp4 -flags +bitexact -fflags +bitexact -movflags frag_keyframe+empty_moov audio_key/binsub-movtextenc.mp4
      [lmwang@vpn ffmpeg]$ ./ffmpeg -i ../fate-suite/sub/MovText_capability_tester.mp4 -map 0 -scodec mov_text -f mp4 -flags +bitexact -fflags +bitexact -movflags frag_keyframe+empty_moov audio_old/binsub-movtextenc.mp4
      [lmwang@vpn ffmpeg]$../l-smash/cli/boxdumper audio_key/binsub-movtextenc.mp4  > audio_key/binsub-movtextenc.log
      [lmwang@vpn ffmpeg]$../l-smash/cli/boxdumper audio_old/binsub-movtextenc.mp4  > audio_old/binsub-movtextenc.log
      [lmwang@vpn ffmpeg]$ diff -u audio_key/binsub-movtextenc.log audio_old/binsub-movtextenc.log
      .... // the key difference is the flag for sync sample
      -                flags = 0x000701
      +                flags = 0x000301
                           data-offset-present
                           sample-duration-present
                           sample-size-present
      -                    sample-flags-present
                       sample_count = 6
      -                data_offset = 188
      +                data_offset = 164
                       sample[0]
                           sample_duration = 1570000
                           sample_size = 21
      -                    sample_flags = 0x02000000
      -                        independent
      -                        sync sample
      -                        degradation_priority = 0
                       sample[1]
                           sample_duration = 510000
                           sample_size = 2
      -                    sample_flags = 0x01010000
      -                        dependent
      -                        non-sync sample
      -                        degradation_priority = 0
                       sample[2]
                           sample_duration = 1690000
                           sample_size = 9
      -                    sample_flags = 0x02000000
      -                        independent
      -                        sync sample
      -                        degradation_priority = 0
      Suggested-by: 's avatarAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
      Suggested-by: 's avatarNicolas George <george@nsup.org>
      Signed-off-by: 's avatarLimin Wang <lance.lmwang@gmail.com>
      96e5e6ab
    • Linjie Fu's avatar
      74aa3321