[x264-devel] x264_encoder_encode too slow

mm1201 at mail.ustc.edu.cn mm1201 at mail.ustc.edu.cn
Thu Nov 13 15:42:22 CET 2014


It works,thank you a lot,interesting!

> -----原始邮件-----
> 发件人: x264-devel-request at videolan.org
> 发送时间: 2014-11-13 20:52:05 (星期四)
> 收件人: x264-devel at videolan.org
> 抄送: 
> 主题: x264-devel Digest, Vol 90, Issue 8
> 
> Send x264-devel mailing list submissions to
> 	x264-devel at videolan.org
> 
> To subscribe or unsubscribe via the World Wide Web, visit
> 	https://mailman.videolan.org/listinfo/x264-devel
> or, via email, send a message with subject or body 'help' to
> 	x264-devel-request at videolan.org
> 
> You can reach the person managing the list at
> 	x264-devel-owner at videolan.org
> 
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of x264-devel digest..."
> 
> 
> Today's Topics:
> 
>    1. Re: x264_encoder_encode too slow (Daniel Tisch)
>    2. Fix VBV (Anton Mitrofanov)
>    3. Fix VBV with true VFR streams (Anton Mitrofanov)
>    4. Fix inappropriate instruction use (Anton Mitrofanov)
>    5. x264asm: warn when inappropriate instruction used in	function
>       with specified cpuflags (Anton Mitrofanov)
>    6. Fix few clang -Wunused-* warnings (Anton Mitrofanov)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Thu, 13 Nov 2014 12:45:31 +0100
> From: Daniel Tisch <tisch.daniel at gmail.com>
> To: Mailing list for x264 developers <x264-devel at videolan.org>
> Subject: Re: [x264-devel] x264_encoder_encode too slow
> Message-ID:
> 	<CA+mv---31KCoT6nh3y6C0f2uftQuK6qjkrEuifkMsCZmbUct0w at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
> 
> H.264 encoding can be *VERY* slow depending on your settings, source
> resolution and CPU. Try using presets "ultrafast", "superfast", "veryfast",
> "faster" or "fast" (in decreasing encoding speed) with
> x264_param_default_preset (instead of x264_param_default)!
> 
> 
> Good luck! ;)
> 
> Cheers,
> 
> Daniel
> 
> 
> 2014.11.13. 9:27 ezt ?rta ( <mm1201 at mail.ustc.edu.cn>):
> 
> > i call x264_encoder_encoed() in my code,and it works,but the problem is
> > that it runs slow,costs about 2 seconds,i don't know why.Is there anynoe
> > who ever ran into this,or knows what could cause this?
> > _______________________________________________
> > x264-devel mailing list
> > x264-devel at videolan.org
> > https://mailman.videolan.org/listinfo/x264-devel
> >
> >
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://mailman.videolan.org/pipermail/x264-devel/attachments/20141113/8577e375/attachment-0001.html>
> 
> ------------------------------
> 
> Message: 2
> Date: Thu, 13 Nov 2014 13:52:02 +0100 (CET)
> From: git at videolan.org (Anton Mitrofanov)
> To: x264-devel at videolan.org
> Subject: [x264-devel] Fix VBV
> Message-ID: <20141113125202.C8FC9151F6F at albiero.videolan.org>
> Content-Type: text/plain; charset=UTF-8
> 
> x264 | branch: master | Anton Mitrofanov <BugMaster at narod.ru> | Mon Sep  1 22:45:00 2014 +0400| [b36d44c68cddff00c5b6de1e6cb6a86c1af2cbfc] | committer: Fiona Glaser
> 
> Fix VBV
> 
> > http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=b36d44c68cddff00c5b6de1e6cb6a86c1af2cbfc
> ---
> 
>  encoder/ratecontrol.c |   27 ++++++++++++++++-----------
>  1 file changed, 16 insertions(+), 11 deletions(-)
> 
> diff --git a/encoder/ratecontrol.c b/encoder/ratecontrol.c
> index f71eb5f..8893c1f 100644
> --- a/encoder/ratecontrol.c
> +++ b/encoder/ratecontrol.c
> @@ -2255,32 +2255,31 @@ static double clip_qscale( x264_t *h, int pict_type, double q )
>              /* Now a hard threshold to make sure the frame fits in VBV.
>               * This one is mostly for I-frames. */
>              double bits = predict_size( &rcc->pred[h->sh.i_type], q, rcc->last_satd );
> -            double qf = 1.0;
>              /* For small VBVs, allow the frame to use up the entire VBV. */
>              double max_fill_factor = h->param.rc.i_vbv_buffer_size >= 5*h->param.rc.i_vbv_max_bitrate / rcc->fps ? 2 : 1;
>              /* For single-frame VBVs, request that the frame use up the entire VBV. */
>              double min_fill_factor = rcc->single_frame_vbv ? 1 : 2;
>  
>              if( bits > rcc->buffer_fill/max_fill_factor )
> -                qf = x264_clip3f( rcc->buffer_fill/(max_fill_factor*bits), 0.2, 1.0 );
> -            q /= qf;
> -            bits *= qf;
> +            {
> +                double qf = x264_clip3f( rcc->buffer_fill/(max_fill_factor*bits), 0.2, 1.0 );
> +                q /= qf;
> +                bits *= qf;
> +            }
>              if( bits < rcc->buffer_rate/min_fill_factor )
> -                q *= bits*min_fill_factor/rcc->buffer_rate;
> +            {
> +                double qf = x264_clip3f( bits*min_fill_factor/rcc->buffer_rate, 0.001, 1.0 );
> +                q *= qf;
> +            }
>              q = X264_MAX( q0, q );
>          }
>  
> -        /* Apply MinCR restrictions */
> -        double bits = predict_size( &rcc->pred[h->sh.i_type], q, rcc->last_satd );
> -        if( bits > rcc->frame_size_maximum )
> -            q *= bits / rcc->frame_size_maximum;
> -        bits = predict_size( &rcc->pred[h->sh.i_type], q, rcc->last_satd );
> -
>          /* Check B-frame complexity, and use up any bits that would
>           * overflow before the next P-frame. */
>          if( h->sh.i_type == SLICE_TYPE_P && !rcc->single_frame_vbv )
>          {
>              int nb = rcc->bframes;
> +            double bits = predict_size( &rcc->pred[h->sh.i_type], q, rcc->last_satd );
>              double pbbits = bits;
>              double bbits = predict_size( rcc->pred_b_from_p, q * h->param.rc.f_pb_factor, rcc->last_satd );
>              double space;
> @@ -2302,6 +2301,12 @@ static double clip_qscale( x264_t *h, int pict_type, double q )
>              q = X264_MAX( q0/2, q );
>          }
>  
> +        /* Apply MinCR and buffer fill restrictions */
> +        double bits = predict_size( &rcc->pred[h->sh.i_type], q, rcc->last_satd );
> +        double frame_size_maximum = X264_MIN( rcc->frame_size_maximum, X264_MAX( rcc->buffer_fill, 0.001 ) );
> +        if( bits > frame_size_maximum )
> +            q *= bits / frame_size_maximum;
> +
>          if( !rcc->b_vbv_min_rate )
>              q = X264_MAX( q0, q );
>      }
> 
> 
> 
> ------------------------------
> 
> Message: 3
> Date: Thu, 13 Nov 2014 13:52:02 +0100 (CET)
> From: git at videolan.org (Anton Mitrofanov)
> To: x264-devel at videolan.org
> Subject: [x264-devel] Fix VBV with true VFR streams
> Message-ID: <20141113125202.DF804151DC1 at albiero.videolan.org>
> Content-Type: text/plain; charset=UTF-8
> 
> x264 | branch: master | Anton Mitrofanov <BugMaster at narod.ru> | Tue Sep  2 01:48:00 2014 +0400| [204a9bd0a1bc507cbd69a77f3318afcb56ede65d] | committer: Fiona Glaser
> 
> Fix VBV with true VFR streams
> 
> > http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=204a9bd0a1bc507cbd69a77f3318afcb56ede65d
> ---
> 
>  encoder/ratecontrol.c |   12 ++++++++----
>  encoder/slicetype.c   |    5 +----
>  2 files changed, 9 insertions(+), 8 deletions(-)
> 
> diff --git a/encoder/ratecontrol.c b/encoder/ratecontrol.c
> index 8893c1f..86aad96 100644
> --- a/encoder/ratecontrol.c
> +++ b/encoder/ratecontrol.c
> @@ -2191,6 +2191,8 @@ static double clip_qscale( x264_t *h, int pict_type, double q )
>  
>      if( rcc->b_vbv && rcc->last_satd > 0 )
>      {
> +        double fenc_cpb_duration = (double)h->fenc->i_cpb_duration *
> +                                   h->sps->vui.i_num_units_in_tick / h->sps->vui.i_time_scale;
>          /* Lookahead VBV: raise the quantizer as necessary such that no frames in
>           * the lookahead overflow and such that the buffer is in a reasonable state
>           * by the end of the lookahead. */
> @@ -2206,6 +2208,7 @@ static double clip_qscale( x264_t *h, int pict_type, double q )
>                  double buffer_fill_cur = rcc->buffer_fill - cur_bits;
>                  double target_fill;
>                  double total_duration = 0;
> +                double last_duration = fenc_cpb_duration;
>                  frame_q[0] = h->sh.i_type == SLICE_TYPE_I ? q * h->param.rc.f_ip_factor : q;
>                  frame_q[1] = frame_q[0] * h->param.rc.f_pb_factor;
>                  frame_q[2] = frame_q[0] / h->param.rc.f_ip_factor;
> @@ -2213,8 +2216,8 @@ static double clip_qscale( x264_t *h, int pict_type, double q )
>                  /* Loop over the planned future frames. */
>                  for( int j = 0; buffer_fill_cur >= 0 && buffer_fill_cur <= rcc->buffer_size; j++ )
>                  {
> -                    total_duration += h->fenc->f_planned_cpb_duration[j];
> -                    buffer_fill_cur += rcc->vbv_max_rate * h->fenc->f_planned_cpb_duration[j];
> +                    total_duration += last_duration;
> +                    buffer_fill_cur += rcc->vbv_max_rate * last_duration;
>                      int i_type = h->fenc->i_planned_type[j];
>                      int i_satd = h->fenc->i_planned_satd[j];
>                      if( i_type == X264_TYPE_AUTO )
> @@ -2222,6 +2225,7 @@ static double clip_qscale( x264_t *h, int pict_type, double q )
>                      i_type = IS_X264_TYPE_I( i_type ) ? SLICE_TYPE_I : IS_X264_TYPE_B( i_type ) ? SLICE_TYPE_B : SLICE_TYPE_P;
>                      cur_bits = predict_size( &rcc->pred[i_type], frame_q[i_type], i_satd );
>                      buffer_fill_cur -= cur_bits;
> +                    last_duration = h->fenc->f_planned_cpb_duration[j];
>                  }
>                  /* Try to get to get the buffer at least 50% filled, but don't set an impossible goal. */
>                  target_fill = X264_MIN( rcc->buffer_fill + total_duration * rcc->vbv_max_rate * 0.5, rcc->buffer_size * 0.5 );
> @@ -2286,13 +2290,13 @@ static double clip_qscale( x264_t *h, int pict_type, double q )
>              double bframe_cpb_duration = 0;
>              double minigop_cpb_duration;
>              for( int i = 0; i < nb; i++ )
> -                bframe_cpb_duration += h->fenc->f_planned_cpb_duration[1+i];
> +                bframe_cpb_duration += h->fenc->f_planned_cpb_duration[i];
>  
>              if( bbits * nb > bframe_cpb_duration * rcc->vbv_max_rate )
>                  nb = 0;
>              pbbits += nb * bbits;
>  
> -            minigop_cpb_duration = bframe_cpb_duration + h->fenc->f_planned_cpb_duration[0];
> +            minigop_cpb_duration = bframe_cpb_duration + fenc_cpb_duration;
>              space = rcc->buffer_fill + minigop_cpb_duration*rcc->vbv_max_rate - rcc->buffer_size;
>              if( pbbits < space )
>              {
> diff --git a/encoder/slicetype.c b/encoder/slicetype.c
> index 0f4d831..dd5e318 100644
> --- a/encoder/slicetype.c
> +++ b/encoder/slicetype.c
> @@ -1853,14 +1853,11 @@ void x264_slicetype_decide( x264_t *h )
>          if( i )
>          {
>              x264_calculate_durations( h, h->lookahead->next.list[i], h->lookahead->next.list[i-1], &h->i_cpb_delay, &h->i_coded_fields );
> -            h->lookahead->next.list[0]->f_planned_cpb_duration[i-1] = (double)h->lookahead->next.list[i-1]->i_cpb_duration *
> +            h->lookahead->next.list[0]->f_planned_cpb_duration[i-1] = (double)h->lookahead->next.list[i]->i_cpb_duration *
>                                                                        h->sps->vui.i_num_units_in_tick / h->sps->vui.i_time_scale;
>          }
>          else
>              x264_calculate_durations( h, h->lookahead->next.list[i], NULL, &h->i_cpb_delay, &h->i_coded_fields );
> -
> -        h->lookahead->next.list[0]->f_planned_cpb_duration[i] = (double)h->lookahead->next.list[i]->i_cpb_duration *
> -                                                                h->sps->vui.i_num_units_in_tick / h->sps->vui.i_time_scale;
>      }
>  }
>  
> 
> 
> 
> ------------------------------
> 
> Message: 4
> Date: Thu, 13 Nov 2014 13:52:03 +0100 (CET)
> From: git at videolan.org (Anton Mitrofanov)
> To: x264-devel at videolan.org
> Subject: [x264-devel] Fix inappropriate instruction use
> Message-ID: <20141113125203.366EF1527EE at albiero.videolan.org>
> Content-Type: text/plain; charset=UTF-8
> 
> x264 | branch: master | Anton Mitrofanov <BugMaster at narod.ru> | Thu Aug 28 20:13:13 2014 +0400| [9df377f87702c82a2202d34919c07e32c60b40ae] | committer: Fiona Glaser
> 
> Fix inappropriate instruction use
> 
> > http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=9df377f87702c82a2202d34919c07e32c60b40ae
> ---
> 
>  common/dct.c           |    2 +-
>  common/quant.c         |    4 ++--
>  common/x86/dct-a.asm   |    2 +-
>  common/x86/dct.h       |    2 +-
>  common/x86/pixel-a.asm |    2 +-
>  common/x86/quant-a.asm |    2 +-
>  common/x86/quant.h     |    4 ++--
>  7 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/common/dct.c b/common/dct.c
> index f5900ef..08f4e89 100644
> --- a/common/dct.c
> +++ b/common/dct.c
> @@ -611,7 +611,6 @@ void x264_dct_init( int cpu, x264_dct_function_t *dctf )
>      {
>          dctf->sub4x4_dct    = x264_sub4x4_dct_mmx;
>          dctf->add4x4_idct   = x264_add4x4_idct_mmx;
> -        dctf->dct4x4dc      = x264_dct4x4dc_mmx;
>          dctf->idct4x4dc     = x264_idct4x4dc_mmx;
>          dctf->sub8x8_dct_dc = x264_sub8x8_dct_dc_mmx2;
>  
> @@ -630,6 +629,7 @@ void x264_dct_init( int cpu, x264_dct_function_t *dctf )
>  
>      if( cpu&X264_CPU_MMX2 )
>      {
> +        dctf->dct4x4dc         = x264_dct4x4dc_mmx2;
>          dctf->add8x8_idct_dc   = x264_add8x8_idct_dc_mmx2;
>          dctf->add16x16_idct_dc = x264_add16x16_idct_dc_mmx2;
>      }
> diff --git a/common/quant.c b/common/quant.c
> index d7b6911..31d8901 100644
> --- a/common/quant.c
> +++ b/common/quant.c
> @@ -558,8 +558,6 @@ void x264_quant_init( x264_t *h, int cpu, x264_quant_function_t *pf )
>      if( cpu&X264_CPU_MMX )
>      {
>  #if ARCH_X86
> -        pf->quant_4x4 = x264_quant_4x4_mmx;
> -        pf->quant_8x8 = x264_quant_8x8_mmx;
>          pf->dequant_4x4 = x264_dequant_4x4_mmx;
>          pf->dequant_4x4_dc = x264_dequant_4x4dc_mmx2;
>          pf->dequant_8x8 = x264_dequant_8x8_mmx;
> @@ -576,6 +574,8 @@ void x264_quant_init( x264_t *h, int cpu, x264_quant_function_t *pf )
>      {
>          pf->quant_2x2_dc = x264_quant_2x2_dc_mmx2;
>  #if ARCH_X86
> +        pf->quant_4x4 = x264_quant_4x4_mmx2;
> +        pf->quant_8x8 = x264_quant_8x8_mmx2;
>          pf->quant_4x4_dc = x264_quant_4x4_dc_mmx2;
>          pf->decimate_score15 = x264_decimate_score15_mmx2;
>          pf->decimate_score16 = x264_decimate_score16_mmx2;
> diff --git a/common/x86/dct-a.asm b/common/x86/dct-a.asm
> index 4376e36..bc82ff6 100644
> --- a/common/x86/dct-a.asm
> +++ b/common/x86/dct-a.asm
> @@ -143,7 +143,7 @@ INIT_XMM avx
>  DCT4x4_DC
>  %else
>  
> -INIT_MMX mmx
> +INIT_MMX mmx2
>  cglobal dct4x4dc, 1,1
>      movq   m3, [r0+24]
>      movq   m2, [r0+16]
> diff --git a/common/x86/dct.h b/common/x86/dct.h
> index 337a632..f22a979 100644
> --- a/common/x86/dct.h
> +++ b/common/x86/dct.h
> @@ -70,7 +70,7 @@ void x264_add8x8_idct_dc_avx    ( pixel   *p_dst, dctcoef dct    [ 4] );
>  void x264_add16x16_idct_dc_avx  ( pixel   *p_dst, dctcoef dct    [16] );
>  void x264_add16x16_idct_dc_avx2 ( uint8_t *p_dst, int16_t dct    [16] );
>  
> -void x264_dct4x4dc_mmx       ( int16_t d[16] );
> +void x264_dct4x4dc_mmx2      ( int16_t d[16] );
>  void x264_dct4x4dc_sse2      ( int32_t d[16] );
>  void x264_dct4x4dc_avx       ( int32_t d[16] );
>  void x264_idct4x4dc_mmx      ( int16_t d[16] );
> diff --git a/common/x86/pixel-a.asm b/common/x86/pixel-a.asm
> index 262c537..f5f6a82 100644
> --- a/common/x86/pixel-a.asm
> +++ b/common/x86/pixel-a.asm
> @@ -1600,7 +1600,7 @@ cglobal pixel_satd_4x4, 4,6
>  %macro SATDS_SSE2 0
>  %define vertical ((notcpuflag(ssse3) || cpuflag(atom)) || HIGH_BIT_DEPTH)
>  
> -%if vertical==0 || HIGH_BIT_DEPTH
> +%if cpuflag(ssse3) && (vertical==0 || HIGH_BIT_DEPTH)
>  cglobal pixel_satd_4x4, 4, 6, 6
>      SATD_START_MMX
>      mova m4, [hmul_4p]
> diff --git a/common/x86/quant-a.asm b/common/x86/quant-a.asm
> index fb588d3..731f7d1 100644
> --- a/common/x86/quant-a.asm
> +++ b/common/x86/quant-a.asm
> @@ -453,7 +453,7 @@ INIT_MMX mmx2
>  QUANT_DC quant_2x2_dc, 1
>  %if ARCH_X86_64 == 0 ; not needed because sse2 is faster
>  QUANT_DC quant_4x4_dc, 4
> -INIT_MMX mmx
> +INIT_MMX mmx2
>  QUANT_AC quant_4x4, 4
>  QUANT_AC quant_8x8, 16
>  %endif
> diff --git a/common/x86/quant.h b/common/x86/quant.h
> index 1fcb800..c6a8a9b 100644
> --- a/common/x86/quant.h
> +++ b/common/x86/quant.h
> @@ -30,8 +30,8 @@
>  
>  int x264_quant_2x2_dc_mmx2( dctcoef dct[4], int mf, int bias );
>  int x264_quant_4x4_dc_mmx2( dctcoef dct[16], int mf, int bias );
> -int x264_quant_4x4_mmx( dctcoef dct[16], udctcoef mf[16], udctcoef bias[16] );
> -int x264_quant_8x8_mmx( dctcoef dct[64], udctcoef mf[64], udctcoef bias[64] );
> +int x264_quant_4x4_mmx2( dctcoef dct[16], udctcoef mf[16], udctcoef bias[16] );
> +int x264_quant_8x8_mmx2( dctcoef dct[64], udctcoef mf[64], udctcoef bias[64] );
>  int x264_quant_2x2_dc_sse2( dctcoef dct[16], int mf, int bias );
>  int x264_quant_4x4_dc_sse2( dctcoef dct[16], int mf, int bias );
>  int x264_quant_4x4_sse2( dctcoef dct[16], udctcoef mf[16], udctcoef bias[16] );
> 
> 
> 
> ------------------------------
> 
> Message: 5
> Date: Thu, 13 Nov 2014 13:52:02 +0100 (CET)
> From: git at videolan.org (Anton Mitrofanov)
> To: x264-devel at videolan.org
> Subject: [x264-devel] x264asm: warn when inappropriate instruction
> 	used in	function with specified cpuflags
> Message-ID: <20141113125203.02ECB152262 at albiero.videolan.org>
> Content-Type: text/plain; charset=UTF-8
> 
> x264 | branch: master | Anton Mitrofanov <BugMaster at narod.ru> | Thu Aug 28 18:38:53 2014 +0400| [73b8686fc22c9247d90963983d406cd7b9131068] | committer: Fiona Glaser
> 
> x264asm: warn when inappropriate instruction used in function with specified cpuflags
> 
> > http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=73b8686fc22c9247d90963983d406cd7b9131068
> ---
> 
>  common/x86/x86inc.asm |  581 +++++++++++++++++++++++++------------------------
>  1 file changed, 295 insertions(+), 286 deletions(-)
> 
> Diff:   http://git.videolan.org/gitweb.cgi/x264.git/?a=commitdiff;h=73b8686fc22c9247d90963983d406cd7b9131068
> 
> 
> ------------------------------
> 
> Message: 6
> Date: Thu, 13 Nov 2014 13:52:03 +0100 (CET)
> From: git at videolan.org (Anton Mitrofanov)
> To: x264-devel at videolan.org
> Subject: [x264-devel] Fix few clang -Wunused-* warnings
> Message-ID: <20141113125203.5959D151DC1 at albiero.videolan.org>
> Content-Type: text/plain; charset=UTF-8
> 
> x264 | branch: master | Anton Mitrofanov <BugMaster at narod.ru> | Fri Sep  5 19:30:47 2014 +0400| [01204b60367f4959e8393652dd30f0cfba2d2c80] | committer: Fiona Glaser
> 
> Fix few clang -Wunused-* warnings
> 
> > http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=01204b60367f4959e8393652dd30f0cfba2d2c80
> ---
> 
>  common/x86/predict-c.c |    5 +++++
>  encoder/cavlc.c        |    2 ++
>  2 files changed, 7 insertions(+)
> 
> diff --git a/common/x86/predict-c.c b/common/x86/predict-c.c
> index 086c45d..0c668fa 100644
> --- a/common/x86/predict-c.c
> +++ b/common/x86/predict-c.c
> @@ -65,12 +65,17 @@ PREDICT_16x16_DC_LEFT( avx2 )
>      H += i * ( src[j+i - FDEC_STRIDE ]  - src[j-i - FDEC_STRIDE ] );\
>      V += i * ( src[(j+i)*FDEC_STRIDE -1] - src[(j-i)*FDEC_STRIDE -1] );
>  
> +#if HAVE_X86_INLINE_ASM
> +#if HIGH_BIT_DEPTH
>  ALIGNED_16( static const int16_t pw_12345678[8] ) = {1,2,3,4,5,6,7,8};
>  ALIGNED_16( static const int16_t pw_m87654321[8] ) = {-8,-7,-6,-5,-4,-3,-2,-1};
>  ALIGNED_16( static const int16_t pw_m32101234[8] ) = {-3,-2,-1,0,1,2,3,4};
> +#else // !HIGH_BIT_DEPTH
>  ALIGNED_8( static const int8_t pb_12345678[8] ) = {1,2,3,4,5,6,7,8};
>  ALIGNED_8( static const int8_t pb_m87654321[8] ) = {-8,-7,-6,-5,-4,-3,-2,-1};
>  ALIGNED_8( static const int8_t pb_m32101234[8] ) = {-3,-2,-1,0,1,2,3,4};
> +#endif // HIGH_BIT_DEPTH
> +#endif // HAVE_X86_INLINE_ASM
>  
>  #define PREDICT_16x16_P_CORE\
>      int H = 0;\
> diff --git a/encoder/cavlc.c b/encoder/cavlc.c
> index 5d826ff..1d393fd 100644
> --- a/encoder/cavlc.c
> +++ b/encoder/cavlc.c
> @@ -289,6 +289,7 @@ static ALWAYS_INLINE void x264_cavlc_macroblock_luma_residual( x264_t *h, int pl
>                  x264_cavlc_block_residual( h, DCT_LUMA_4x4, i4+i8*4+p*16, h->dct.luma4x4[i4+i8*4+p*16] );
>  }
>  
> +#if RDO_SKIP_BS
>  static ALWAYS_INLINE void x264_cavlc_partition_luma_residual( x264_t *h, int i8, int p )
>  {
>      if( h->mb.b_transform_8x8 && h->mb.cache.non_zero_count[x264_scan8[i8*4]] )
> @@ -299,6 +300,7 @@ static ALWAYS_INLINE void x264_cavlc_partition_luma_residual( x264_t *h, int i8,
>          for( int i4 = 0; i4 < 4; i4++ )
>              x264_cavlc_block_residual( h, DCT_LUMA_4x4, i4+i8*4+p*16, h->dct.luma4x4[i4+i8*4+p*16] );
>  }
> +#endif
>  
>  static void x264_cavlc_mb_header_i( x264_t *h, int i_mb_type, int i_mb_i_offset, int chroma )
>  {
> 
> 
> 
> ------------------------------
> 
> Subject: Digest Footer
> 
> _______________________________________________
> x264-devel mailing list
> x264-devel at videolan.org
> https://mailman.videolan.org/listinfo/x264-devel
> 
> 
> ------------------------------
> 
> End of x264-devel Digest, Vol 90, Issue 8
> *****************************************


More information about the x264-devel mailing list