1. 31 Aug, 2017 2 commits
  2. 23 Mar, 2017 1 commit
  3. 12 Jan, 2017 1 commit
  4. 14 Dec, 2016 3 commits
    • Anton Khirnov's avatar
    • Anton Khirnov's avatar
      decode: restructure the core decoding code · 061a0c14
      Anton Khirnov authored
      Currently, the new decoding API is pretty much just a wrapper around the
      old deprecated one. This is problematic, since it interferes with making
      full use of the flexibility added by the new API. The old API should
      also be removed at some future point.
      
      Reorganize the code so that the new send_packet/receive_frame functions
      call the actual decoding directly and change the old deprecated
      avcodec_decode_* functions into wrappers around the new API.
      
      The new internal API for decoders is now changing as well. Before this
      commit, it mirrors the public API, so the decoders need to implement
      send_packet() and receive_frame() callbacks. This turns out to require
      awkward constructs in both the decoders and the generic code. After this
      commit, the decoders only implement the receive_frame() callback and
      call a new internal function, ff_decode_get_packet() to obtain input
      data, in the same manner to how the bitstream filters now work.
      
      avcodec will now always make a reference to the input packet, which means
      that non-refcounted input packets will be copied. Keeping the previous
      behaviour, where this copy could sometimes be avoided, would make the
      code significantly more complex and fragile for only dubious gains,
      since packets are typically small and everyone who cares about
      performance should use refcounted packets anyway.
      061a0c14
    • Anton Khirnov's avatar
      decode: be more explicit about storing the last packet properties · 549d0bdc
      Anton Khirnov authored
      The current code stores a pointer to the packet passed to the decoder,
      which is then used during get_buffer() for timestamps and side data
      passthrough. However, since this is a pointer to user data which we do
      not own, storing it is potentially dangerous. It is also ill defined for
      the new decoding API with split input/output.
      
      Fix this problem by making an explicit internally owned copy of the
      packet properties.
      549d0bdc
  5. 23 Mar, 2016 1 commit
    • wm4's avatar
      lavc: introduce a new decoding/encoding API with decoupled input/output · 05f66706
      wm4 authored
      Until now, the decoding API was restricted to outputting 0 or 1 frames
      per input packet. It also enforces a somewhat rigid dataflow in general.
      
      This new API seeks to relax these restrictions by decoupling input and
      output. Instead of doing a single call on each decode step, which may
      consume the packet and may produce output, the new API requires the user
      to send input first, and then ask for output.
      
      For now, there are no codecs supporting this API. The API can work with
      codecs using the old API, and most code added here is to make them
      interoperate. The reverse is not possible, although for audio it might.
      Signed-off-by: 's avatarAnton Khirnov <anton@khirnov.net>
      05f66706
  6. 08 Dec, 2015 1 commit
  7. 06 Dec, 2015 1 commit
  8. 05 Dec, 2015 1 commit
  9. 12 Sep, 2015 1 commit
    • wm4's avatar
      lavc: allow asynchronous decoders to return correct pkt_dts values · 87a051f9
      wm4 authored
      The generic code in utils.c sets the AVFrame.pkt_dts field from the
      packet it was supposedly decoded. This does not have to be true for a
      fully asynchronous decoder like mmaldec. It could be overwritten with an
      incorrect value. Even if the decoder doesn't determine the DTS (but sets
      it to AV_NOPTS_VALUE), it's impossible to determine a correct value in
      utils.c.
      
      Decoders can now be marked with FF_CODEC_CAP_SETS_PKT_DTS, in which case
      utils.c won't overwrite the field. The decoders are expected to set this
      field (even if they only set it to AV_NOPTS_VALUE).
      Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
      87a051f9
  10. 27 Jul, 2015 1 commit
  11. 02 Jul, 2015 1 commit
  12. 24 Apr, 2015 1 commit
  13. 19 Apr, 2015 1 commit
  14. 05 Apr, 2015 1 commit
  15. 13 Mar, 2015 1 commit
    • Vittorio Giovara's avatar
      lavc: Introduce AVCodec internal capabilities · 117b4327
      Vittorio Giovara authored
      This field is designed for marking codec properties useful to lavc internals.
      Two internal capabilities are added:
       - FF_CODEC_CAP_INIT_THREADSAFE: codec can be opened without locks;
       - FF_CODEC_CAP_INIT_CLEANUP: codec frees memory if initialization fails.
      117b4327
  16. 17 Nov, 2014 1 commit
  17. 20 Jun, 2014 1 commit
  18. 11 May, 2014 3 commits
  19. 24 Mar, 2014 1 commit
  20. 05 Jan, 2014 1 commit
  21. 09 Dec, 2013 1 commit
    • Anton Khirnov's avatar
      lavc: rework handling of refcounted_frames=0 · 37a74901
      Anton Khirnov authored
      Use only proper AVFrame API (no assigning of whole frames, since that
      hardcodes sizeof(AVFrame) into lavc).
      
      Make a copy of the side data, so the caller can use av_frame_unref/free
      on non-refcounted frames, eliminating the need for
      avcodec_get_frame_defaults()/avcodec_free_frame().
      37a74901
  22. 10 Nov, 2013 1 commit
  23. 04 Nov, 2013 2 commits
  24. 31 Oct, 2013 1 commit
  25. 26 Mar, 2013 1 commit
  26. 09 Mar, 2013 1 commit
  27. 08 Mar, 2013 2 commits
  28. 06 Mar, 2013 1 commit
  29. 04 Dec, 2012 2 commits
  30. 13 Nov, 2012 1 commit
  31. 01 Nov, 2012 1 commit
  32. 08 Oct, 2012 1 commit