1. 19 May, 2018 1 commit
    • Aman Gupta's avatar
      avformat/mpegts: add merge_pmt_versions option · 16b4f97b
      Aman Gupta authored
      This new optional flag makes it easier to deal with mpegts
      samples where the PMT is updated and elementary streams move
      to different PIDs in the middle of playback.
      
      Previously, new AVStreams were created per PID, and it was up
      to the user to figure out which streams had migrated to a new PID
      (by iterating over the list of AVProgram and making guesses), and
      switch seamlessly to the new AVStream during playback.
      
      Transcoding or remuxing these streams with ffmpeg on the CLI was
      also quite painful, and the user would need to extract each set
      of PIDs into a separate file and then stitch them back together.
      
      With this new option, the mpegts demuxer will automatically detect
      PMT changes and feed data from the new PID to the original AVStream
      that was created for the orignal PID. For mpegts samples with
      stream_identifier_descriptor available, the unique ID is used to
      merge PIDs together. If the stream id is not available, the demuxer
      attempts to map PIDs based on their position within the PMT.
      
      With this change, I am able to playback and transcode/remux these
      two samples which previously caused issues:
      
          https://tmm1.s3.amazonaws.com/pmt-version-change.ts
          https://kuroko.fushizen.eu/videos/pid_switch_sample.ts
      
      I also have another longer sample in which the PMT changes
      repeatedly and ES streams move to different pids three times
      during playback:
      
          https://tmm1.s3.amazonaws.com/multiple-pmt-change.ts
      
      Demuxing this sample with the new option shows several new log
      messages as the PMT changes are handled:
      
          [mpegts] detected PMT change (program=1, version=3/6, pcr_pid=0xf98/0xfb7)
          [mpegts] re-using existing video stream 0 (pid=0xf98) for new pid=0xfb7
          [mpegts] re-using existing audio stream 1 (pid=0xf99) for new pid=0xfb8
          [mpegts] re-using existing audio stream 2 (pid=0xf9a) for new pid=0xfb9
          [mpegts] detected PMT change (program=1, version=6/3, pcr_pid=0xfb7/0xf98)
          [mpegts] detected PMT change (program=1, version=3/4, pcr_pid=0xf98/0xf9b)
          [mpegts] re-using existing video stream 0 (pid=0xf98) for new pid=0xf9b
          [mpegts] re-using existing audio stream 1 (pid=0xf99) for new pid=0xf9c
          [mpegts] re-using existing audio stream 2 (pid=0xf9a) for new pid=0xf9d
          [mpegts] detected PMT change (program=1, version=4/5, pcr_pid=0xf9b/0xfa9)
          [mpegts] re-using existing video stream 0 (pid=0xf98) for new pid=0xfa9
          [mpegts] re-using existing audio stream 1 (pid=0xf99) for new pid=0xfaa
          [mpegts] re-using existing audio stream 2 (pid=0xf9a) for new pid=0xfab
          [mpegts] detected PMT change (program=1, version=5/6, pcr_pid=0xfa9/0xfb7)
      Signed-off-by: 's avatarAman Gupta <aman@tmm1.net>
      16b4f97b
  2. 18 May, 2018 1 commit
  3. 16 May, 2018 1 commit
  4. 11 May, 2018 2 commits
  5. 10 May, 2018 1 commit
    • Mark Thompson's avatar
      fate/cbs: Add an SEI test · f995aa82
      Mark Thompson authored
      The artificial sample file sei-1.h264 contains five frames (IDR P B I B)
      and the following SEI message types:
      * Buffering period
      * Picture timing
      * Pan-scan rectangle (display as 4:3)
      * User data registered, containing A/53 closed captions (captions match
        frame content, including reordering)
      * Recovery point (at the I frame)
      * Display orientation (identity transformation)
      * Mastering display (with arbitrary contents)
      * Undefined SEI type 1234 (containing ascending bytes)
      f995aa82
  6. 08 May, 2018 10 commits
  7. 05 May, 2018 3 commits
  8. 03 May, 2018 2 commits
  9. 02 May, 2018 1 commit
    • Mark Thompson's avatar
      lavc/cbs: Add tests for VP9 · ddd3a209
      Mark Thompson authored
      Uses the same mechanism as other codecs - conformance test files are
      passed through the metadata filter (which, with no options, reads the
      input and writes it back) and the output verified to match the input.
      ddd3a209
  10. 30 Apr, 2018 1 commit
  11. 28 Apr, 2018 1 commit
  12. 26 Apr, 2018 1 commit
    • Derek Buitenhuis's avatar
      mov: Properly abide by the track's media duration · 28503c5a
      Derek Buitenhuis authored
      The track's media duration from the mdhd atom takes precedence
      over both the stts and elst atom for calculating and setting
      the track's total duraion.
      
      Technically, we shouldn't be using the stts atom at all for
      calculating stream durations.
      
      This fixes incorrect stream and final packet durations on files
      with edit lists that are longer than the media duration.
      
      The FATE changes are expected, and output is more correct (the
      AAC frame is not 1028 samples).
      Signed-off-by: 's avatarDerek Buitenhuis <derek.buitenhuis@gmail.com>
      28503c5a
  13. 25 Apr, 2018 3 commits
  14. 19 Apr, 2018 1 commit
    • Jacob Trimble's avatar
      avformat/mov: Increase support for common encryption. · f7221d8e
      Jacob Trimble authored
      - Parse schm atom to get different encryption schemes.
      - Allow senc atom to appear in track fragments.
      - Allow 16-byte IVs.
      - Allow constant IVs (specified in tenc).
      - Allow only tenc to specify encryption (i.e. no senc/saiz/saio).
      - Use sample descriptor to detect clear fragments.
      
      This doesn't support:
      - Different sample descriptor holding different encryption info.
        - Only first sample descriptor can be encrypted.
      - Encrypted sample groups (i.e. seig).
      - Non-'cenc' encryption scheme when using -decryption_key.
      Signed-off-by: 's avatarJacob Trimble <modmaker@google.com>
      Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
      f7221d8e
  15. 13 Apr, 2018 1 commit
  16. 12 Apr, 2018 2 commits
  17. 03 Apr, 2018 1 commit
  18. 02 Apr, 2018 1 commit
  19. 01 Apr, 2018 1 commit
  20. 29 Mar, 2018 4 commits
  21. 24 Mar, 2018 1 commit