Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 11 Sep 2012 13:24:22 +0000 (15:24 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 11 Sep 2012 13:24:22 +0000 (15:24 +0200)
* qatar/master:
  rtpdec_jpeg: Add support for default quantizers
  x86: dsputil: Move specific optimization settings out of global init function
  avplay: get rid of ugly casts in the options table
  avplay: fix prototypes for option callbacks.
  flvdec: always set AVFMTCTX_NOHEADER.
  file: Use a normal private context for storing the file descriptor
  configure: Adjust the xgetbv instrinsic check
  configure: Add --disable-inline-asm command line option
  configure: Don't try to enable the log2 function on msvcrt

Conflicts:
configure
ffplay.c
libavcodec/x86/dsputil_mmx.c
libavformat/file.c
libavformat/flvdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
configure
libavformat/file.c
libavformat/flvdec.c
libavformat/rtpdec_jpeg.c

diff --cc configure
+++ b/configure
@@@ -290,17 -259,10 +290,18 @@@ Optimization options (experts only)
    --disable-mmi            disable MMI optimizations
    --disable-neon           disable NEON optimizations
    --disable-vis            disable VIS optimizations
+   --disable-inline-asm     disable use of inline assembler
    --disable-yasm           disable use of yasm assembler
 -
 -Developer options (useful when working on Libav itself):
 +  --disable-mips32r2       disable MIPS32R2 optimizations
 +  --disable-mipsdspr1      disable MIPS DSP ASE R1 optimizations
 +  --disable-mipsdspr2      disable MIPS DSP ASE R2 optimizations
 +  --disable-mipsfpu        disable floating point MIPS optimizations
 +  --disable-fast-unaligned consider unaligned accesses slow
 +  --postproc-version=V     build libpostproc version V.
 +                           Where V can be '$ALT_PP_VER_MAJOR.$ALT_PP_VER_MINOR.$ALT_PP_VER_MICRO' or 'current'. [$postproc_version_default]
 +
 +Developer options (useful when working on FFmpeg itself):
 +  --enable-coverage        build with test coverage instrumentation
    --disable-debug          disable debugging symbols
    --enable-debug=LEVEL     set the debug level [$debuglevel]
    --disable-optimizations  disable compiler optimizations
@@@ -1429,9 -1276,9 +1430,10 @@@ CMDLINE_SELECT=
      cross_compile
      debug
      extra_warnings
+     inline_asm
      logging
      optimizations
 +    stripping
      symver
      yasm
  "
@@@ -3350,12 -3029,12 +3354,12 @@@ elif enabled sparc; the
  
  elif enabled x86; then
  
-     check_code ld immintrin.h "__xgetbv(0)" "cc" && enable xgetbv
 -    check_code ld immintrin.h "return __xgetbv(0)" && enable xgetbv
 -    check_code ld intrin.h "int info[4]; __cpuid(info, 0)" && enable cpuid
 -    check_code ld intrin.h "__rdtsc()" && enable rdtsc
 -    check_code ld intrin.h "unsigned int x = __readeflags()" && enable rweflags
++    check_code ld immintrin.h "return __xgetbv(0)" "cc" && enable xgetbv
 +    check_code ld intrin.h "int info[4]; __cpuid(info, 0)" "cc" && enable cpuid
 +    check_code ld intrin.h "__rdtsc()" "cc" && enable rdtsc
 +    check_code ld intrin.h "unsigned int x = __readeflags()" "cc" && enable rweflags
  
 -    check_code ld mmintrin.h "_mm_empty()" && enable mm_empty
 +    check_code ld mmintrin.h "_mm_empty()" "cc" && enable mm_empty
  
      enable local_aligned_8 local_aligned_16
  
  
  /* standard file protocol */
  
+ typedef struct FileContext {
+     int fd;
+ } FileContext;
  static int file_read(URLContext *h, unsigned char *buf, int size)
  {
-     int fd = (intptr_t) h->priv_data;
-     int r = read(fd, buf, size);
+     FileContext *c = h->priv_data;
 -    return read(c->fd, buf, size);
++    int r = read(c->fd, buf, size);
 +    return (-1 == r)?AVERROR(errno):r;
  }
  
  static int file_write(URLContext *h, const unsigned char *buf, int size)
  {
-     int fd = (intptr_t) h->priv_data;
-     int r = write(fd, buf, size);
+     FileContext *c = h->priv_data;
 -    return write(c->fd, buf, size);
++    int r = write(c->fd, buf, size);
 +    return (-1 == r)?AVERROR(errno):r;
  }
  
  static int file_get_handle(URLContext *h)
@@@ -80,9 -75,9 +85,10 @@@ static int file_check(URLContext *h, in
  
  static int file_open(URLContext *h, const char *filename, int flags)
  {
+     FileContext *c = h->priv_data;
      int access;
      int fd;
 +    struct stat st;
  
      av_strstart(filename, "file:", &filename);
  
      fd = open(filename, access, 0666);
      if (fd == -1)
          return AVERROR(errno);
-     h->priv_data = (void *) (intptr_t) fd;
+     c->fd = fd;
 +
 +    h->is_streamed = !fstat(fd, &st) && S_ISFIFO(st.st_mode);
 +
      return 0;
  }
  
  /* XXX: use llseek */
  static int64_t file_seek(URLContext *h, int64_t pos, int whence)
  {
-     int fd = (intptr_t) h->priv_data;
+     FileContext *c = h->priv_data;
      if (whence == AVSEEK_SIZE) {
          struct stat st;
-         int ret = fstat(fd, &st);
+         int ret = fstat(c->fd, &st);
 -        return ret < 0 ? AVERROR(errno) : st.st_size;
 +        return ret < 0 ? AVERROR(errno) : (S_ISFIFO(st.st_mode) ? 0 : st.st_size);
      }
-     return lseek(fd, pos, whence);
+     return lseek(c->fd, pos, whence);
  }
  
  static int file_close(URLContext *h)
@@@ -726,13 -710,12 +727,14 @@@ static int flv_read_packet(AVFormatCont
          }
      }
      if(i == s->nb_streams){
 +        av_log(s, AV_LOG_WARNING, "Stream discovered after head already parsed\n");
          st = create_stream(s,
 -            is_audio ? AVMEDIA_TYPE_AUDIO : AVMEDIA_TYPE_VIDEO);
 +             (int[]){AVMEDIA_TYPE_VIDEO, AVMEDIA_TYPE_AUDIO, AVMEDIA_TYPE_DATA}[stream_type]);
++
      }
 -    av_dlog(s, "%d %X %d \n", is_audio, flags, st->discard);
 -    if(  (st->discard >= AVDISCARD_NONKEY && !((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_KEY ||         is_audio))
 -       ||(st->discard >= AVDISCARD_BIDIR  &&  ((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_DISP_INTER && !is_audio))
 +    av_dlog(s, "%d %X %d \n", stream_type, flags, st->discard);
 +    if(  (st->discard >= AVDISCARD_NONKEY && !((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_KEY || (stream_type == FLV_STREAM_TYPE_AUDIO)))
 +       ||(st->discard >= AVDISCARD_BIDIR  &&  ((flags & FLV_VIDEO_FRAMETYPE_MASK) == FLV_FRAME_DISP_INTER && (stream_type == FLV_STREAM_TYPE_VIDEO)))
         || st->discard >= AVDISCARD_ALL
         ){
          avio_seek(s->pb, next, SEEK_SET);
Simple merge