1. 29 Jul, 2016 5 commits
  2. 28 Jul, 2016 9 commits
    • Petru Rares Sincraian's avatar
    • Petru Rares Sincraian's avatar
    • Matthieu Bouron's avatar
      83b99093
    • Zhao Zhili's avatar
      avutil/mem: fix memleak · 65b2feb8
      Zhao Zhili authored
      The original code assumes av_realloc() will free ptr if size is zero.
      The assumes is incorrect now.
      Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
      65b2feb8
    • Paul B Mahol's avatar
      d7ae4f79
    • Clément Bœsch's avatar
      lavfi/hdcd: fix style · 37abc8cc
      Clément Bœsch authored
      37abc8cc
    • Clément Bœsch's avatar
      4791716c
    • Burt P's avatar
      af_hdcd: Report PE as being intermittent or permanent · fb91143e
      Burt P authored
      The Peak Extend feature could be enabled permanently or only
      when needed. This is now reported.
      Signed-off-by: 's avatarBurt P <pburt0@gmail.com>
      Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
      fb91143e
    • softworkz's avatar
      avformat/matroskaenc: Write duration early during mkv_write_header (Rev #3) · 70c1647a
      softworkz authored
      Rev #2: Fixes doubled header writing, checked FATE running without errors
      Rev #3: Fixed coding style
      
      This commit addresses the following scenario:
      
      we are using ffmpeg to transcode or remux mkv (or something else) to mkv. The result is being streamed on-the-fly to an HTML5 client (streaming starts while ffmpeg is still running). The problem here is that the client is unable to detect the duration because the duration is only written to the mkv at the end of the transcoding/remoxing process. In matroskaenc.c, the duration is only written during mkv_write_trailer but not during mkv_write_header.
      
      The approach:
      
      FFMPEG is currently putting quite some effort to estimate the durations of source streams, but in many cases the source stream durations are still left at 0 and these durations are nowhere mapped to or used for output streams. As much as I would have liked to deduct or estimate output durations based on input stream durations - I realized that this is a hard task (as Nicolas already mentioned in a previous conversation). It would involve changes to the duration calculation/estimation/deduction for input streams and propagating these durations to output streams or the output context in a correct way.
      So I looked for a simple and small solution with better chances to get accepted. In webmdashenc.c I found that a duration is written during write_header and this duration is taken from the streams' metadata, so I decided for a similar approach.
      
      And here's what it does:
      
      At first it is checking the duration of the AVFormatContext. In typical cases this value is not set, but: It is set in cases where the user has specified a recording_time or an end_time via the -t or -to parameters.
      Then it is looking for a DURATION metadata field in the metadata of the output context (AVFormatContext::metadata). This would only exist in case the user has explicitly specified a metadata DURATION value from the command line.
      Then it is iterating all streams looking for a "DURATION" metadata (this works unless the option "-map_metadata -1" has been specified) and determines the maximum value.
      The precendence is as follows: 1. Use duration of AVFormatContext - 2. Use explicitly specified metadata duration value - 3. Use maximum (mapped) metadata duration over all streams.
      
      To test this:
      
      1. With explicit recording time:
      ffmpeg -i file:"src.mkv" -loglevel debug -t 01:38:36.000 -y "dest.mkv"
      
      2. Take duration from metadata specified via command line parameters:
      ffmpeg -i file:"src.mkv" -loglevel debug -map_metadata -1 -metadata Duration="01:14:33.00" -y "dest.mkv"
      
      3. Take duration from mapped input metadata:
      ffmpeg -i file:"src.mkv" -loglevel debug -y "dest.mkv"
      
      Regression risk:
      
      Very low IMO because it only affects the header while ffmpeg is still running. When ffmpeg completes the process, the duration is rewritten to the header with the usual value (same like without this commit).
      Signed-off-by: 's avatarSoftWorkz <softworkz@hotmail.com>
      Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
      70c1647a
  3. 27 Jul, 2016 21 commits
  4. 26 Jul, 2016 5 commits
    • dericed's avatar
    • Josh de Kock's avatar
      avdev/jack: remove duplicated dispatch macros · c2fcf4fa
      Josh de Kock authored
      The macros were moved to compat/dispatch_semaphore/semaphore.h after a libav merge, and were never removed from jack.c
      c2fcf4fa
    • Ronald S. Bultje's avatar
      vp9: add mxext versions of the single-block (w=8,npx=8) h/v loopfilters. · a4edaa02
      Ronald S. Bultje authored
      Each takes about 0.1% of runtime in my profiles, and they didn't have
      any SIMD yet so far (we only had simd for npx=16 double-block versions).
      a4edaa02
    • Ronald S. Bultje's avatar
      vp9: add mxext versions of the single-block (w=4,npx=8) h/v loopfilters. · 7ca422bb
      Ronald S. Bultje authored
      Each takes about 0.5% of runtime in my profiles, and they didn't have
      any SIMD yet so far (we only had simd for npx=16 double-block versions).
      7ca422bb
    • Ronald S. Bultje's avatar
      vp9: add 32x32 idct AVX2 implementation. · 726501a3
      Ronald S. Bultje authored
      About 1.8x speedup compared to AVX version for full IDCT. Other
      sub-IDCT scenarios also see speedups. Full --bench output for
      idct_32x32_add_{bpp}_${subidct}_${opt} (50k cycles):
      
      nop: 16.5
      vp9_inv_dct_dct_32x32_add_8_1_c: 2284.4
      vp9_inv_dct_dct_32x32_add_8_1_sse2: 145.0
      vp9_inv_dct_dct_32x32_add_8_1_ssse3: 137.4
      vp9_inv_dct_dct_32x32_add_8_1_avx: 137.1
      vp9_inv_dct_dct_32x32_add_8_1_avx2: 73.2
      vp9_inv_dct_dct_32x32_add_8_2_c: 14680.8
      vp9_inv_dct_dct_32x32_add_8_2_sse2: 2617.2
      vp9_inv_dct_dct_32x32_add_8_2_ssse3: 982.9
      vp9_inv_dct_dct_32x32_add_8_2_avx: 958.5
      vp9_inv_dct_dct_32x32_add_8_2_avx2: 704.2
      vp9_inv_dct_dct_32x32_add_8_4_c: 14443.1
      vp9_inv_dct_dct_32x32_add_8_4_sse2: 2717.1
      vp9_inv_dct_dct_32x32_add_8_4_ssse3: 965.7
      vp9_inv_dct_dct_32x32_add_8_4_avx: 1000.7
      vp9_inv_dct_dct_32x32_add_8_4_avx2: 717.1
      vp9_inv_dct_dct_32x32_add_8_8_c: 14436.4
      vp9_inv_dct_dct_32x32_add_8_8_sse2: 2671.8
      vp9_inv_dct_dct_32x32_add_8_8_ssse3: 1038.5
      vp9_inv_dct_dct_32x32_add_8_8_avx: 983.0
      vp9_inv_dct_dct_32x32_add_8_8_avx2: 729.4
      vp9_inv_dct_dct_32x32_add_8_16_c: 14614.7
      vp9_inv_dct_dct_32x32_add_8_16_sse2: 2701.7
      vp9_inv_dct_dct_32x32_add_8_16_ssse3: 1334.4
      vp9_inv_dct_dct_32x32_add_8_16_avx: 1276.7
      vp9_inv_dct_dct_32x32_add_8_16_avx2: 719.5
      vp9_inv_dct_dct_32x32_add_8_32_c: 14363.6
      vp9_inv_dct_dct_32x32_add_8_32_sse2: 2575.6
      vp9_inv_dct_dct_32x32_add_8_32_ssse3: 2633.9
      vp9_inv_dct_dct_32x32_add_8_32_avx: 2539.6
      vp9_inv_dct_dct_32x32_add_8_32_avx2: 1395.0
      726501a3