1. 13 Feb, 2016 1 commit
  2. 10 Feb, 2016 1 commit
    • Rostislav Pehlivanov's avatar
      avcodec: add a native SMPTE VC-2 HQ encoder · ec9e87c9
      Rostislav Pehlivanov authored
      This commit adds a new encoder capable of creating BBC/SMPTE Dirac/VC-2 HQ
      profile files.
      
      Dirac is a wavelet based codec created by the BBC a little more than 10
      years ago. Since then, wavelets have mostly gone out of style as they
      did not provide adequate encoding gains at lower bitrates. Dirac was a
      fully featured video codec equipped with perceptual masking, support for
      most popular pixel formats, interlacing, overlapped-block motion
      compensation, and other features. It found new life after being stripped
      of various features and standardized as the VC-2 codec by the SMPTE with
      an extra profile, the HQ profile that this encoder supports, added.
      
      The HQ profile was based off of the Low-Delay profile previously
      existing in Dirac. The profile forbids DC prediction and arithmetic
      coding to focus on high performance and low delay at higher bitrates.
      The standard bitrates for this profile vary but generally 1:4
      compression is expected (~525 Mbps vs the 2200 Mbps for uncompressed
      1080p50). The codec only supports I-frames, hence the high bitrates.
      
      The structure of this encoder is simple: do a DWT transform on the
      entire image, split it into multiple slices (specified by the user) and
      encode them in parallel. All of the slices are of the same size, making
      rate control and threading very trivial. Although only in C, this encoder
      is capable of 30 frames per second on an 4 core 8 threads Ivy Bridge.
      A lookup table is used to encode most of the coefficients.
      
      No code was used from the GSoC encoder from 2007 except for the 2
      transform functions in diracenc_transforms.c. All other code was written
      from scratch.
      
      This encoder outperforms any other encoders in quality, usability and in
      features. Other existing implementations do not support 4 level
      transforms or 64x64 blocks (slices), which greatly increase compression.
      
      As previously said, the codec is meant for broadcasting, hence support
      for non-broadcasting image widths, heights, bit depths, aspect ratios,
      etc. are limited by the "level". Although this codec supports a few
      chroma subsamplings (420, 422, 444), signalling those is generally
      outside the specifications of the level used (3) and the reference
      decoder will outright refuse to read any image with such a flag
      signalled (it only supports 1920x1080 yuv422p10). However, most
      implementations will happily read files with alternate dimensions,
      framerates and formats signalled.
      
      Therefore, in order to encode files other than 1080p50 yuv422p10le, you
      need to provide an "-strict -2" argument to the command line. The FFmpeg
      decoder will happily read any files made with non-standard parameters,
      dimensions and subsamplings, and so will other implementations. IMO this
      should be "-strict -1", but I'll leave that up for discussion.
      
      There are still plenty of stuff to implement, for instance 5 more
      wavelet transforms are still in the specs and supported by the decoder.
      
      The encoder can be lossless, given a high enough bitrate.
      Signed-off-by: 's avatarRostislav Pehlivanov <atomnuker@gmail.com>
      ec9e87c9
  3. 31 Jan, 2016 2 commits
  4. 30 Jan, 2016 3 commits
    • Kieran Kunhya's avatar
      avcodec: Cineform HD Decoder · 3485332b
      Kieran Kunhya authored
      Decodes YUV 4:2:2 10-bit and RGB 12-bit files.
      Older files with more subbands, skips, Bayer, alpha not supported.
      Alpha requires addition of GBRAP12 pixel format.
      3485332b
    • Kieran Kunhya's avatar
      avcodec: Remove libvo-aacenc support. · e07e88cd
      Kieran Kunhya authored
      The internal encoder is superior to libvo-aacenc.
      Signed-off-by: 's avatarTimothy Gu <timothygu99@gmail.com>
      e07e88cd
    • Timothy Gu's avatar
      avcodec: Remove libaacplus · 9ba54c1b
      Timothy Gu authored
      TODO: bump minor
      
      It's inferior in quality to fdk-aac and has an arguably more problematic
      license.
      
      As early as 2012, a HydrogenAudio user reported:
      
      > It has however one huge advantage: much better quality at low bitrates than
      > faac and libaacplus.
      
      (https://hydrogenaud.io/index.php?PHPSESSID=ckiq394pdglka0kj2fin6ij8t7&topic=95989.msg804633#msg804633)
      
      I myself have made a few spectrograms for a comparison of the two
      encoders as well. The FDK output is consistently better than the
      libaacplus one, in all bitrates I tested.
      
      libaacplus license is 3GPP + LGPLv2. 3GPP copyright notice is completely
      proprietory, as follows:
      
      > No part may be reproduced except as authorized by written permission.
      >
      > The copyright and the foregoing restriction extend to reproduction in
      > all media.
      >
      > :copyright: 2008, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC).
      >
      > All rights reserved.
      
      (The latest 26410-d00 zip from 3GPP has the same notice, but the copyright
      year is changed to 2015)
      
      The copyright part of the FDK AAC license (section 2) is a copyleft
      license that permits redistribution under certain conditions (and
      therefore the LGPL + libfdk-aac combination is not prohibited by
      configure):
      
      > Redistribution and use in source and binary forms, with or without
      > modification, are permitted without payment of copyright license fees
      > provided that you satisfy the following conditions:
      >
      > You must retain the complete text of this software license in
      > redistributions of the FDK AAC Codec or your modifications thereto in
      > source code form.
      >
      > You must retain the complete text of this software license in the
      > documentation and/or other materials provided with redistributions of
      > the FDK AAC Codec or your modifications thereto in binary form.
      >
      > You must make available free of charge copies of the complete source
      > code of the FDK AAC Codec and your modifications thereto to recipients
      > of copies in binary form.
      >
      > The name of Fraunhofer may not be used to endorse or promote products
      > derived from this library without prior written permission.
      >
      > You may not charge copyright license fees for anyone to use, copy or
      > distribute the FDK AAC Codec software or your modifications thereto.
      >
      > Your modified versions of the FDK AAC Codec must carry prominent
      > notices stating that you changed the software and the date of any
      > change. For modified versions of the FDK AAC Codec, the term
      > "Fraunhofer FDK AAC Codec Library for Android" must be replaced by the
      > term "Third-Party Modified Version of the Fraunhofer FDK AAC Codec
      > Library for Android."
      9ba54c1b
  5. 28 Jan, 2016 2 commits
  6. 26 Jan, 2016 1 commit
  7. 12 Jan, 2016 1 commit
    • Anton Khirnov's avatar
      nvenc: rename encoders · ee359c72
      Anton Khirnov authored
      Change 'nvenc_<codec>' to '<codec>_nvenc', which is consistent with
      other similar decoders and encoders (QSV, MMAL).
      ee359c72
  8. 06 Jan, 2016 1 commit
    • Derek Buitenhuis's avatar
      avcodec: Remove libstagefright · 72673ad7
      Derek Buitenhuis authored
      It serves absolutely no purpose other than to confuse potentional
      Android developers about how to use hardware acceleration properly
      on the the platform. The stagefright "API" is not public, and the
      MediaCodec API is the proper way to do this.
      
      Furthermore, stagefright support in avcodec needs a series of
      magic incantations and version-specific stuff, such that
      using it actually provides downsides compared just using the actual
      Android frameworks properly, in that it is a lot more work and confusion
      to get it even running. It also leads to a lot of misinformation, like
      these sorts of comments (in [1]) that are absolutely incorrect.
      
      [1] http://stackoverflow.com/a/29362353/3115956Signed-off-by: 's avatarDerek Buitenhuis <derek.buitenhuis@gmail.com>
      72673ad7
  9. 22 Dec, 2015 1 commit
  10. 21 Dec, 2015 1 commit
  11. 07 Dec, 2015 1 commit
  12. 30 Nov, 2015 1 commit
  13. 07 Nov, 2015 1 commit
  14. 06 Nov, 2015 1 commit
  15. 03 Nov, 2015 1 commit
  16. 30 Oct, 2015 1 commit
  17. 29 Oct, 2015 1 commit
  18. 26 Oct, 2015 1 commit
  19. 23 Oct, 2015 2 commits
  20. 22 Oct, 2015 1 commit
  21. 16 Oct, 2015 1 commit
  22. 11 Oct, 2015 1 commit
  23. 10 Oct, 2015 1 commit
  24. 30 Sep, 2015 1 commit
  25. 07 Sep, 2015 1 commit
  26. 02 Sep, 2015 1 commit
  27. 27 Aug, 2015 1 commit
  28. 18 Aug, 2015 1 commit
  29. 11 Aug, 2015 1 commit
  30. 03 Aug, 2015 1 commit
  31. 25 Jul, 2015 5 commits