1. 12 Sep, 2015 4 commits
    • 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
    • wm4's avatar
      mmaldec: disable timestamp interpolation · b7ab6e18
      wm4 authored
      This MMAL feature fills in missing timestamps from the framerate set on
      the input port. This is generally unwanted, since libavcodec decoders
      merely pass through timestamps without ever "fixing" them. The framerate
      is also unknown, and even the timebase doesn't have to be set.
      Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
      b7ab6e18
    • wm4's avatar
      mmaldec: fix problems with flush logic · 6b652c02
      wm4 authored
      Don't try to do a blocking wait for MMAL output if we haven't even sent
      a single real packet, but only flush packets. Obviously we can't expect
      to get anything back.
      
      Additionally, don't send a flush packet to MMAL in the same case. It
      appears the MMAL decoder will sometimes hang in mmal_vc_port_disable()
      (called from ffmmal_close_decoder()), waiting for a reply from the GPU
      which never arrives. Either MMAL disallows sending flush packets without
      preceding real data, or it's a MMAL bug.
      Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
      6b652c02
    • wm4's avatar
      mmaldec: hack against buffering problems on broken input · b84675d6
      wm4 authored
      I can't come up with a nice way to handle this. It's hard to keep the
      lock-stepped input/output in this case. You can't predict whether the
      MMAL decoder will output a picture (because it's asynchronous), so
      you have to assume in general that any packet could produce 0 or 1
      frames. You can't continue to write input packets to the decoder,
      because then you might get too many output frames, which you can't
      get rid of because the lavc decoding API does not allow the decoder
      to return an output frame without consuming an input frame (except
      when flushing).
      
      The ideal fix is a M:N decoding API (preferably asynchronous), which
      would make this code potentially much cleaner. For now, this hack
      will do.
      Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
      b84675d6
  2. 11 Sep, 2015 3 commits
  3. 10 Sep, 2015 4 commits
  4. 09 Sep, 2015 1 commit
  5. 07 Sep, 2015 3 commits
  6. 06 Sep, 2015 4 commits
  7. 04 Sep, 2015 1 commit
  8. 03 Sep, 2015 9 commits
  9. 02 Sep, 2015 2 commits
  10. 31 Aug, 2015 7 commits
  11. 30 Aug, 2015 1 commit
  12. 28 Aug, 2015 1 commit