Merge commit '74512f7e369da40e1148c92b58cd8e59f7737b8f'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 2 Sep 2014 19:45:58 +0000 (21:45 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 2 Sep 2014 19:45:58 +0000 (21:45 +0200)
* commit '74512f7e369da40e1148c92b58cd8e59f7737b8f':
  8svx: Return proper error codes

Conflicts:
libavcodec/8svx.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/8svx.c

@@@ -90,20 -87,23 +90,20 @@@ static int eightsvx_decode_frame(AVCode
      AVFrame *frame       = data;
      int buf_size;
      int ch, ret;
 -    int is_compr = (avctx->codec_id != AV_CODEC_ID_PCM_S8_PLANAR);
 +    int hdr_size = 2;
  
 -    /* for the first packet, copy data to buffer */
 -    if (avpkt->data) {
 -        int hdr_size  = is_compr ? 2 : 0;
 -        int chan_size = (avpkt->size - hdr_size * avctx->channels) / avctx->channels;
 +    /* decode and interleave the first packet */
 +    if (!esc->data[0] && avpkt) {
 +        int chan_size = avpkt->size / avctx->channels - hdr_size;
  
 -        if (avpkt->size < hdr_size * avctx->channels) {
 -            av_log(avctx, AV_LOG_ERROR, "packet size is too small\n");
 -            return AVERROR_INVALIDDATA;
 +        if (avpkt->size % avctx->channels) {
 +            av_log(avctx, AV_LOG_WARNING, "Packet with odd size, ignoring last byte\n");
          }
 -        if (esc->data[0]) {
 -            av_log(avctx, AV_LOG_ERROR, "unexpected data after first packet\n");
 +        if (avpkt->size < (hdr_size + 1) * avctx->channels) {
 +            av_log(avctx, AV_LOG_ERROR, "packet size is too small\n");
-             return AVERROR(EINVAL);
+             return AVERROR_INVALIDDATA;
          }
  
 -        if (is_compr) {
          esc->fib_acc[0] = avpkt->data[1] + 128;
          if (avctx->channels == 2)
              esc->fib_acc[1] = avpkt->data[2+chan_size+1] + 128;