Merge commit '9469370fb32679352e66826daf77bdd2e6f067b5'
authorHendrik Leppkes <h.leppkes@gmail.com>
Fri, 7 Aug 2015 07:54:12 +0000 (09:54 +0200)
committerHendrik Leppkes <h.leppkes@gmail.com>
Fri, 7 Aug 2015 07:54:12 +0000 (09:54 +0200)
* commit '9469370fb32679352e66826daf77bdd2e6f067b5':
  h264: Use AVERROR return codes instead of -1

Only partially merged, as the first hunk is not correct and would result
in endless log spam.

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
1  2 
libavcodec/h264.h

@@@ -1176,34 -1081,6 +1176,35 @@@ static av_always_inline int get_dct8x8_
                    0x0001000100010001ULL));
  }
  
-     if (*buf_index >= buf_size - h->nal_length_size)
-         return -1;
 +static inline int find_start_code(const uint8_t *buf, int buf_size,
 +                           int buf_index, int next_avc)
 +{
 +    uint32_t state = -1;
 +
 +    buf_index = avpriv_find_start_code(buf + buf_index, buf + next_avc + 1, &state) - buf - 1;
 +
 +    return FFMIN(buf_index, buf_size);
 +}
 +
 +static inline int get_avc_nalsize(H264Context *h, const uint8_t *buf,
 +                           int buf_size, int *buf_index)
 +{
 +    int i, nalsize = 0;
 +
-         return -1;
++    if (*buf_index >= buf_size - h->nal_length_size) {
++        return AVERROR(EAGAIN);
++    }
 +
 +    for (i = 0; i < h->nal_length_size; i++)
 +        nalsize = ((unsigned)nalsize << 8) | buf[(*buf_index)++];
 +    if (nalsize <= 0 || nalsize > buf_size - *buf_index) {
 +        av_log(h->avctx, AV_LOG_ERROR,
 +               "AVC: nal size %d\n", nalsize);
++        return AVERROR_INVALIDDATA;
 +    }
 +    return nalsize;
 +}
 +
  int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup);
  
  int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src);