Browse code

Change wraper functions to always inline, they are faster now that way. 1% faster MBAFF decoding overall, maybe ~0.1% faster for the cathedral sample.

Originally committed as revision 21507 to svn://svn.ffmpeg.org/ffmpeg/trunk

Michael Niedermayer authored on 2010/01/28 20:37:35
Showing 1 changed files
... ...
@@ -99,7 +99,7 @@ static const uint8_t tc0_table[52*3][4] = {
99 99
     {-1,13,17,25 }, {-1,13,17,25 }, {-1,13,17,25 }, {-1,13,17,25 },
100 100
 };
101 101
 
102
-static void av_noinline filter_mb_edgev( uint8_t *pix, int stride, int16_t bS[4], unsigned int qp, H264Context *h) {
102
+static void av_always_inline filter_mb_edgev( uint8_t *pix, int stride, int16_t bS[4], unsigned int qp, H264Context *h) {
103 103
     const unsigned int index_a = qp + h->slice_alpha_c0_offset;
104 104
     const int alpha = alpha_table[index_a];
105 105
     const int beta  = beta_table[qp + h->slice_beta_offset];
... ...
@@ -116,7 +116,7 @@ static void av_noinline filter_mb_edgev( uint8_t *pix, int stride, int16_t bS[4]
116 116
         h->s.dsp.h264_h_loop_filter_luma_intra(pix, stride, alpha, beta);
117 117
     }
118 118
 }
119
-static void av_noinline filter_mb_edgecv( uint8_t *pix, int stride, int16_t bS[4], unsigned int qp, H264Context *h ) {
119
+static void av_always_inline filter_mb_edgecv( uint8_t *pix, int stride, int16_t bS[4], unsigned int qp, H264Context *h ) {
120 120
     const unsigned int index_a = qp + h->slice_alpha_c0_offset;
121 121
     const int alpha = alpha_table[index_a];
122 122
     const int beta  = beta_table[qp + h->slice_beta_offset];
... ...
@@ -269,7 +269,7 @@ static void filter_mb_mbaff_edgecv( H264Context *h, uint8_t *pix, int stride, in
269 269
     }
270 270
 }
271 271
 
272
-static void av_noinline filter_mb_edgeh( uint8_t *pix, int stride, int16_t bS[4], unsigned int qp, H264Context *h ) {
272
+static void av_always_inline filter_mb_edgeh( uint8_t *pix, int stride, int16_t bS[4], unsigned int qp, H264Context *h ) {
273 273
     const unsigned int index_a = qp + h->slice_alpha_c0_offset;
274 274
     const int alpha = alpha_table[index_a];
275 275
     const int beta  = beta_table[qp + h->slice_beta_offset];
... ...
@@ -287,7 +287,7 @@ static void av_noinline filter_mb_edgeh( uint8_t *pix, int stride, int16_t bS[4]
287 287
     }
288 288
 }
289 289
 
290
-static void av_noinline filter_mb_edgech( uint8_t *pix, int stride, int16_t bS[4], unsigned int qp, H264Context *h ) {
290
+static void av_always_inline filter_mb_edgech( uint8_t *pix, int stride, int16_t bS[4], unsigned int qp, H264Context *h ) {
291 291
     const unsigned int index_a = qp + h->slice_alpha_c0_offset;
292 292
     const int alpha = alpha_table[index_a];
293 293
     const int beta  = beta_table[qp + h->slice_beta_offset];