Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 17 Aug 2012 15:06:07 +0000 (17:06 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 17 Aug 2012 15:06:52 +0000 (17:06 +0200)
* qatar/master:
  libvpxenc: use the default bitrate if not set
  utvideo: Rename utvideo.c to utvideodec.c
  doc: Fix syntax errors in sample Emacs config
  mjpegdec: more meaningful return values
  configure: clean up Altivec detection
  getopt: Remove an unnecessary define
  rtmp: Use int instead of ssize_t
  getopt: Add missing includes
  rtmp: Add support for receiving incoming streams
  Add missing includes for code relying on external libraries

Conflicts:
libavcodec/libopenjpegenc.c
libavcodec/libvpxenc.c
libavcodec/mjpegdec.c
libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
16 files changed:
1  2 
compat/getopt.c
configure
doc/developer.texi
doc/protocols.texi
libavcodec/Makefile
libavcodec/libopenjpegdec.c
libavcodec/libopenjpegenc.c
libavcodec/libschroedinger.c
libavcodec/libschroedingerdec.c
libavcodec/libxavs.c
libavcodec/mjpegdec.c
libavcodec/utvideodec.c
libavfilter/vf_frei0r.c
libavfilter/vf_libopencv.c
libavformat/rtmpproto.c
libavformat/version.h

diff --cc compat/getopt.c
Simple merge
diff --cc configure
Simple merge
@@@ -201,11 -232,11 +201,11 @@@ autocmd InsertEnter * match ForbiddenWh
  
  For Emacs, add these roughly equivalent lines to your @file{.emacs.d/init.el}:
  @example
 -(c-add-style "libav"
 +(c-add-style "ffmpeg"
               '("k&r"
                 (c-basic-offset . 4)
-                (indent-tabs-mode nil)
-                (show-trailing-whitespace t)
+                (indent-tabs-mode nil)
+                (show-trailing-whitespace t)
                 (c-offsets-alist
                  (statement-cont . (c-lineup-assignments +)))
                 )
Simple merge
@@@ -431,13 -377,9 +431,13 @@@ OBJS-$(CONFIG_TTA_DECODER)             
  OBJS-$(CONFIG_TWINVQ_DECODER)          += twinvq.o celp_math.o
  OBJS-$(CONFIG_TXD_DECODER)             += txd.o s3tc.o
  OBJS-$(CONFIG_ULTI_DECODER)            += ulti.o
- OBJS-$(CONFIG_UTVIDEO_DECODER)         += utvideo.o
+ OBJS-$(CONFIG_UTVIDEO_DECODER)         += utvideodec.o
  OBJS-$(CONFIG_V210_DECODER)            += v210dec.o
  OBJS-$(CONFIG_V210_ENCODER)            += v210enc.o
 +OBJS-$(CONFIG_V308_DECODER)            += v308dec.o
 +OBJS-$(CONFIG_V308_ENCODER)            += v308enc.o
 +OBJS-$(CONFIG_V408_DECODER)            += v408dec.o
 +OBJS-$(CONFIG_V408_ENCODER)            += v408enc.o
  OBJS-$(CONFIG_V410_DECODER)            += v410dec.o
  OBJS-$(CONFIG_V410_ENCODER)            += v410enc.o
  OBJS-$(CONFIG_V210X_DECODER)           += v210x.o
Simple merge
@@@ -27,7 -27,7 +27,8 @@@
  #define  OPJ_STATIC
  #include <openjpeg.h>
  
 +#include "libavutil/avassert.h"
+ #include "libavutil/common.h"
  #include "libavutil/imgutils.h"
  #include "libavutil/intreadwrite.h"
  #include "libavutil/opt.h"
Simple merge
Simple merge
Simple merge
@@@ -247,16 -242,11 +248,17 @@@ int ff_mjpeg_decode_sof(MJpegDecodeCont
      if (nb_components <= 0 ||
          nb_components > MAX_COMPONENTS)
          return -1;
 +    if (s->interlaced && (s->bottom_field == !s->interlace_polarity)) {
 +        if (nb_components != s->nb_components) {
 +            av_log(s->avctx, AV_LOG_ERROR, "nb_components changing in interlaced picture\n");
 +            return AVERROR_INVALIDDATA;
 +        }
 +    }
      if (s->ls && !(s->bits <= 8 || nb_components == 1)) {
-         av_log(s->avctx, AV_LOG_ERROR,
-                "only <= 8 bits/component or 16-bit gray accepted for JPEG-LS\n");
-         return -1;
+         av_log_missing_feature(s->avctx,
+                                "only <= 8 bits/component or "
+                                "16-bit gray accepted for JPEG-LS\n", 0);
+         return AVERROR_PATCHWELCOME;
      }
      s->nb_components = nb_components;
      s->h_max         = 1;
              s->h_max = s->h_count[i];
          if (s->v_count[i] > s->v_max)
              s->v_max = s->v_count[i];
 +        if (!s->h_count[i] || !s->v_count[i]) {
 +            av_log(s->avctx, AV_LOG_ERROR, "h/v_count is 0\n");
 +            return -1;
 +        }
          s->quant_index[i] = get_bits(&s->gb, 8);
          if (s->quant_index[i] >= 4)
-             return -1;
+             return AVERROR_INVALIDDATA;
          av_log(s->avctx, AV_LOG_DEBUG, "component %d %d:%d id: %d quant:%d\n",
                 i, s->h_count[i], s->v_count[i],
                 s->component_id[i], s->quant_index[i]);
      }
  
      if (s->ls && (s->h_max > 1 || s->v_max > 1)) {
-         av_log(s->avctx, AV_LOG_ERROR,
-                "Subsampling in JPEG-LS is not supported.\n");
-         return -1;
+         av_log_missing_feature(s->avctx,
+                                "Subsampling in JPEG-LS is not supported.\n", 0);
+         return AVERROR_PATCHWELCOME;
      }
  
 -    if (s->v_max == 1 && s->h_max == 1 && s->lossless == 1)
 +    if (s->v_max == 1 && s->h_max == 1 && s->lossless==1 && nb_components==3)
          s->rgb = 1;
  
      /* if different size, realloc/alloc picture */
          break;
      default:
          av_log(s->avctx, AV_LOG_ERROR, "Unhandled pixel format 0x%x\n", pix_fmt_id);
-         return -1;
+         return AVERROR_PATCHWELCOME;
      }
 +    if ((s->upscale_h || s->upscale_v) && s->avctx->lowres) {
 +        av_log(s->avctx, AV_LOG_ERROR, "lowres not supported for weird subsampling\n");
 +        return AVERROR_PATCHWELCOME;
 +    }
      if (s->ls) {
 +        s->upscale_h = s->upscale_v = 0;
          if (s->nb_components > 1)
              s->avctx->pix_fmt = PIX_FMT_RGB24;
          else if (s->bits <= 8)
@@@ -1124,12 -974,18 +1126,12 @@@ static int mjpeg_decode_scan_progressiv
                  if (ret < 0) {
                      av_log(s->avctx, AV_LOG_ERROR,
                             "error y=%d x=%d\n", mb_y, mb_x);
-                     return -1;
+                     return AVERROR_INVALIDDATA;
                  }
 -            }
  
              if (last_scan) {
 -                if (copy_mb) {
 -                    copy_block8(ptr, reference_data + block_offset,
 -                                linesize, linesize, 8);
 -                } else {
                      s->dsp.idct_put(ptr, linesize, *block);
 -                    ptr += 8;
 -                }
 +                    ptr += 8 >> s->avctx->lowres;
              }
          }
      }
@@@ -1243,42 -1084,35 +1245,45 @@@ next_field
  //            for () {
  //            reset_ls_coding_parameters(s, 0);
  
-             if (ff_jpegls_decode_picture(s, predictor, point_transform, ilv) < 0)
-                 return -1;
+             if ((ret = ff_jpegls_decode_picture(s, predictor,
+                                                 point_transform, ilv)) < 0)
+                 return ret;
          } else {
              if (s->rgb) {
-                 if (ljpeg_decode_rgb_scan(s, nb_components, predictor, point_transform) < 0)
-                     return -1;
 -                if ((ret = ljpeg_decode_rgb_scan(s, predictor,
 -                                                 point_transform)) < 0)
++                if ((ret = ljpeg_decode_rgb_scan(s, nb_components, predictor, point_transform)) < 0)
+                     return ret;
              } else {
-                 if (ljpeg_decode_yuv_scan(s, predictor, point_transform) < 0)
-                     return -1;
 -                if ((ret = ljpeg_decode_yuv_scan(s, predictor,
 -                                                 point_transform)) < 0)
++                if ((ret = ljpeg_decode_yuv_scan(s, predictor, point_transform)) < 0)
+                     return ret;
              }
          }
      } else {
          if (s->progressive && predictor) {
-             if (mjpeg_decode_scan_progressive_ac(s, predictor, ilv, prev_shift,
-                                                  point_transform) < 0)
-                 return -1;
 +            av_assert0(s->picture_ptr == &s->picture);
 -                                                        point_transform,
 -                                                        mb_bitmask,
 -                                                        reference)) < 0)
+             if ((ret = mjpeg_decode_scan_progressive_ac(s, predictor,
+                                                         ilv, prev_shift,
++                                                        point_transform)) < 0)
+                 return ret;
          } else {
-             if (mjpeg_decode_scan(s, nb_components, prev_shift, point_transform,
-                                   mb_bitmask, reference) < 0)
-                 return -1;
+             if ((ret = mjpeg_decode_scan(s, nb_components,
+                                          prev_shift, point_transform,
+                                          mb_bitmask, reference)) < 0)
+                 return ret;
          }
      }
 +    if(s->interlaced && get_bits_left(&s->gb) > 32 && show_bits(&s->gb, 8) == 0xFF) {
 +        GetBitContext bak= s->gb;
 +        align_get_bits(&bak);
 +        if(show_bits(&bak, 16) == 0xFFD1) {
 +            av_log(s->avctx, AV_LOG_DEBUG, "AVRn ingterlaced picture\n");
 +            s->gb = bak;
 +            skip_bits(&s->gb, 16);
 +            s->bottom_field ^= 1;
 +
 +            goto next_field;
 +        }
 +    }
 +
      emms_c();
      return 0;
   out_of_range:
@@@ -1595,7 -1436,7 +1600,8 @@@ int ff_mjpeg_decode_frame(AVCodecContex
      const uint8_t *unescaped_buf_ptr;
      int unescaped_buf_size;
      int start_code;
 +    int i, index;
+     int ret = 0;
      AVFrame *picture = data;
  
      s->got_picture = 0; // picture from previous image can not be reused
                  s->lossless    = 1;
                  s->ls          = 1;
                  s->progressive = 0;
-                 if (ff_mjpeg_decode_sof(s) < 0)
-                     return -1;
+                 if ((ret = ff_mjpeg_decode_sof(s)) < 0)
+                     return ret;
                  break;
              case LSE:
-                 if (!CONFIG_JPEGLS_DECODER || ff_jpegls_decode_lse(s) < 0)
-                     return -1;
+                 if (!CONFIG_JPEGLS_DECODER ||
+                     (ret = ff_jpegls_decode_lse(s)) < 0)
+                     return ret;
                  break;
              case EOI:
 -                s->cur_scan = 0;
 -                if ((s->buggy_avid && !s->interlaced) || s->restart_interval)
 -                    break;
  eoi_parser:
 +                s->cur_scan = 0;
                  if (!s->got_picture) {
                      av_log(avctx, AV_LOG_WARNING,
                             "Found EOI before any SOF, ignoring\n");
  
                  goto the_end;
              case SOS:
-                 if (ff_mjpeg_decode_sos(s, NULL, NULL) < 0 &&
 -                if (!s->got_picture) {
 -                    av_log(avctx, AV_LOG_WARNING,
 -                           "Can not process SOS before SOF, skipping\n");
 -                    break;
 -                    }
+                 if ((ret = ff_mjpeg_decode_sos(s, NULL, NULL)) < 0 &&
                      (avctx->err_recognition & AV_EF_EXPLODE))
-                     return AVERROR_INVALIDDATA;
+                     return ret;
 -                /* buggy avid puts EOI every 10-20th frame */
 -                /* if restart period is over process EOI */
 -                if ((s->buggy_avid && !s->interlaced) || s->restart_interval)
 -                    goto eoi_parser;
                  break;
              case DRI:
                  mjpeg_decode_dri(s);
          goto eoi_parser;
      }
      av_log(avctx, AV_LOG_FATAL, "No JPEG data found in image\n");
-     return -1;
+     return AVERROR_INVALIDDATA;
  the_end:
 -    av_log(avctx, AV_LOG_DEBUG, "mjpeg decode frame unused %td bytes\n",
 +    if (s->upscale_h) {
 +        uint8_t *line = s->picture_ptr->data[s->upscale_h];
 +        av_assert0(avctx->pix_fmt == PIX_FMT_YUVJ444P ||
 +                   avctx->pix_fmt == PIX_FMT_YUV444P  ||
 +                   avctx->pix_fmt == PIX_FMT_YUVJ440P ||
 +                   avctx->pix_fmt == PIX_FMT_YUV440P);
 +        for (i = 0; i < s->chroma_height; i++) {
 +            for (index = s->width - 1; index; index--)
 +                line[index] = (line[index / 2] + line[(index + 1) / 2]) >> 1;
 +            line += s->linesize[s->upscale_h];
 +        }
 +    }
 +    if (s->upscale_v) {
 +        uint8_t *dst = &((uint8_t *)s->picture_ptr->data[s->upscale_v])[(s->height - 1) * s->linesize[s->upscale_v]];
 +        av_assert0(avctx->pix_fmt == PIX_FMT_YUVJ444P ||
 +                   avctx->pix_fmt == PIX_FMT_YUV444P  ||
 +                   avctx->pix_fmt == PIX_FMT_YUVJ422P ||
 +                   avctx->pix_fmt == PIX_FMT_YUV422P);
 +        for (i = s->height - 1; i; i--) {
 +            uint8_t *src1 = &((uint8_t *)s->picture_ptr->data[s->upscale_v])[i / 2 * s->linesize[s->upscale_v]];
 +            uint8_t *src2 = &((uint8_t *)s->picture_ptr->data[s->upscale_v])[(i + 1) / 2 * s->linesize[s->upscale_v]];
 +            if (src1 == src2) {
 +                memcpy(dst, src1, s->width);
 +            } else {
 +                for (index = 0; index < s->width; index++)
 +                    dst[index] = (src1[index] + src2[index]) >> 1;
 +            }
 +            dst -= s->linesize[s->upscale_v];
 +        }
 +    }
 +    av_log(avctx, AV_LOG_DEBUG, "decode frame unused %td bytes\n",
             buf_end - buf_ptr);
  //  return buf_end - buf_ptr;
      return buf_ptr - buf;
@@@ -2,20 -2,20 +2,20 @@@
   * Ut Video decoder
   * Copyright (c) 2011 Konstantin Shishkov
   *
-- * This file is part of Libav.
++ * This file is part of FFmpeg.
   *
-- * Libav is free software; you can redistribute it and/or
++ * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
-- * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
-- * License along with Libav; if not, write to the Free Software
++ * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
Simple merge
Simple merge
Simple merge
@@@ -30,8 -30,8 +30,8 @@@
  #include "libavutil/avutil.h"
  
  #define LIBAVFORMAT_VERSION_MAJOR 54
- #define LIBAVFORMAT_VERSION_MINOR 24
- #define LIBAVFORMAT_VERSION_MICRO 101
 -#define LIBAVFORMAT_VERSION_MINOR 14
 -#define LIBAVFORMAT_VERSION_MICRO  0
++#define LIBAVFORMAT_VERSION_MINOR 25
++#define LIBAVFORMAT_VERSION_MICRO 100
  
  #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                 LIBAVFORMAT_VERSION_MINOR, \