1. 07 Jan, 2017 3 commits
    • softworkz's avatar
      avformat/matroskaenc: Regression fix for invalid MKV headers · 20e8be0c
      softworkz authored
      The following three commits created a regression by writing initially
      invalid mkv headers:
      
      650e17d8 avformat/matroskaenc: write a
      CRC32 element on Tags
      3bcadf82 avformat/matroskaenc: write a
      CRC32 element on Info
      ee888cfb avformat/matroskaenc: postpone
      writing the Tracks master
      
      Symptoms:
      
      - You can no longer playback a file that is still processed by ffmpeg,
      e.g. VLC fails playback
      - You can no longer stream a file to a client while if is still being
      processed
      - Various diagnosing tools show header errors or incomplete headers
      (e.g. ffprobe, mediainfo, mkvalidator)
      
      Note: The symptoms do not apply to completed files or ffmpeg runs that
      were interrupted with 'q'
      
      Cause:
      
      The mentioned commits made changes in a way that some header elements
      are only partially written in
      mkv_write_header, leaving the header in an invalid state. Only in
      mkv_write_trailer, these elements
      are finished correctly, but that does only occur at the end of the
      process.
      
      Regression:
      
      Before these commits were applied, mkv headers have always been valid,
      even before completion of ffmpeg.
      This has worked reliably over many versions of ffmpeg, to it was an
      obvious regression.
      
      Bugtracker:
      
      This issue has been recorded as #5977 which is resolved by this patch
      
      Patch:
      
      The patch adds a new function 'end_ebml_master_crc32_preliminary' that
      preliminarily finishes the ebml
      element without destroying the buffer. The buffer can be used to update
      the ebml element later during
      mkv_write_trailer. But most important: mkv_write_header finishes with a
      valid mkv header again.
      Signed-off-by: 's avatarJames Almer <jamrial@gmail.com>
      20e8be0c
    • Clément Bœsch's avatar
    • softworkz's avatar
      libavformat/avio: Add avio_get_dyn_buf function · 9488032e
      softworkz authored
      This commit adds the avio_get_dyn_buf function which allows accessing
      the
      content of a DynBuffer without destroying it.
      
      This is required in matroskaenc for preliminary writing (correct) mkv
      headers.
      
      Context for this change is fixing regression bug #5977.
      Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
      9488032e
  2. 06 Jan, 2017 6 commits
  3. 05 Jan, 2017 12 commits
  4. 04 Jan, 2017 3 commits
  5. 03 Jan, 2017 3 commits
    • Bela Bodecs's avatar
      avformat/hlsenc: size and duration in segment filenames · 557c0df9
      Bela Bodecs authored
      1st:
      This patch makes it possible to put actual segment file size (measured
      in bytes) and/or duration (calculated in microseconds) into segment
      filenames. This feature is useful when post-processing live streaming
      access log files. New behaviour works only when -use_localtime option
      is set and second_level_segment_size or/and
      second_level_segment_duration new hls_flags are specified. %%s is the
      placeholder for size and %%t for duration in hls_segment_filename
      option. Fix sized trailing zeropadding also works eg. %%09s or %%023t.
      
      A command to test new features:
      ./ffmpeg -loglevel info -y -f lavfi -i color=c=red:size=640x480:r=25 -f
      lavfi -i sine=f=440:b=4:r=44100 -c:v mpeg2video -g 25 -acodec aac
      -cutoff 20000 -ac 2 -ar 44100 -ab 192k -f hls -hls_time 3 -hls_list_size
      5 -hls_flags
      second_level_segment_index+second_level_segment_size+second_level_segment_duration
      -use_localtime 1 -use_localtime_mkdir 1 -hls_segment_filename
      "segment_%Y%m%d%H%M%S_%%04d_%%08s_%%013t.ts" stream.m3u8
      
      2nd:
      doc/muxers: beside second_level_segment_duration and second_level_segment_size,
      added some more details and example to hls_segment_filename,
      use_localtime, use_localtime_mkdir, hls_flags. hls_flags option list
      reformatted to table
      Signed-off-by: 's avatarBela Bodecs <bodecsb@vivanet.hu>
      Signed-off-by: 's avatarSteven Liu <lq@chinaffmpeg.org>
      557c0df9
    • Tobias Rapp's avatar
    • Michael Niedermayer's avatar
      4221c68e
  6. 02 Jan, 2017 9 commits
  7. 01 Jan, 2017 4 commits