• Clément Bœsch's avatar
    Merge commit '3176217c' · 1534ef87
    Clément Bœsch authored
    * commit '3176217c':
      h264: decouple h264_ps from the h264 decoder
    
    Main changes:
    
    - a local GetBitContext is created for the various
      ff_h264_decode_seq_parameter_set() attempts
    
    - just like the old code, remove_sps() is adjusted so it doesn't remove
      the pps.
    
      Fixes decode with Ticket #631
      http://ffmpeg.org/pipermail/ffmpeg-user/attachments/20111108/dae58f17/attachment.mp4
      but see next point as well.
    
    - ff_h264_update_thread_context() is updated to work even when SPS
      isn't set as it breaks current skip_frame code. This makes sure we
      can still decode the sample from ticket #631 without the need for
      -flags2 +chunks. (Thanks to Michael)
    
    - keep {sps,pps}_ref pointers that stay alive even when the active
      pps/sps get removed from the available lists (patch by michaelni with
      additionnal frees in ff_h264_free_context() from mateo)
    
    - added a check on sps in avpriv_h264_has_num_reorder_frames() to fix
      crashes with mpegts_with_dvbsubs.ts from Ticket #4074
      http://samples.ffmpeg.org/ffmpeg-bugs/trac/ticket4074/mpegts_with_dvbsubs.ts
    
    - in h264_parser.c:h264_parse(), after the ff_h264_decode_extradata() is
      called, the pps and sps from the local parser context are updated with
      the pps and sps from the used h264context. This fixes fate-flv-demux.
    
    - in h264_slice.c, "PPS changed between slices" error is not triggered
      anymore in one condition as it makes fate-h264-xavc-4389 fails with
      THREADS=N (Thanks to Michael)
    Merged-by: 's avatarClément Bœsch <clement@stupeflix.com>
    Merged-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
    Merged-by: 's avatarMatthieu Bouron <matthieu.bouron@stupeflix.com>
    1534ef87
h264.c 56 KB