Mercurial > libavcodec.hg
comparison h264_loopfilter.c @ 11045:5f712d734793 libavcodec
factorize first filter call out, this makes the code somewhat
smaller without any speed loss.
author | michael |
---|---|
date | Thu, 28 Jan 2010 19:44:13 +0000 |
parents | 74f672a1f763 |
children | 03cda6ebdc05 |
comparison
equal
deleted
inserted
replaced
11044:3f66d1d80e03 | 11045:5f712d734793 |
---|---|
338 | 338 |
339 if( IS_INTRA(mb_type) ) { | 339 if( IS_INTRA(mb_type) ) { |
340 int16_t bS4[4] = {4,4,4,4}; | 340 int16_t bS4[4] = {4,4,4,4}; |
341 int16_t bS3[4] = {3,3,3,3}; | 341 int16_t bS3[4] = {3,3,3,3}; |
342 int16_t *bSH = FIELD_PICTURE ? bS3 : bS4; | 342 int16_t *bSH = FIELD_PICTURE ? bS3 : bS4; |
343 if(left_type) | |
344 filter_mb_edgev( &img_y[4*0], linesize, bS4, qp0, h); | |
343 if( IS_8x8DCT(mb_type) ) { | 345 if( IS_8x8DCT(mb_type) ) { |
344 if(left_type) | |
345 filter_mb_edgev( &img_y[4*0], linesize, bS4, qp0, h); | |
346 filter_mb_edgev( &img_y[4*2], linesize, bS3, qp, h); | 346 filter_mb_edgev( &img_y[4*2], linesize, bS3, qp, h); |
347 filter_mb_edgeh( &img_y[4*0*linesize], linesize, bSH, qp1, h); | 347 filter_mb_edgeh( &img_y[4*0*linesize], linesize, bSH, qp1, h); |
348 filter_mb_edgeh( &img_y[4*2*linesize], linesize, bS3, qp, h); | 348 filter_mb_edgeh( &img_y[4*2*linesize], linesize, bS3, qp, h); |
349 } else { | 349 } else { |
350 if(left_type) | |
351 filter_mb_edgev( &img_y[4*0], linesize, bS4, qp0, h); | |
352 filter_mb_edgev( &img_y[4*1], linesize, bS3, qp, h); | 350 filter_mb_edgev( &img_y[4*1], linesize, bS3, qp, h); |
353 filter_mb_edgev( &img_y[4*2], linesize, bS3, qp, h); | 351 filter_mb_edgev( &img_y[4*2], linesize, bS3, qp, h); |
354 filter_mb_edgev( &img_y[4*3], linesize, bS3, qp, h); | 352 filter_mb_edgev( &img_y[4*3], linesize, bS3, qp, h); |
355 filter_mb_edgeh( &img_y[4*0*linesize], linesize, bSH, qp1, h); | 353 filter_mb_edgeh( &img_y[4*0*linesize], linesize, bSH, qp1, h); |
356 filter_mb_edgeh( &img_y[4*1*linesize], linesize, bS3, qp, h); | 354 filter_mb_edgeh( &img_y[4*1*linesize], linesize, bS3, qp, h); |
397 if(!(edge&1)) {\ | 395 if(!(edge&1)) {\ |
398 filter_mb_edgec##hv( &img_cb[2*edge*(dir?uvlinesize:1)], uvlinesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ | 396 filter_mb_edgec##hv( &img_cb[2*edge*(dir?uvlinesize:1)], uvlinesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ |
399 filter_mb_edgec##hv( &img_cr[2*edge*(dir?uvlinesize:1)], uvlinesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ | 397 filter_mb_edgec##hv( &img_cr[2*edge*(dir?uvlinesize:1)], uvlinesize, bS[dir][edge], edge ? qpc : qpc##dir, h );\ |
400 }\ | 398 }\ |
401 } | 399 } |
400 if(left_type) | |
401 FILTER(v,0,0); | |
402 if( edges == 1 ) { | 402 if( edges == 1 ) { |
403 if(left_type) | |
404 FILTER(v,0,0); | |
405 FILTER(h,1,0); | 403 FILTER(h,1,0); |
406 } else if( IS_8x8DCT(mb_type) ) { | 404 } else if( IS_8x8DCT(mb_type) ) { |
407 if(left_type) | |
408 FILTER(v,0,0); | |
409 FILTER(v,0,2); | 405 FILTER(v,0,2); |
410 FILTER(h,1,0); | 406 FILTER(h,1,0); |
411 FILTER(h,1,2); | 407 FILTER(h,1,2); |
412 } else { | 408 } else { |
413 if(left_type) | |
414 FILTER(v,0,0); | |
415 FILTER(v,0,1); | 409 FILTER(v,0,1); |
416 FILTER(v,0,2); | 410 FILTER(v,0,2); |
417 FILTER(v,0,3); | 411 FILTER(v,0,3); |
418 FILTER(h,1,0); | 412 FILTER(h,1,0); |
419 FILTER(h,1,1); | 413 FILTER(h,1,1); |