1. 21 Mar, 2019 1 commit
  2. 27 Jun, 2017 4 commits
    • Hein-Pieter van Braam's avatar
      Interplay MVE: Implement frame format 0x10 · 8f96da06
      Hein-Pieter van Braam authored
      This implements the 0x10 frame format for Interplay MVE movies. The
      format is a variation on the 0x06 format with some changes. In addition
      to the decoding map there's also a skip map. This skip map is used to
      determine what 8x8 blocks can change in a particular frame.
      
      This format expects to be able to copy an 8x8 block from before the last
      time it was changed. This can be an arbitrary time in the past. In order
      to implement this this decoder allocates two additional AVFrames where
      actual decoding happens. At the end of a frame decoding changed blocks
      are copied to a finished frame based on the skip map.
      
      The skip map's encoding is a little convulted, I'll refer to the code
      for details.
      
      Values in the decoding map are the same as in format 0x06.
      Signed-off-by: 's avatarHein-Pieter van Braam <hp@tmm.cx>
      8f96da06
    • Hein-Pieter van Braam's avatar
      Interplay MVE: Implement frame format 0x06 · 19f6fd19
      Hein-Pieter van Braam authored
      This implements the 0x06 frame format for Interplay MVE movies. The
      format is relatively simple. The video data consists of two parts:
      
      16 bits per 8x8 block movement data
      a number of 8x8 blocks of pixel data
      
      For each 8x8 block of pixel data the movement data is consulted. There
      are 3 possible meanings of the movement data:
      * zero     : copy the 8x8 block from the pixel data
      * negative : copy the 8x8 block from the previous frame from an offset
                   determined by the actual value of the entry -0xC000.
      * positive : copy the 8x8 block from the current frame from an offset
                   determined by the actual value of the entry -0x4000
      
      Decoding happens in two passes, in the fist pass only new pixeldata is
      copied, during the second pass data is copied from the previous and
      current frames.
      
      The codec expects that the current frame being decoded to still has the
      data from 2 frames ago on it when decoding starts.
      Signed-off-by: 's avatarHein-Pieter van Braam <hp@tmm.cx>
      19f6fd19
    • Hein-Pieter van Braam's avatar
      Interplay MVE: Refactor IP packet format · 8f87bfb4
      Hein-Pieter van Braam authored
      Interplay MVE can contain up to three different frame formats. They
      require different streams of information to render a frame. This patch
      changes the IP packet format to prepare for the extra frame formats.
      Signed-off-by: 's avatarHein-Pieter van Braam <hp@tmm.cx>
      8f87bfb4
    • Hein-Pieter van Braam's avatar
      Interplay MVE: Implement MVE SEND_BUFFER operation · ba2c3850
      Hein-Pieter van Braam authored
      Interplay MVE movies have a SEND_BUFFER operation. Only after this
      command does the current decoding buffer get displayed. This is required
      for the other frame formats. They are fixed-size and can't always encode
      a full frame worth of pixeldata.
      
      This code prevents half-finished frames from being emitted.
      Signed-off-by: 's avatarHein-Pieter van Braam <hp@tmm.cx>
      ba2c3850
  3. 18 Jun, 2017 1 commit
  4. 27 Oct, 2016 1 commit
  5. 04 May, 2016 1 commit
  6. 23 Feb, 2016 1 commit
    • Anton Khirnov's avatar
      lavf: replace AVStream.codec with AVStream.codecpar · 9200514a
      Anton Khirnov authored
      Currently, AVStream contains an embedded AVCodecContext instance, which
      is used by demuxers to export stream parameters to the caller and by
      muxers to receive stream parameters from the caller. It is also used
      internally as the codec context that is passed to parsers.
      
      In addition, it is also widely used by the callers as the decoding (when
      demuxer) or encoding (when muxing) context, though this has been
      officially discouraged since Libav 11.
      
      There are multiple important problems with this approach:
          - the fields in AVCodecContext are in general one of
              * stream parameters
              * codec options
              * codec state
            However, it's not clear which ones are which. It is consequently
            unclear which fields are a demuxer allowed to set or a muxer allowed to
            read. This leads to erratic behaviour depending on whether decoding or
            encoding is being performed or not (and whether it uses the AVStream
            embedded codec context).
          - various synchronization issues arising from the fact that the same
            context is used by several different APIs (muxers/demuxers,
            parsers, bitstream filters and encoders/decoders) simultaneously, with
            there being no clear rules for who can modify what and the different
            processes being typically delayed with respect to each other.
          - avformat_find_stream_info() making it necessary to support opening
            and closing a single codec context multiple times, thus
            complicating the semantics of freeing various allocated objects in the
            codec context.
      
      Those problems are resolved by replacing the AVStream embedded codec
      context with a newly added AVCodecParameters instance, which stores only
      the stream parameters exported by the demuxers or read by the muxers.
      9200514a
  7. 02 Nov, 2015 2 commits
  8. 26 Oct, 2015 1 commit
  9. 26 Jul, 2015 3 commits
  10. 19 Apr, 2015 1 commit
  11. 24 Aug, 2014 1 commit
  12. 07 Aug, 2014 1 commit
  13. 18 Dec, 2013 4 commits
  14. 14 Dec, 2013 1 commit
  15. 13 Dec, 2013 1 commit
  16. 22 Nov, 2013 1 commit
  17. 25 Dec, 2012 1 commit
  18. 12 Nov, 2012 1 commit
  19. 07 Aug, 2012 1 commit
  20. 30 Jul, 2012 1 commit
  21. 31 May, 2012 1 commit
  22. 27 Jan, 2012 1 commit
  23. 10 Jan, 2012 1 commit
  24. 08 Jan, 2012 1 commit
  25. 07 Jan, 2012 1 commit
  26. 05 Jan, 2012 1 commit
  27. 27 Dec, 2011 1 commit
  28. 21 Dec, 2011 1 commit
  29. 30 Nov, 2011 1 commit
  30. 19 Oct, 2011 1 commit
  31. 17 Jul, 2011 1 commit