Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Side by Side Diff: media/base/yuv_row_posix.cc

Issue 2813011: Revert 49990 - x (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/base/yuv_row.h" 5 #include "media/base/yuv_row.h"
6 6
7 #ifdef _DEBUG 7 #ifdef _DEBUG
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #else 9 #else
10 #define DCHECK(a) 10 #define DCHECK(a)
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 266
267 void FastConvertYUVToRGB32Row(const uint8* y_buf, 267 void FastConvertYUVToRGB32Row(const uint8* y_buf,
268 const uint8* u_buf, 268 const uint8* u_buf,
269 const uint8* v_buf, 269 const uint8* v_buf,
270 uint8* rgb_buf, 270 uint8* rgb_buf,
271 int width); 271 int width);
272 272
273 asm( 273 asm(
274 ".global FastConvertYUVToRGB32Row\n" 274 ".global FastConvertYUVToRGB32Row\n"
275 "FastConvertYUVToRGB32Row:\n" 275 "FastConvertYUVToRGB32Row:\n"
276 #if 0
277 "pusha\n" 276 "pusha\n"
278 "mov 0x24(%esp),%edx\n" 277 "mov 0x24(%esp),%edx\n"
279 "mov 0x28(%esp),%edi\n" 278 "mov 0x28(%esp),%edi\n"
280 "mov 0x2c(%esp),%esi\n" 279 "mov 0x2c(%esp),%esi\n"
281 "mov 0x30(%esp),%ebp\n" 280 "mov 0x30(%esp),%ebp\n"
282 "mov 0x34(%esp),%ecx\n" 281 "mov 0x34(%esp),%ecx\n"
283 "jmp convertend\n" 282 "jmp convertend\n"
284 283
285 "convertloop:" 284 "convertloop:"
286 "movzbl (%edi),%eax\n" 285 "movzbl (%edi),%eax\n"
(...skipping 26 matching lines...) Expand all
313 "movzbl (%esi),%eax\n" 312 "movzbl (%esi),%eax\n"
314 "paddsw kCoefficientsRgbY+4096(,%eax,8),%mm0\n" 313 "paddsw kCoefficientsRgbY+4096(,%eax,8),%mm0\n"
315 "movzbl (%edx),%eax\n" 314 "movzbl (%edx),%eax\n"
316 "movq kCoefficientsRgbY(,%eax,8),%mm1\n" 315 "movq kCoefficientsRgbY(,%eax,8),%mm1\n"
317 "paddsw %mm0,%mm1\n" 316 "paddsw %mm0,%mm1\n"
318 "psraw $0x6,%mm1\n" 317 "psraw $0x6,%mm1\n"
319 "packuswb %mm1,%mm1\n" 318 "packuswb %mm1,%mm1\n"
320 "movd %mm1,0x0(%ebp)\n" 319 "movd %mm1,0x0(%ebp)\n"
321 "convertdone:" 320 "convertdone:"
322 "popa\n" 321 "popa\n"
323 #endif
324 "ret\n" 322 "ret\n"
325 ); 323 );
326 324
327 325
328 void ScaleYUVToRGB32Row(const uint8* y_buf, 326 void ScaleYUVToRGB32Row(const uint8* y_buf,
329 const uint8* u_buf, 327 const uint8* u_buf,
330 const uint8* v_buf, 328 const uint8* v_buf,
331 uint8* rgb_buf, 329 uint8* rgb_buf,
332 int width, 330 int width,
333 int source_dx); 331 int source_dx);
334 332
335 asm( 333 asm(
336 ".global ScaleYUVToRGB32Row\n" 334 ".global ScaleYUVToRGB32Row\n"
337 "ScaleYUVToRGB32Row:\n" 335 "ScaleYUVToRGB32Row:\n"
338 #if 0
339 "pusha\n" 336 "pusha\n"
340 "mov 0x24(%esp),%edx\n" 337 "mov 0x24(%esp),%edx\n"
341 "mov 0x28(%esp),%edi\n" 338 "mov 0x28(%esp),%edi\n"
342 "mov 0x2c(%esp),%esi\n" 339 "mov 0x2c(%esp),%esi\n"
343 "mov 0x30(%esp),%ebp\n" 340 "mov 0x30(%esp),%ebp\n"
344 "mov 0x34(%esp),%ecx\n" 341 "mov 0x34(%esp),%ecx\n"
345 "xor %ebx,%ebx\n" 342 "xor %ebx,%ebx\n"
346 "jmp scaleend\n" 343 "jmp scaleend\n"
347 344
348 "scaleloop:" 345 "scaleloop:"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 "sar $0x10,%eax\n" 387 "sar $0x10,%eax\n"
391 "movzbl (%edx,%eax,1),%eax\n" 388 "movzbl (%edx,%eax,1),%eax\n"
392 "movq kCoefficientsRgbY(,%eax,8),%mm1\n" 389 "movq kCoefficientsRgbY(,%eax,8),%mm1\n"
393 "paddsw %mm0,%mm1\n" 390 "paddsw %mm0,%mm1\n"
394 "psraw $0x6,%mm1\n" 391 "psraw $0x6,%mm1\n"
395 "packuswb %mm1,%mm1\n" 392 "packuswb %mm1,%mm1\n"
396 "movd %mm1,0x0(%ebp)\n" 393 "movd %mm1,0x0(%ebp)\n"
397 394
398 "scaledone:" 395 "scaledone:"
399 "popa\n" 396 "popa\n"
400 #endif
401 "ret\n" 397 "ret\n"
402 ); 398 );
403 399
404 void LinearScaleYUVToRGB32Row(const uint8* y_buf, 400 void LinearScaleYUVToRGB32Row(const uint8* y_buf,
405 const uint8* u_buf, 401 const uint8* u_buf,
406 const uint8* v_buf, 402 const uint8* v_buf,
407 uint8* rgb_buf, 403 uint8* rgb_buf,
408 int width, 404 int width,
409 int source_dx); 405 int source_dx);
410 406
411 asm( 407 asm(
412 ".global LinearScaleYUVToRGB32Row\n" 408 ".global LinearScaleYUVToRGB32Row\n"
413 "LinearScaleYUVToRGB32Row:\n" 409 "LinearScaleYUVToRGB32Row:\n"
414 #if 0
415 "pusha\n" 410 "pusha\n"
416 "mov 0x24(%esp),%edx\n" 411 "mov 0x24(%esp),%edx\n"
417 "mov 0x28(%esp),%edi\n" 412 "mov 0x28(%esp),%edi\n"
418 "mov 0x30(%esp),%ebp\n" 413 "mov 0x30(%esp),%ebp\n"
419 414
420 // source_width = width * source_dx + ebx 415 // source_width = width * source_dx + ebx
421 "mov 0x34(%esp), %ecx\n" 416 "mov 0x34(%esp), %ecx\n"
422 "imull 0x38(%esp), %ecx\n" 417 "imull 0x38(%esp), %ecx\n"
423 "mov %ecx, 0x34(%esp)\n" 418 "mov %ecx, 0x34(%esp)\n"
424 419
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 "jl .lscaleloop\n" 498 "jl .lscaleloop\n"
504 "popa\n" 499 "popa\n"
505 "ret\n" 500 "ret\n"
506 501
507 ".lscalelastpixel:" 502 ".lscalelastpixel:"
508 "paddsw %mm0, %mm1\n" 503 "paddsw %mm0, %mm1\n"
509 "psraw $6, %mm1\n" 504 "psraw $6, %mm1\n"
510 "packuswb %mm1, %mm1\n" 505 "packuswb %mm1, %mm1\n"
511 "movd %mm1, (%ebp)\n" 506 "movd %mm1, (%ebp)\n"
512 "popa\n" 507 "popa\n"
513 #endif
514 "ret\n" 508 "ret\n"
515 ); 509 );
516 510
517 #elif USE_MMX && !defined(ARCH_CPU_X86_64) && defined(__PIC__) 511 #elif USE_MMX && !defined(ARCH_CPU_X86_64) && defined(__PIC__)
518 512
519 extern void PICConvertYUVToRGB32Row(const uint8* y_buf, 513 extern void PICConvertYUVToRGB32Row(const uint8* y_buf,
520 const uint8* u_buf, 514 const uint8* u_buf,
521 const uint8* v_buf, 515 const uint8* v_buf,
522 uint8* rgb_buf, 516 uint8* rgb_buf,
523 int width, 517 int width,
524 int16 *kCoefficientsRgbY); 518 int16 *kCoefficientsRgbY);
525 __asm__( 519 __asm__(
526 "_PICConvertYUVToRGB32Row:\n" 520 "_PICConvertYUVToRGB32Row:\n"
527 #if 0
528 "pusha\n" 521 "pusha\n"
529 "mov 0x24(%esp),%edx\n" 522 "mov 0x24(%esp),%edx\n"
530 "mov 0x28(%esp),%edi\n" 523 "mov 0x28(%esp),%edi\n"
531 "mov 0x2c(%esp),%esi\n" 524 "mov 0x2c(%esp),%esi\n"
532 "mov 0x30(%esp),%ebp\n" 525 "mov 0x30(%esp),%ebp\n"
533 "mov 0x38(%esp),%ecx\n" 526 "mov 0x38(%esp),%ecx\n"
534 527
535 "jmp .Lconvertend\n" 528 "jmp .Lconvertend\n"
536 529
537 ".Lconvertloop:" 530 ".Lconvertloop:"
(...skipping 27 matching lines...) Expand all
565 "movzbl (%esi),%eax\n" 558 "movzbl (%esi),%eax\n"
566 "paddsw 4096(%ecx,%eax,8),%mm0\n" 559 "paddsw 4096(%ecx,%eax,8),%mm0\n"
567 "movzbl (%edx),%eax\n" 560 "movzbl (%edx),%eax\n"
568 "movq 0(%ecx,%eax,8),%mm1\n" 561 "movq 0(%ecx,%eax,8),%mm1\n"
569 "paddsw %mm0,%mm1\n" 562 "paddsw %mm0,%mm1\n"
570 "psraw $0x6,%mm1\n" 563 "psraw $0x6,%mm1\n"
571 "packuswb %mm1,%mm1\n" 564 "packuswb %mm1,%mm1\n"
572 "movd %mm1,0x0(%ebp)\n" 565 "movd %mm1,0x0(%ebp)\n"
573 ".Lconvertdone:\n" 566 ".Lconvertdone:\n"
574 "popa\n" 567 "popa\n"
575 #endif
576 "ret\n" 568 "ret\n"
577 ); 569 );
578 570
579 void FastConvertYUVToRGB32Row(const uint8* y_buf, 571 void FastConvertYUVToRGB32Row(const uint8* y_buf,
580 const uint8* u_buf, 572 const uint8* u_buf,
581 const uint8* v_buf, 573 const uint8* v_buf,
582 uint8* rgb_buf, 574 uint8* rgb_buf,
583 int width) { 575 int width) {
584 PICConvertYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, 576 PICConvertYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width,
585 &kCoefficientsRgbY[0][0]); 577 &kCoefficientsRgbY[0][0]);
586 } 578 }
587 579
588 extern void PICScaleYUVToRGB32Row(const uint8* y_buf, 580 extern void PICScaleYUVToRGB32Row(const uint8* y_buf,
589 const uint8* u_buf, 581 const uint8* u_buf,
590 const uint8* v_buf, 582 const uint8* v_buf,
591 uint8* rgb_buf, 583 uint8* rgb_buf,
592 int width, 584 int width,
593 int source_dx, 585 int source_dx,
594 int16 *kCoefficientsRgbY); 586 int16 *kCoefficientsRgbY);
595 587
596 __asm__( 588 __asm__(
597 "_PICScaleYUVToRGB32Row:\n" 589 "_PICScaleYUVToRGB32Row:\n"
598 #if 0
599 "pusha\n" 590 "pusha\n"
600 "mov 0x24(%esp),%edx\n" 591 "mov 0x24(%esp),%edx\n"
601 "mov 0x28(%esp),%edi\n" 592 "mov 0x28(%esp),%edi\n"
602 "mov 0x2c(%esp),%esi\n" 593 "mov 0x2c(%esp),%esi\n"
603 "mov 0x30(%esp),%ebp\n" 594 "mov 0x30(%esp),%ebp\n"
604 "mov 0x3c(%esp),%ecx\n" 595 "mov 0x3c(%esp),%ecx\n"
605 "xor %ebx,%ebx\n" 596 "xor %ebx,%ebx\n"
606 "jmp Lscaleend\n" 597 "jmp Lscaleend\n"
607 598
608 "Lscaleloop:" 599 "Lscaleloop:"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 "sar $0x10,%eax\n" 641 "sar $0x10,%eax\n"
651 "movzbl (%edx,%eax,1),%eax\n" 642 "movzbl (%edx,%eax,1),%eax\n"
652 "movq 0(%ecx,%eax,8),%mm1\n" 643 "movq 0(%ecx,%eax,8),%mm1\n"
653 "paddsw %mm0,%mm1\n" 644 "paddsw %mm0,%mm1\n"
654 "psraw $0x6,%mm1\n" 645 "psraw $0x6,%mm1\n"
655 "packuswb %mm1,%mm1\n" 646 "packuswb %mm1,%mm1\n"
656 "movd %mm1,0x0(%ebp)\n" 647 "movd %mm1,0x0(%ebp)\n"
657 648
658 "Lscaledone:" 649 "Lscaledone:"
659 "popa\n" 650 "popa\n"
660 #endif
661 "ret\n" 651 "ret\n"
662 ); 652 );
663 653
664 654
665 void ScaleYUVToRGB32Row(const uint8* y_buf, 655 void ScaleYUVToRGB32Row(const uint8* y_buf,
666 const uint8* u_buf, 656 const uint8* u_buf,
667 const uint8* v_buf, 657 const uint8* v_buf,
668 uint8* rgb_buf, 658 uint8* rgb_buf,
669 int width, 659 int width,
670 int source_dx) { 660 int source_dx) {
671 PICScaleYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, source_dx, 661 PICScaleYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, source_dx,
672 &kCoefficientsRgbY[0][0]); 662 &kCoefficientsRgbY[0][0]);
673 } 663 }
674 664
675 void PICLinearScaleYUVToRGB32Row(const uint8* y_buf, 665 void PICLinearScaleYUVToRGB32Row(const uint8* y_buf,
676 const uint8* u_buf, 666 const uint8* u_buf,
677 const uint8* v_buf, 667 const uint8* v_buf,
678 uint8* rgb_buf, 668 uint8* rgb_buf,
679 int width, 669 int width,
680 int source_dx, 670 int source_dx,
681 int16 *kCoefficientsRgbY); 671 int16 *kCoefficientsRgbY);
682 672
683 asm( 673 asm(
684 "_PICLinearScaleYUVToRGB32Row:\n" 674 "_PICLinearScaleYUVToRGB32Row:\n"
685 #if 0
686 "pusha\n" 675 "pusha\n"
687 "mov 0x24(%esp),%edx\n" 676 "mov 0x24(%esp),%edx\n"
688 "mov 0x30(%esp),%ebp\n" 677 "mov 0x30(%esp),%ebp\n"
689 "mov 0x34(%esp),%ecx\n" 678 "mov 0x34(%esp),%ecx\n"
690 "mov 0x3c(%esp),%edi\n" 679 "mov 0x3c(%esp),%edi\n"
691 "xor %ebx,%ebx\n" 680 "xor %ebx,%ebx\n"
692 681
693 // source_width = width * source_dx + ebx 682 // source_width = width * source_dx + ebx
694 "mov 0x34(%esp), %ecx\n" 683 "mov 0x34(%esp), %ecx\n"
695 "imull 0x38(%esp), %ecx\n" 684 "imull 0x38(%esp), %ecx\n"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 "jg .lscaleloop\n" 766 "jg .lscaleloop\n"
778 "popa\n" 767 "popa\n"
779 "ret\n" 768 "ret\n"
780 769
781 ".lscalelastpixel:" 770 ".lscalelastpixel:"
782 "paddsw %mm0, %mm1\n" 771 "paddsw %mm0, %mm1\n"
783 "psraw $6, %mm1\n" 772 "psraw $6, %mm1\n"
784 "packuswb %mm1, %mm1\n" 773 "packuswb %mm1, %mm1\n"
785 "movd %mm1, (%ebp)\n" 774 "movd %mm1, (%ebp)\n"
786 "popa\n" 775 "popa\n"
787 #endif
788 "ret\n" 776 "ret\n"
789 ); 777 );
790 778
791 void LinearScaleYUVToRGB32Row(const uint8* y_buf, 779 void LinearScaleYUVToRGB32Row(const uint8* y_buf,
792 const uint8* u_buf, 780 const uint8* u_buf,
793 const uint8* v_buf, 781 const uint8* v_buf,
794 uint8* rgb_buf, 782 uint8* rgb_buf,
795 int width, 783 int width,
796 int source_dx) { 784 int source_dx) {
797 PICLinearScaleYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, source_dx, 785 PICLinearScaleYUVToRGB32Row(y_buf, u_buf, v_buf, rgb_buf, width, source_dx,
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 YuvPixel(y, u, v, rgb_buf+4); 923 YuvPixel(y, u, v, rgb_buf+4);
936 x += source_dx; 924 x += source_dx;
937 } 925 }
938 rgb_buf += 8; 926 rgb_buf += 8;
939 } 927 }
940 } 928 }
941 929
942 #endif // USE_MMX 930 #endif // USE_MMX
943 } // extern "C" 931 } // extern "C"
944 932
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698