Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 26 Aug 2012 20:36:13 +0000 (22:36 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 26 Aug 2012 20:40:02 +0000 (22:40 +0200)
* qatar/master:
  audio_frame_queue: Clean up ff_af_queue_log_state debug function
  dwt: Remove unused code.
  cavs: convert cavsdata.h to a .c file
  cavs: Move inline functions only used in one file out of the header
  cavs: Move data tables used in only one place to that file
  fate: Add a single symbol Ut Video decoder test
  vf_hqdn3d: x86 asm
  vf_hqdn3d: support 16bit colordepth
  avconv: prefer user-forced input framerate when choosing output framerate

Conflicts:
ffmpeg.c
libavcodec/audio_frame_queue.c
libavcodec/dwt.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
13 files changed:
1  2 
ffmpeg.c
libavcodec/Makefile
libavcodec/audio_frame_queue.h
libavcodec/cavs.c
libavcodec/cavs.h
libavcodec/cavsdata.c
libavcodec/cavsdata.h
libavcodec/cavsdec.c
libavcodec/dwt.c
libavcodec/dwt.h
libavfilter/vf_hqdn3d.c
libavfilter/x86/hqdn3d.asm
libavutil/x86/x86inc.asm

diff --cc ffmpeg.c
+++ b/ffmpeg.c
@@@ -2134,18 -1704,6 +2134,20 @@@ static int transcode_init(void
                      }
              }
  
 +            if (codec->codec_type == AVMEDIA_TYPE_VIDEO) {
 +                if (ost->filter && !ost->frame_rate.num)
 +                    ost->frame_rate = av_buffersink_get_frame_rate(ost->filter->filter);
 +                if (ist && !ost->frame_rate.num)
++                    ost->frame_rate = ist->framerate;
++                if (ist && !ost->frame_rate.num)
 +                    ost->frame_rate = ist->st->r_frame_rate.num ? ist->st->r_frame_rate : (AVRational){25, 1};
 +//                    ost->frame_rate = ist->st->avg_frame_rate.num ? ist->st->avg_frame_rate : (AVRational){25, 1};
 +                if (ost->enc && ost->enc->supported_framerates && !ost->force_fps) {
 +                    int idx = av_find_nearest_q_idx(ost->frame_rate, ost->enc->supported_framerates);
 +                    ost->frame_rate = ost->enc->supported_framerates[idx];
 +                }
 +            }
 +
              switch (codec->codec_type) {
              case AVMEDIA_TYPE_AUDIO:
                  codec->sample_fmt     = ost->filter->filter->inputs[0]->format;
Simple merge
Simple merge
Simple merge
Simple merge
index 0000000,4e4a131..905a306
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,62 +1,62 @@@
 - * This file is part of Libav.
+ /*
+  * Chinese AVS video (AVS1-P2, JiZhun profile) decoder.
+  * Copyright (c) 2006  Stefan Gehrer <stefan.gehrer@gmx.de>
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * 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.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * 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 FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #include "cavs.h"
+ const uint8_t ff_cavs_partition_flags[30] = {
+   0,                                 //I_8X8
+   0,                                 //P_SKIP
+   0,                                 //P_16X16
+                       SPLITH,        //P_16X8
+                              SPLITV, //P_8X16
+                       SPLITH|SPLITV, //P_8X8
+                       SPLITH|SPLITV, //B_SKIP
+                       SPLITH|SPLITV, //B_DIRECT
+   0,                                 //B_FWD_16X16
+   0,                                 //B_BWD_16X16
+   0,                                 //B_SYM_16X16
+   FWD0|FWD1          |SPLITH,
+   FWD0|FWD1                 |SPLITV,
+   BWD0|BWD1          |SPLITH,
+   BWD0|BWD1                 |SPLITV,
+   FWD0|BWD1          |SPLITH,
+   FWD0|BWD1                 |SPLITV,
+   BWD0|FWD1          |SPLITH,
+   BWD0|FWD1                 |SPLITV,
+   FWD0|FWD1     |SYM1|SPLITH,
+   FWD0|FWD1     |SYM1       |SPLITV,
+   BWD0|FWD1     |SYM1|SPLITH,
+   BWD0|FWD1     |SYM1       |SPLITV,
+   FWD0|FWD1|SYM0     |SPLITH,
+   FWD0|FWD1|SYM0            |SPLITV,
+   FWD0|BWD1|SYM0     |SPLITH,
+   FWD0|BWD1|SYM0            |SPLITV,
+   FWD0|FWD1|SYM0|SYM1|SPLITH,
+   FWD0|FWD1|SYM0|SYM1       |SPLITV,
+                       SPLITH|SPLITV, //B_8X8 = 29
+ };
+ /** mark block as "no prediction from this direction"
+     e.g. forward motion vector in BWD partition */
+ const cavs_vector ff_cavs_dir_mv   = {0,0,1,REF_DIR};
+ /** mark block as using intra prediction */
+ const cavs_vector ff_cavs_intra_mv = {0,0,1,REF_INTRA};
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0000000,7254194..88b9b0d
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,106 +1,106 @@@
 -;* This file is part of Libav.
+ ;******************************************************************************
+ ;* Copyright (c) 2012 Loren Merritt
+ ;*
 -;* Libav is free software; you can redistribute it and/or
++;* This file is part of FFmpeg.
+ ;*
 -;* Libav is distributed in the hope that it will be useful,
++;* 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.
+ ;*
 -;* License along with Libav; if not, write to the Free Software
++;* 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 FFmpeg; if not, write to the Free Software
+ ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ;******************************************************************************
+ %include "x86inc.asm"
+ SECTION .text
+ %macro LOWPASS 3 ; prevsample, cursample, lut
+     sub    %1q, %2q
+ %if lut_bits != 8
+     sar    %1q, 8-lut_bits
+ %endif
+     movsx  %1d, word [%3q+%1q*2]
+     add    %1d, %2d
+ %endmacro
+ %macro LOAD 3 ; dstreg, x, bitdepth
+ %if %3 == 8
+     movzx  %1, byte [srcq+%2]
+ %else
+     movzx  %1, word [srcq+(%2)*2]
+ %endif
+ %if %3 != 16
+     shl    %1, 16-%3
+ %endif
+ %endmacro
+ %macro HQDN3D_ROW 1 ; bitdepth
+ %if ARCH_X86_64
+ cglobal hqdn3d_row_%1_x86, 7,10,0, src, dst, lineant, frameant, width, spatial, temporal, pixelant, t0, t1
+ %else
+ cglobal hqdn3d_row_%1_x86, 7,7,0, src, dst, lineant, frameant, width, spatial, temporal
+ %endif
+     %assign bytedepth (%1+7)>>3
+     %assign lut_bits 4+4*(%1/16)
+     dec    widthq
+     lea    srcq, [srcq+widthq*bytedepth]
+     lea    dstq, [dstq+widthq*bytedepth]
+     lea    frameantq, [frameantq+widthq*2]
+     lea    lineantq,  [lineantq+widthq*2]
+     neg    widthq
+     %define xq widthq
+ %if ARCH_X86_32
+     mov    dstmp, dstq
+     mov    srcmp, srcq
+     mov    frameantmp, frameantq
+     mov    lineantmp,  lineantq
+     %define dstq r0
+     %define frameantq r0
+     %define lineantq  r0
+     %define pixelantq r1
+     %define pixelantd r1d
+     DECLARE_REG_TMP 2,3
+ %endif
+     LOAD   pixelantd, xq, %1
+ ALIGN 16
+ .loop:
+     movifnidn srcq, srcmp
+     LOAD      t0d, xq+1, %1 ; skip on the last iteration to avoid overread
+ .loop2:
+     movifnidn lineantq, lineantmp
+     movzx     t1d, word [lineantq+xq*2]
+     LOWPASS   t1, pixelant, spatial
+     mov       [lineantq+xq*2], t1w
+     LOWPASS   pixelant, t0, spatial
+     movifnidn frameantq, frameantmp
+     movzx     t0d, word [frameantq+xq*2]
+     LOWPASS   t0, t1, temporal
+     mov       [frameantq+xq*2], t0w
+     movifnidn dstq, dstmp
+ %if %1 != 16
+     add    t0d, (1<<(15-%1))-1
+     shr    t0d, 16-%1 ; could eliminate this by storing from t0h, but only with some contraints on register allocation
+ %endif
+ %if %1 == 8
+     mov    [dstq+xq], t0b
+ %else
+     mov    [dstq+xq*2], t0w
+ %endif
+     inc    xq
+     jl .loop
+     je .loop2
+     REP_RET
+ %endmacro ; HQDN3D_ROW
+ HQDN3D_ROW 8
+ HQDN3D_ROW 9
+ HQDN3D_ROW 10
+ HQDN3D_ROW 16
Simple merge