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

Side by Side Diff: patched-ffmpeg-mt/libavcodec/x86/cavsdsp_mmx.c

Issue 789004: ffmpeg roll of source to mar 9 version... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/ffmpeg/
Patch Set: '' Created 10 years, 9 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
OLDNEW
1 /* 1 /*
2 * Chinese AVS video (AVS1-P2, JiZhun profile) decoder. 2 * Chinese AVS video (AVS1-P2, JiZhun profile) decoder.
3 * Copyright (c) 2006 Stefan Gehrer <stefan.gehrer@gmx.de> 3 * Copyright (c) 2006 Stefan Gehrer <stefan.gehrer@gmx.de>
4 * 4 *
5 * MMX-optimized DSP functions, based on H.264 optimizations by 5 * MMX-optimized DSP functions, based on H.264 optimizations by
6 * Michael Niedermayer and Loren Merritt 6 * Michael Niedermayer and Loren Merritt
7 * 7 *
8 * This file is part of FFmpeg. 8 * This file is part of FFmpeg.
9 * 9 *
10 * FFmpeg is free software; you can redistribute it and/or 10 * FFmpeg is free software; you can redistribute it and/or
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 SUMSUB_BA( %%mm5, %%mm4 ) /* mm5 = dst1 mm4 = dst6 */ 106 SUMSUB_BA( %%mm5, %%mm4 ) /* mm5 = dst1 mm4 = dst6 */
107 SUMSUB_BA( %%mm3, %%mm2 ) /* mm3 = dst2 mm2 = dst5 */ 107 SUMSUB_BA( %%mm3, %%mm2 ) /* mm3 = dst2 mm2 = dst5 */
108 SUMSUB_BA( %%mm1, %%mm0 ) /* mm1 = dst3 mm0 = dst4 */ 108 SUMSUB_BA( %%mm1, %%mm0 ) /* mm1 = dst3 mm0 = dst4 */
109 :: "r"(block), "m"(bias) 109 :: "r"(block), "m"(bias)
110 ); 110 );
111 } 111 }
112 112
113 static void cavs_idct8_add_mmx(uint8_t *dst, int16_t *block, int stride) 113 static void cavs_idct8_add_mmx(uint8_t *dst, int16_t *block, int stride)
114 { 114 {
115 int i; 115 int i;
116 DECLARE_ALIGNED_8(int16_t, b2)[64]; 116 DECLARE_ALIGNED(8, int16_t, b2)[64];
117 117
118 for(i=0; i<2; i++){ 118 for(i=0; i<2; i++){
119 DECLARE_ALIGNED_8(uint64_t, tmp); 119 DECLARE_ALIGNED(8, uint64_t, tmp);
120 120
121 cavs_idct8_1d(block+4*i, ff_pw_4); 121 cavs_idct8_1d(block+4*i, ff_pw_4);
122 122
123 __asm__ volatile( 123 __asm__ volatile(
124 "psraw $3, %%mm7 \n\t" 124 "psraw $3, %%mm7 \n\t"
125 "psraw $3, %%mm6 \n\t" 125 "psraw $3, %%mm6 \n\t"
126 "psraw $3, %%mm5 \n\t" 126 "psraw $3, %%mm5 \n\t"
127 "psraw $3, %%mm4 \n\t" 127 "psraw $3, %%mm4 \n\t"
128 "psraw $3, %%mm3 \n\t" 128 "psraw $3, %%mm3 \n\t"
129 "psraw $3, %%mm2 \n\t" 129 "psraw $3, %%mm2 \n\t"
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 430
431 CAVS_MC(put_, 8, 3dnow) 431 CAVS_MC(put_, 8, 3dnow)
432 CAVS_MC(put_, 16,3dnow) 432 CAVS_MC(put_, 16,3dnow)
433 CAVS_MC(avg_, 8, 3dnow) 433 CAVS_MC(avg_, 8, 3dnow)
434 CAVS_MC(avg_, 16,3dnow) 434 CAVS_MC(avg_, 16,3dnow)
435 CAVS_MC(put_, 8, mmx2) 435 CAVS_MC(put_, 8, mmx2)
436 CAVS_MC(put_, 16,mmx2) 436 CAVS_MC(put_, 16,mmx2)
437 CAVS_MC(avg_, 8, mmx2) 437 CAVS_MC(avg_, 8, mmx2)
438 CAVS_MC(avg_, 16,mmx2) 438 CAVS_MC(avg_, 16,mmx2)
439 439
440 void ff_put_cavs_qpel8_mc00_mmx2(uint8_t *dst, uint8_t *src, int stride);
441 void ff_avg_cavs_qpel8_mc00_mmx2(uint8_t *dst, uint8_t *src, int stride);
442 void ff_put_cavs_qpel16_mc00_mmx2(uint8_t *dst, uint8_t *src, int stride);
443 void ff_avg_cavs_qpel16_mc00_mmx2(uint8_t *dst, uint8_t *src, int stride);
444
445 void ff_cavsdsp_init_mmx2(DSPContext* c, AVCodecContext *avctx) { 440 void ff_cavsdsp_init_mmx2(DSPContext* c, AVCodecContext *avctx) {
446 #define dspfunc(PFX, IDX, NUM) \ 441 #define dspfunc(PFX, IDX, NUM) \
447 c->PFX ## _pixels_tab[IDX][ 0] = ff_ ## PFX ## NUM ## _mc00_mmx2; \ 442 c->PFX ## _pixels_tab[IDX][ 0] = ff_ ## PFX ## NUM ## _mc00_mmx2; \
448 c->PFX ## _pixels_tab[IDX][ 2] = ff_ ## PFX ## NUM ## _mc20_mmx2; \ 443 c->PFX ## _pixels_tab[IDX][ 2] = ff_ ## PFX ## NUM ## _mc20_mmx2; \
449 c->PFX ## _pixels_tab[IDX][ 4] = ff_ ## PFX ## NUM ## _mc01_mmx2; \ 444 c->PFX ## _pixels_tab[IDX][ 4] = ff_ ## PFX ## NUM ## _mc01_mmx2; \
450 c->PFX ## _pixels_tab[IDX][ 8] = ff_ ## PFX ## NUM ## _mc02_mmx2; \ 445 c->PFX ## _pixels_tab[IDX][ 8] = ff_ ## PFX ## NUM ## _mc02_mmx2; \
451 c->PFX ## _pixels_tab[IDX][12] = ff_ ## PFX ## NUM ## _mc03_mmx2; \ 446 c->PFX ## _pixels_tab[IDX][12] = ff_ ## PFX ## NUM ## _mc03_mmx2; \
452 447
453 dspfunc(put_cavs_qpel, 0, 16); 448 dspfunc(put_cavs_qpel, 0, 16);
454 dspfunc(put_cavs_qpel, 1, 8); 449 dspfunc(put_cavs_qpel, 1, 8);
(...skipping 11 matching lines...) Expand all
466 c->PFX ## _pixels_tab[IDX][ 8] = ff_ ## PFX ## NUM ## _mc02_3dnow; \ 461 c->PFX ## _pixels_tab[IDX][ 8] = ff_ ## PFX ## NUM ## _mc02_3dnow; \
467 c->PFX ## _pixels_tab[IDX][12] = ff_ ## PFX ## NUM ## _mc03_3dnow; \ 462 c->PFX ## _pixels_tab[IDX][12] = ff_ ## PFX ## NUM ## _mc03_3dnow; \
468 463
469 dspfunc(put_cavs_qpel, 0, 16); 464 dspfunc(put_cavs_qpel, 0, 16);
470 dspfunc(put_cavs_qpel, 1, 8); 465 dspfunc(put_cavs_qpel, 1, 8);
471 dspfunc(avg_cavs_qpel, 0, 16); 466 dspfunc(avg_cavs_qpel, 0, 16);
472 dspfunc(avg_cavs_qpel, 1, 8); 467 dspfunc(avg_cavs_qpel, 1, 8);
473 #undef dspfunc 468 #undef dspfunc
474 c->cavs_idct8_add = cavs_idct8_add_mmx; 469 c->cavs_idct8_add = cavs_idct8_add_mmx;
475 } 470 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698