Merge commit 'd488c3bcbaf7ddda42597e014deb661a7e9e2112'
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 29 Aug 2012 15:46:10 +0000 (17:46 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 29 Aug 2012 16:04:34 +0000 (18:04 +0200)
* commit 'd488c3bcbaf7ddda42597e014deb661a7e9e2112':
  configure: support Bitrig OS
  yuv2rgb: handle line widths that are not a multiple of 4.
  graph2dot: Use the fallback getopt implementation if needed
  tools: Include io.h for open/read/write/close if unistd.h doesn't exist
  testprogs: Remove unused includes
  qt-faststart: Use other seek/tell functions on MSVC than on mingw
  ismindex: Include direct.h for _mkdir on windows
  sdp: Use static const char arrays instead of pointers to strings
  x86: avcodec: Drop silly "_mmx" suffixes from filenames
  x86: avcodec: Drop silly "_sse" suffixes from filenames
  sdp: Include profile-level-id for H264
  utvideoenc: use ff_huff_gen_len_table
  huffman: add ff_huff_gen_len_table
  cllc: simplify/fix swapped data buffer allocation.
  rtpdec_h264: Don't set the pixel format
  h264: Check that the codec isn't null before accessing it
  audio_frame_queue: Define af_queue_log_state before using it

Conflicts:
libavcodec/audio_frame_queue.c
libavcodec/h264.c
libavcodec/huffman.h
libavcodec/huffyuv.c
libavcodec/utvideoenc.c
libavcodec/x86/Makefile

Merged-by: Michael Niedermayer <michaelni@gmx.at>
28 files changed:
1  2 
configure
libavcodec/audio_frame_queue.c
libavcodec/huffman.c
libavcodec/huffman.h
libavcodec/huffyuv.c
libavcodec/motion-test.c
libavcodec/utvideoenc.c
libavcodec/x86/Makefile
libavcodec/x86/cavsdsp.c
libavcodec/x86/dct32.asm
libavcodec/x86/dsputil_mmx.c
libavcodec/x86/fdct.c
libavcodec/x86/fft.asm
libavcodec/x86/h264_qpel.c
libavcodec/x86/imdct36.asm
libavcodec/x86/lpc.c
libavcodec/x86/motion_est.c
libavcodec/x86/mpegaudiodec.c
libavcodec/x86/simple_idct.c
libavcodec/x86/snowdsp.c
libavformat/rtpdec_h264.c
libavformat/sdp.c
libswscale/colorspace-test.c
libswscale/yuv2rgb.c
tools/graph2dot.c
tools/ismindex.c
tools/pktdumper.c
tools/qt-faststart.c

diff --cc configure
+++ b/configure
@@@ -1549,9 -1374,9 +1549,10 @@@ eac3_encoder_select="ac3_encoder
  eamad_decoder_select="aandcttables error_resilience"
  eatgq_decoder_select="aandcttables"
  eatqi_decoder_select="aandcttables error_resilience mpegvideo"
 +exr_decoder_select="zlib"
  ffv1_decoder_select="golomb rangecoder"
  ffv1_encoder_select="rangecoder"
+ ffvhuff_encoder_select="huffman"
  flac_decoder_select="golomb"
  flac_encoder_select="golomb lpc"
  flashsv_decoder_select="zlib"
@@@ -40,28 -51,53 +40,44 @@@ void ff_af_queue_close(AudioFrameQueue 
      memset(afq, 0, sizeof(*afq));
  }
  
+ #ifdef DEBUG
+ static void af_queue_log_state(AudioFrameQueue *afq)
+ {
+     AudioFrame *f;
+     av_dlog(afq->avctx, "remaining delay   = %d\n", afq->remaining_delay);
+     av_dlog(afq->avctx, "remaining samples = %d\n", afq->remaining_samples);
+     av_dlog(afq->avctx, "frames:\n");
+     f = afq->frame_queue;
+     while (f) {
+         av_dlog(afq->avctx, "  [ pts=%9"PRId64" duration=%d ]\n",
+                 f->pts, f->duration);
+         f = f->next;
+     }
+ }
+ #endif /* DEBUG */
  int ff_af_queue_add(AudioFrameQueue *afq, const AVFrame *f)
  {
 -    AudioFrame *new_frame;
 -    AudioFrame *queue_end = afq->frame_queue;
 -
 -    /* find the end of the queue */
 -    while (queue_end && queue_end->next)
 -        queue_end = queue_end->next;
 -
 -    /* allocate new frame queue entry */
 -    if (!(new_frame = av_malloc(sizeof(*new_frame))))
 +    AudioFrame *new = av_fast_realloc(afq->frames, &afq->frame_alloc, sizeof(*afq->frames)*(afq->frame_count+1));
 +    if(!new)
          return AVERROR(ENOMEM);
 +    afq->frames = new;
 +    new += afq->frame_count;
  
      /* get frame parameters */
 -    new_frame->next = NULL;
 -    new_frame->duration = f->nb_samples;
 +    new->duration = f->nb_samples;
 +    new->duration += afq->remaining_delay;
      if (f->pts != AV_NOPTS_VALUE) {
 -        new_frame->pts = av_rescale_q(f->pts,
 +        new->pts = av_rescale_q(f->pts,
                                        afq->avctx->time_base,
                                        (AVRational){ 1, afq->avctx->sample_rate });
 -        afq->next_pts = new_frame->pts + new_frame->duration;
 +        new->pts -= afq->remaining_delay;
 +        if(afq->frame_count && new[-1].pts >= new->pts)
 +            av_log(afq->avctx, AV_LOG_WARNING, "Que input is backward in time\n");
      } else {
 -        new_frame->pts = AV_NOPTS_VALUE;
 -        afq->next_pts  = AV_NOPTS_VALUE;
 +        new->pts = AV_NOPTS_VALUE;
      }
 -
 -    /* add new frame to the end of the queue */
 -    if (!queue_end)
 -        afq->frame_queue = new_frame;
 -    else
 -        queue_end->next = new_frame;
 +    afq->remaining_delay = 0;
  
      /* add frame sample count */
      afq->remaining_samples += f->nb_samples;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -13,17 -13,15 +13,17 @@@ MMX-OBJS                               
  
  MMX-OBJS-$(CONFIG_AAC_DECODER)         += x86/sbrdsp_init.o
  MMX-OBJS-$(CONFIG_AC3DSP)              += x86/ac3dsp_init.o
- MMX-OBJS-$(CONFIG_CAVS_DECODER)        += x86/cavsdsp_mmx.o
+ MMX-OBJS-$(CONFIG_CAVS_DECODER)        += x86/cavsdsp.o
  MMX-OBJS-$(CONFIG_DNXHD_ENCODER)       += x86/dnxhdenc.o
- MMX-OBJS-$(CONFIG_DWT)                 += x86/snowdsp_mmx.o \
 -MMX-OBJS-$(CONFIG_DWT)                 += x86/snowdsp.o
++MMX-OBJS-$(CONFIG_DWT)                 += x86/snowdsp.o \
 +                                          x86/dwt.o
  MMX-OBJS-$(CONFIG_ENCODERS)            += x86/dsputilenc_mmx.o
  MMX-OBJS-$(CONFIG_FFT)                 += x86/fft_init.o
 +MMX-OBJS-$(CONFIG_GPL)                 += x86/idct_mmx.o
  MMX-OBJS-$(CONFIG_H264DSP)             += x86/h264dsp_init.o
  MMX-OBJS-$(CONFIG_H264PRED)            += x86/h264_intrapred_init.o
- MMX-OBJS-$(CONFIG_LPC)                 += x86/lpc_mmx.o
- MMX-OBJS-$(CONFIG_MPEGAUDIODSP)        += x86/mpegaudiodec_mmx.o
+ MMX-OBJS-$(CONFIG_LPC)                 += x86/lpc.o
+ MMX-OBJS-$(CONFIG_MPEGAUDIODSP)        += x86/mpegaudiodec.o
  MMX-OBJS-$(CONFIG_MPEGVIDEO)           += x86/mpegvideo.o
  MMX-OBJS-$(CONFIG_MPEGVIDEOENC)        += x86/mpegvideoenc.o
  MMX-OBJS-$(CONFIG_PNG_DECODER)         += x86/pngdsp_init.o
@@@ -40,11 -36,9 +40,11 @@@ MMX-OBJS-$(CONFIG_VP8_DECODER)         
  
  YASM-OBJS-$(CONFIG_AAC_DECODER)        += x86/sbrdsp.o
  YASM-OBJS-$(CONFIG_AC3DSP)             += x86/ac3dsp.o
- YASM-OBJS-$(CONFIG_DCT)                += x86/dct32_sse.o
+ YASM-OBJS-$(CONFIG_DCT)                += x86/dct32.o
 +YASM-OBJS-$(CONFIG_DIRAC_DECODER)      += x86/diracdsp_mmx.o x86/diracdsp_yasm.o
 +YASM-OBJS-$(CONFIG_DWT)                += x86/dwt_yasm.o
  YASM-OBJS-$(CONFIG_ENCODERS)           += x86/dsputilenc.o
- YASM-OBJS-$(CONFIG_FFT)                += x86/fft_mmx.o
+ YASM-OBJS-$(CONFIG_FFT)                += x86/fft.o
  YASM-OBJS-$(CONFIG_H264CHROMA)         += x86/h264_chromamc.o           \
                                            x86/h264_chromamc_10bit.o
  YASM-OBJS-$(CONFIG_H264DSP)            += x86/h264_deblock.o            \
  YASM-OBJS-$(CONFIG_H264PRED)           += x86/h264_intrapred.o          \
                                            x86/h264_intrapred_10bit.o
  YASM-OBJS-$(CONFIG_H264QPEL)           += x86/h264_qpel_10bit.o
- YASM-OBJS-$(CONFIG_MPEGAUDIODSP)       += x86/imdct36_sse.o
+ YASM-OBJS-$(CONFIG_MPEGAUDIODSP)       += x86/imdct36.o
  YASM-OBJS-$(CONFIG_PNG_DECODER)        += x86/pngdsp.o
  YASM-OBJS-$(CONFIG_PRORES_DECODER)     += x86/proresdsp.o
 +YASM-OBJS-$(CONFIG_PRORES_LGPL_DECODER) += x86/proresdsp.o
  YASM-OBJS-$(CONFIG_RV30_DECODER)       += x86/rv34dsp.o
  YASM-OBJS-$(CONFIG_RV40_DECODER)       += x86/rv34dsp.o                 \
                                            x86/rv40dsp.o
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -2,20 -2,20 +2,20 @@@
  ;* 36 point SSE-optimized IMDCT transform
  ;* Copyright (c) 2011 Vitor Sessak
  ;*
--;* 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
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -355,67 -381,30 +383,71 @@@ ENDYUV2RGBLINE(24, 0
      LOADCHROMA(1);
      PUTBGR24(dst_2, py_2, 1);
      PUTBGR24(dst_1, py_1, 1);
+ ENDYUV2RGBLINE(24, 1)
+     LOADCHROMA(0);
+     PUTBGR24(dst_1, py_1, 0);
+     PUTBGR24(dst_2, py_2, 0);
  ENDYUV2RGBFUNC()
  
 -// This is exactly the same code as yuv2rgb_c_32 except for the types of
 -// r, g, b, dst_1, dst_2
 -YUV2RGBFUNC(yuv2rgb_c_16, uint16_t, 0)
 +YUV2RGBFUNC(yuv2rgb_c_16_ordered_dither, uint16_t, 0)
 +    const uint8_t *d16 = dither_2x2_8[y & 1];
 +    const uint8_t *e16 = dither_2x2_4[y & 1];
 +    const uint8_t *f16 = dither_2x2_8[(y & 1)^1];
 +
 +#define PUTRGB16(dst, src, i, o)                    \
 +    Y              = src[2 * i];                    \
 +    dst[2 * i]     = r[Y + d16[0 + o]] +            \
 +                     g[Y + e16[0 + o]] +            \
 +                     b[Y + f16[0 + o]];             \
 +    Y              = src[2 * i + 1];                \
 +    dst[2 * i + 1] = r[Y + d16[1 + o]] +            \
 +                     g[Y + e16[1 + o]] +            \
 +                     b[Y + f16[1 + o]];
      LOADCHROMA(0);
 -    PUTRGB(dst_1, py_1, 0);
 -    PUTRGB(dst_2, py_2, 0);
 +    PUTRGB16(dst_1, py_1, 0, 0);
 +    PUTRGB16(dst_2, py_2, 0, 0 + 8);
  
      LOADCHROMA(1);
 -    PUTRGB(dst_2, py_2, 1);
 -    PUTRGB(dst_1, py_1, 1);
 +    PUTRGB16(dst_2, py_2, 1, 2 + 8);
 +    PUTRGB16(dst_1, py_1, 1, 2);
  
      LOADCHROMA(2);
 -    PUTRGB(dst_1, py_1, 2);
 -    PUTRGB(dst_2, py_2, 2);
 +    PUTRGB16(dst_1, py_1, 2, 4);
 +    PUTRGB16(dst_2, py_2, 2, 4 + 8);
  
      LOADCHROMA(3);
 -    PUTRGB(dst_2, py_2, 3);
 -    PUTRGB(dst_1, py_1, 3);
 +    PUTRGB16(dst_2, py_2, 3, 6 + 8);
 +    PUTRGB16(dst_1, py_1, 3, 6);
 +CLOSEYUV2RGBFUNC(8)
 +
 +YUV2RGBFUNC(yuv2rgb_c_15_ordered_dither, uint16_t, 0)
 +    const uint8_t *d16 = dither_2x2_8[y & 1];
 +    const uint8_t *e16 = dither_2x2_8[(y & 1)^1];
 +
 +#define PUTRGB15(dst, src, i, o)                    \
 +    Y              = src[2 * i];                    \
 +    dst[2 * i]     = r[Y + d16[0 + o]] +            \
 +                     g[Y + d16[1 + o]] +            \
 +                     b[Y + e16[0 + o]];             \
 +    Y              = src[2 * i + 1];                \
 +    dst[2 * i + 1] = r[Y + d16[1 + o]] +            \
 +                     g[Y + d16[0 + o]] +            \
 +                     b[Y + e16[1 + o]];
 +    LOADCHROMA(0);
 +    PUTRGB15(dst_1, py_1, 0, 0);
 +    PUTRGB15(dst_2, py_2, 0, 0 + 8);
 +
 +    LOADCHROMA(1);
 +    PUTRGB15(dst_2, py_2, 1, 2 + 8);
 +    PUTRGB15(dst_1, py_1, 1, 2);
 +
 +    LOADCHROMA(2);
 +    PUTRGB15(dst_1, py_1, 2, 4);
 +    PUTRGB15(dst_2, py_2, 2, 4 + 8);
 +
 +    LOADCHROMA(3);
 +    PUTRGB15(dst_2, py_2, 3, 6 + 8);
 +    PUTRGB15(dst_1, py_1, 3, 6);
  CLOSEYUV2RGBFUNC(8)
  
  // r, g, b, dst_1, dst_2
Simple merge
Simple merge
Simple merge
Simple merge