Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 15 Jul 2012 23:32:52 +0000 (01:32 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 15 Jul 2012 23:32:52 +0000 (01:32 +0200)
* qatar/master:
  configure: Check for CommandLineToArgvW
  vc1dec: Do not use random pred_flag if motion vector data is skipped
  vp8: Enclose pthread function calls in ifdefs
  snow: refactor code to work around a compiler bug in MSVC.
  vp8: Include the thread headers before using the pthread types
  configure: Check for getaddrinfo in ws2tcpip.h, too
  vp8: implement sliced threading
  vp8: move data from VP8Context->VP8Macroblock
  vp8: refactor decoding a single mb_row
  doc: update api changes with the right commit hashes
  mem: introduce av_malloc_array and av_mallocz_array

Conflicts:
configure
doc/APIchanges
libavcodec/vp8.c
libavutil/mem.h
libavutil/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
configure
doc/APIchanges
libavcodec/snowenc.c
libavcodec/vc1dec.c
libavcodec/vp8.c
libavcodec/vp8.h
libavutil/mem.h
libavutil/version.h

diff --cc configure
+++ b/configure
@@@ -1187,9 -1061,9 +1187,10 @@@ HAVE_LIST=
      attribute_may_alias
      attribute_packed
      cbrtf
 +    clock_gettime
      closesocket
      cmov
+     CommandLineToArgvW
      cpuid
      dcbzl
      dev_bktr_ioctl_bt848_h
  # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
  check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
  
 +check_func  clock_gettime || { check_func clock_gettime -lrt && add_extralibs -lrt; }
  check_func  fcntl
  check_func  fork
- check_func  getaddrinfo $network_extralibs
+ check_func  getaddrinfo $network_extralibs ||
+     check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
  check_func  gethrtime
  check_func  getopt
  check_func  getrusage
@@@ -3203,10 -2887,8 +3205,11 @@@ check_func  sched_getaffinit
  check_func  sysconf
  check_func  sysctl
  check_func  usleep
 +check_func_headers conio.h kbhit
 +check_func_headers windows.h PeekNamedPipe
  check_func_headers io.h setmode
 +check_func_headers lzo/lzo1x.h lzo1x_999_compress
+ check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
  check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
  check_func_headers windows.h GetProcessAffinityMask
  check_func_headers windows.h GetProcessTimes
diff --cc doc/APIchanges
@@@ -15,49 -13,10 +15,52 @@@ libavutil:     2011-04-1
  
  API changes, most recent first:
  
- 2012-06-22 - xxxxxxx - lavu 51.34.0
 +2012-07-14 - xxxxxxx - lavc 54.38.100 - avcodec.h
 +  Add metadata to AVFrame, and the accessor functions
 +  av_frame_get_metadata() and av_frame_set_metadata().
 +
 +2012-07-10 - xxxxxxx - lavc 54.33.100
 +  Add av_fast_padded_mallocz().
 +
 +2012-07-10 - xxxxxxx - lavfi 3.2.0 - avfilter.h
 +  Add init_opaque() callback to AVFilter struct.
 +
 +2012-06-26 - xxxxxxx - lavu 51.63.100 - imgutils.h
 +  Add functions to libavutil/imgutils.h:
 +  av_image_get_buffer_size()
 +  av_image_fill_arrays()
 +  av_image_copy_to_buffer()
 +
 +2012-06-24 - xxxxxxx - lavu 51.62.100 - version.h
 +  version moved from avutil.h to version.h
 +
 +2012-04-11 - xxxxxxx - lavu 51.58.100 - error.h
 +  Add av_make_error_string() and av_err2str() utilities to
 +  libavutil/error.h.
 +
 +2012-06-05 - xxxxxxx - lavc 54.24.100
 +  Add pkt_duration field to AVFrame.
 +
 +2012-05-24 - xxxxxxx - lavu 51.54.100
 +  Move AVPALETTE_SIZE and AVPALETTE_COUNT macros from
 +  libavcodec/avcodec.h to libavutil/pixfmt.h.
 +
 +2012-05-07 - xxxxxxx - lavf 54.5.100
 +  Add av_guess_sample_aspect_ratio() function.
 +
 +2012-04-20 - xxxxxxx - lavfi 2.70.100
 +  Add avfilter_unref_bufferp() to avfilter.h.
 +
 +2012-04-12 - xxxxxxx - lavfi 2.68.100
 +  Install libavfilter/asrc_abuffer.h public header.
 +
 +2012-03-26 - a67d9cf - lavfi 2.66.100
 +  Add avfilter_fill_frame_from_{audio_,}buffer_ref() functions.
 +
+ 2012-07-10 - 5fade8a - lavu 51.37.0
+   Add av_malloc_array() and av_mallocz_array()
+ 2012-06-22 - d3d3a32 - lavu 51.34.0
    Add av_usleep()
  
  2012-06-20 - ae0a301 - lavu 51.33.0
    Add av_get_channel_layout_channel_index(), av_get_channel_name()
    and av_channel_layout_extract_channel().
  
- 2012-05-25 - e0e0793 - lavu 51.31.0 - opt.h
+ 2012-05-25 - 154486f - lavu 51.31.0 - opt.h
    Add av_opt_set_bin()
  
 -2012-05-26 - e9cef89 - lavf 54.3.0
 -  Add AVFMT_TS_NONSTRICT format flag to indicate that a muxer supports
 -  non-increasing monotone timestamps.
 -
  2012-05-15 - lavfi 2.17.0
    Add support for audio filters
    ac71230/a2cd9be - add video/audio buffer sink in a new installed
Simple merge
Simple merge
@@@ -4,10 -4,11 +4,11 @@@
   * Copyright (C) 2010 David Conrad
   * Copyright (C) 2010 Ronald S. Bultje
   * Copyright (C) 2010 Jason Garrett-Glaser
+  * Copyright (C) 2012 Daniel Kang
   *
 - * 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.
@@@ -108,7 -114,10 +114,10 @@@ static void vp8_decode_flush(AVCodecCon
  
  static int update_dimensions(VP8Context *s, int width, int height)
  {
 -    if (width  != s->avctx->width ||
+     AVCodecContext *avctx = s->avctx;
+     int i;
 +    if (width  != s->avctx->width || ((width+15)/16 != s->mb_width || (height+15)/16 != s->mb_height) && s->macroblocks_base ||
          height != s->avctx->height) {
          if (av_image_check_size(width, height, 0, s->avctx))
              return AVERROR_INVALIDDATA;
@@@ -366,6 -382,12 +382,12 @@@ static int decode_frame_header(VP8Conte
          return AVERROR_INVALIDDATA;
      }
  
 -        width != s->avctx->width || height != s->avctx->height) {
+     if (!s->macroblocks_base || /* first frame */
++        width != s->avctx->width || height != s->avctx->height || (width+15)/16 != s->mb_width || (height+15)/16 != s->mb_height) {
+         if ((ret = update_dimensions(s, width, height)) < 0)
+             return ret;
+     }
      get_quants(s);
  
      if (!s->keyframe) {
@@@ -651,12 -699,11 +699,12 @@@ void decode_mb_mode(VP8Context *s, VP8M
  {
      VP56RangeCoder *c = &s->c;
  
 -    if (s->segmentation.update_map)
 -        *segment = vp8_rac_get_tree(c, vp8_segmentid_tree, s->prob->segmentid);
 -    else if (s->segmentation.enabled)
 +    if (s->segmentation.update_map) {
 +        int bit  = vp56_rac_get_prob(c, s->prob->segmentid[0]);
 +        *segment = vp56_rac_get_prob(c, s->prob->segmentid[1+bit]) + 2*bit;
 +    } else if (s->segmentation.enabled)
          *segment = ref ? *ref : *segment;
-     s->segment = *segment;
+     mb->segment = *segment;
  
      mb->skip = s->mbskip_enabled ? vp56_rac_get_prob(c, s->prob->mbskip) : 0;
  
@@@ -4,10 -4,11 +4,11 @@@
   * Copyright (C) 2010 David Conrad
   * Copyright (C) 2010 Ronald S. Bultje
   * Copyright (C) 2010 Jason Garrett-Glaser
+  * Copyright (C) 2012 Daniel Kang
   *
 - * 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.
diff --cc libavutil/mem.h
@@@ -124,18 -129,23 +140,35 @@@ void av_free(void *ptr)
  void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1);
  
  /**
 + * Allocate a block of nmemb * size bytes with alignment suitable for all
 + * memory accesses (including vectors if available on the CPU) and
 + * zero all the bytes of the block.
 + * The allocation will fail if nmemb * size is greater than or equal
 + * to INT_MAX.
 + * @param nmemb
 + * @param size
 + * @return Pointer to the allocated block, NULL if it cannot be allocated.
 + */
 +void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib;
 +
 +/**
+  * Helper function to allocate a block of size * nmemb bytes with
+  * using av_mallocz()
+  * @param nmemb Number of elements
+  * @param size Size of the single element
+  * @return Pointer to the allocated block, NULL if the block cannot
+  * be allocated.
+  * @see av_mallocz()
+  * @see av_malloc_array()
+  */
+ av_alloc_size(1,2) static inline void *av_mallocz_array(size_t nmemb, size_t size)
+ {
+     if (size <= 0 || nmemb >= INT_MAX / size)
+         return NULL;
+     return av_mallocz(nmemb * size);
+ }
+ /**
   * Duplicate the string s.
   * @param s string to be duplicated
   * @return Pointer to a newly allocated string containing a
@@@ -39,8 -37,8 +39,8 @@@
   */
  
  #define LIBAVUTIL_VERSION_MAJOR 51
- #define LIBAVUTIL_VERSION_MINOR 64
 -#define LIBAVUTIL_VERSION_MINOR 37
 -#define LIBAVUTIL_VERSION_MICRO  0
++#define LIBAVUTIL_VERSION_MINOR 65
 +#define LIBAVUTIL_VERSION_MICRO 100
  
  #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
                                                 LIBAVUTIL_VERSION_MINOR, \