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

Side by Side Diff: source/libvpx/vp8/common/postproc.c

Issue 7671004: Update libvpx snapshot to v0.9.7-p1 (Cayuga). (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/libvpx/
Patch Set: '' Created 9 years, 4 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 | « source/libvpx/vp8/common/onyxd.h ('k') | source/libvpx/vp8/common/ppc/loopfilter_altivec.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 MODE_INFO *mi = oci->mi; 797 MODE_INFO *mi = oci->mi;
798 798
799 y_ptr = post->y_buffer + 4 * post->y_stride + 4; 799 y_ptr = post->y_buffer + 4 * post->y_stride + 4;
800 800
801 /* vp8_filter each macro block */ 801 /* vp8_filter each macro block */
802 for (i = 0; i < mb_rows; i++) 802 for (i = 0; i < mb_rows; i++)
803 { 803 {
804 for (j = 0; j < mb_cols; j++) 804 for (j = 0; j < mb_cols; j++)
805 { 805 {
806 char zz[4]; 806 char zz[4];
807 int dc_diff = !(mi[mb_index].mbmi.mode != B_PRED &&
808 mi[mb_index].mbmi.mode != SPLITMV &&
809 mi[mb_index].mbmi.mb_skip_coeff);
807 810
808 if (oci->frame_type == KEY_FRAME) 811 if (oci->frame_type == KEY_FRAME)
809 sprintf(zz, "a"); 812 sprintf(zz, "a");
810 else 813 else
811 sprintf(zz, "%c", mi[mb_index].mbmi.dc_diff + '0'); 814 sprintf(zz, "%c", dc_diff + '0');
812 815
813 vp8_blit_text(zz, y_ptr, post->y_stride); 816 vp8_blit_text(zz, y_ptr, post->y_stride);
814 mb_index ++; 817 mb_index ++;
815 y_ptr += 16; 818 y_ptr += 16;
816 } 819 }
817 820
818 mb_index ++; /* border */ 821 mb_index ++; /* border */
819 y_ptr += post->y_stride * 16 - post->y_width; 822 y_ptr += post->y_stride * 16 - post->y_width;
820 823
821 } 824 }
822 } 825 }
823 826
824 if (flags & VP8D_DEBUG_TXT_RATE_INFO) 827 if (flags & VP8D_DEBUG_TXT_RATE_INFO)
825 { 828 {
826 char message[512]; 829 char message[512];
827 sprintf(message, "Bitrate: %10.2f frame_rate: %10.2f ", oci->bitrate, oc i->framerate); 830 sprintf(message, "Bitrate: %10.2f frame_rate: %10.2f ", oci->bitrate, oc i->framerate);
828 vp8_blit_text(message, oci->post_proc_buffer.y_buffer, oci->post_proc_bu ffer.y_stride); 831 vp8_blit_text(message, oci->post_proc_buffer.y_buffer, oci->post_proc_bu ffer.y_stride);
829 } 832 }
830 833
831 /* Draw motion vectors */ 834 /* Draw motion vectors */
832 if ((flags & VP8D_DEBUG_DRAW_MV) && ppflags->display_mv_flag) 835 if ((flags & VP8D_DEBUG_DRAW_MV) && ppflags->display_mv_flag)
833 { 836 {
834 YV12_BUFFER_CONFIG *post = &oci->post_proc_buffer; 837 YV12_BUFFER_CONFIG *post = &oci->post_proc_buffer;
835 int width = post->y_width; 838 int width = post->y_width;
836 int height = post->y_height; 839 int height = post->y_height;
837 int mb_cols = width >> 4;
838 unsigned char *y_buffer = oci->post_proc_buffer.y_buffer; 840 unsigned char *y_buffer = oci->post_proc_buffer.y_buffer;
839 int y_stride = oci->post_proc_buffer.y_stride; 841 int y_stride = oci->post_proc_buffer.y_stride;
840 MODE_INFO *mi = oci->mi; 842 MODE_INFO *mi = oci->mi;
841 int x0, y0; 843 int x0, y0;
842 844
843 for (y0 = 0; y0 < height; y0 += 16) 845 for (y0 = 0; y0 < height; y0 += 16)
844 { 846 {
845 for (x0 = 0; x0 < width; x0 += 16) 847 for (x0 = 0; x0 < width; x0 += 16)
846 { 848 {
847 int x1, y1; 849 int x1, y1;
848 850
849 if (!(ppflags->display_mv_flag & (1<<mi->mbmi.mode))) 851 if (!(ppflags->display_mv_flag & (1<<mi->mbmi.mode)))
850 { 852 {
851 mi++; 853 mi++;
852 continue; 854 continue;
853 } 855 }
854 856
855 if (mi->mbmi.mode == SPLITMV) 857 if (mi->mbmi.mode == SPLITMV)
856 { 858 {
857 switch (mi->mbmi.partitioning) 859 switch (mi->mbmi.partitioning)
858 { 860 {
859 case 0 : /* mv_top_bottom */ 861 case 0 : /* mv_top_bottom */
860 { 862 {
861 B_MODE_INFO *bmi = &mi->bmi[0]; 863 union b_mode_info *bmi = &mi->bmi[0];
862 MV *mv = &bmi->mv.as_mv; 864 MV *mv = &bmi->mv.as_mv;
863 865
864 x1 = x0 + 8 + (mv->col >> 3); 866 x1 = x0 + 8 + (mv->col >> 3);
865 y1 = y0 + 4 + (mv->row >> 3); 867 y1 = y0 + 4 + (mv->row >> 3);
866 868
867 constrain_line (x0+8, &x1, y0+4, &y1, width, height) ; 869 constrain_line (x0+8, &x1, y0+4, &y1, width, height) ;
868 vp8_blit_line (x0+8, x1, y0+4, y1, y_buffer, y_st ride); 870 vp8_blit_line (x0+8, x1, y0+4, y1, y_buffer, y_st ride);
869 871
870 bmi = &mi->bmi[8]; 872 bmi = &mi->bmi[8];
871 873
872 x1 = x0 + 8 + (mv->col >> 3); 874 x1 = x0 + 8 + (mv->col >> 3);
873 y1 = y0 +12 + (mv->row >> 3); 875 y1 = y0 +12 + (mv->row >> 3);
874 876
875 constrain_line (x0+8, &x1, y0+12, &y1, width, height ); 877 constrain_line (x0+8, &x1, y0+12, &y1, width, height );
876 vp8_blit_line (x0+8, x1, y0+12, y1, y_buffer, y_s tride); 878 vp8_blit_line (x0+8, x1, y0+12, y1, y_buffer, y_s tride);
877 879
878 break; 880 break;
879 } 881 }
880 case 1 : /* mv_left_right */ 882 case 1 : /* mv_left_right */
881 { 883 {
882 B_MODE_INFO *bmi = &mi->bmi[0]; 884 union b_mode_info *bmi = &mi->bmi[0];
883 MV *mv = &bmi->mv.as_mv; 885 MV *mv = &bmi->mv.as_mv;
884 886
885 x1 = x0 + 4 + (mv->col >> 3); 887 x1 = x0 + 4 + (mv->col >> 3);
886 y1 = y0 + 8 + (mv->row >> 3); 888 y1 = y0 + 8 + (mv->row >> 3);
887 889
888 constrain_line (x0+4, &x1, y0+8, &y1, width, height) ; 890 constrain_line (x0+4, &x1, y0+8, &y1, width, height) ;
889 vp8_blit_line (x0+4, x1, y0+8, y1, y_buffer, y_st ride); 891 vp8_blit_line (x0+4, x1, y0+8, y1, y_buffer, y_st ride);
890 892
891 bmi = &mi->bmi[2]; 893 bmi = &mi->bmi[2];
892 894
893 x1 = x0 +12 + (mv->col >> 3); 895 x1 = x0 +12 + (mv->col >> 3);
894 y1 = y0 + 8 + (mv->row >> 3); 896 y1 = y0 + 8 + (mv->row >> 3);
895 897
896 constrain_line (x0+12, &x1, y0+8, &y1, width, height ); 898 constrain_line (x0+12, &x1, y0+8, &y1, width, height );
897 vp8_blit_line (x0+12, x1, y0+8, y1, y_buffer, y_s tride); 899 vp8_blit_line (x0+12, x1, y0+8, y1, y_buffer, y_s tride);
898 900
899 break; 901 break;
900 } 902 }
901 case 2 : /* mv_quarters */ 903 case 2 : /* mv_quarters */
902 { 904 {
903 B_MODE_INFO *bmi = &mi->bmi[0]; 905 union b_mode_info *bmi = &mi->bmi[0];
904 MV *mv = &bmi->mv.as_mv; 906 MV *mv = &bmi->mv.as_mv;
905 907
906 x1 = x0 + 4 + (mv->col >> 3); 908 x1 = x0 + 4 + (mv->col >> 3);
907 y1 = y0 + 4 + (mv->row >> 3); 909 y1 = y0 + 4 + (mv->row >> 3);
908 910
909 constrain_line (x0+4, &x1, y0+4, &y1, width, height) ; 911 constrain_line (x0+4, &x1, y0+4, &y1, width, height) ;
910 vp8_blit_line (x0+4, x1, y0+4, y1, y_buffer, y_st ride); 912 vp8_blit_line (x0+4, x1, y0+4, y1, y_buffer, y_st ride);
911 913
912 bmi = &mi->bmi[2]; 914 bmi = &mi->bmi[2];
913 915
(...skipping 15 matching lines...) Expand all
929 931
930 x1 = x0 +12 + (mv->col >> 3); 932 x1 = x0 +12 + (mv->col >> 3);
931 y1 = y0 +12 + (mv->row >> 3); 933 y1 = y0 +12 + (mv->row >> 3);
932 934
933 constrain_line (x0+12, &x1, y0+12, &y1, width, heigh t); 935 constrain_line (x0+12, &x1, y0+12, &y1, width, heigh t);
934 vp8_blit_line (x0+12, x1, y0+12, y1, y_buffer, y_ stride); 936 vp8_blit_line (x0+12, x1, y0+12, y1, y_buffer, y_ stride);
935 break; 937 break;
936 } 938 }
937 default : 939 default :
938 { 940 {
939 B_MODE_INFO *bmi = mi->bmi; 941 union b_mode_info *bmi = mi->bmi;
940 int bx0, by0; 942 int bx0, by0;
941 943
942 for (by0 = y0; by0 < (y0+16); by0 += 4) 944 for (by0 = y0; by0 < (y0+16); by0 += 4)
943 { 945 {
944 for (bx0 = x0; bx0 < (x0+16); bx0 += 4) 946 for (bx0 = x0; bx0 < (x0+16); bx0 += 4)
945 { 947 {
946 MV *mv = &bmi->mv.as_mv; 948 MV *mv = &bmi->mv.as_mv;
947 949
948 x1 = bx0 + 2 + (mv->col >> 3); 950 x1 = bx0 + 2 + (mv->col >> 3);
949 y1 = by0 + 2 + (mv->row >> 3); 951 y1 = by0 + 2 + (mv->row >> 3);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 { 1004 {
1003 for (x = 0; x < width; x += 16) 1005 for (x = 0; x < width; x += 16)
1004 { 1006 {
1005 int Y = 0, U = 0, V = 0; 1007 int Y = 0, U = 0, V = 0;
1006 1008
1007 if (mi->mbmi.mode == B_PRED && 1009 if (mi->mbmi.mode == B_PRED &&
1008 ((ppflags->display_mb_modes_flag & B_PRED) || ppflags->displ ay_b_modes_flag)) 1010 ((ppflags->display_mb_modes_flag & B_PRED) || ppflags->displ ay_b_modes_flag))
1009 { 1011 {
1010 int by, bx; 1012 int by, bx;
1011 unsigned char *yl, *ul, *vl; 1013 unsigned char *yl, *ul, *vl;
1012 B_MODE_INFO *bmi = mi->bmi; 1014 union b_mode_info *bmi = mi->bmi;
1013 1015
1014 yl = y_ptr + x; 1016 yl = y_ptr + x;
1015 ul = u_ptr + (x>>1); 1017 ul = u_ptr + (x>>1);
1016 vl = v_ptr + (x>>1); 1018 vl = v_ptr + (x>>1);
1017 1019
1018 for (by = 0; by < 16; by += 4) 1020 for (by = 0; by < 16; by += 4)
1019 { 1021 {
1020 for (bx = 0; bx < 16; bx += 4) 1022 for (bx = 0; bx < 16; bx += 4)
1021 { 1023 {
1022 if ((ppflags->display_b_modes_flag & (1<<mi->mbmi.mo de)) 1024 if ((ppflags->display_b_modes_flag & (1<<mi->mbmi.mo de))
1023 || (ppflags->display_mb_modes_flag & B_PRED)) 1025 || (ppflags->display_mb_modes_flag & B_PRED))
1024 { 1026 {
1025 Y = B_PREDICTION_MODE_colors[bmi->mode][0]; 1027 Y = B_PREDICTION_MODE_colors[bmi->as_mode][0];
1026 U = B_PREDICTION_MODE_colors[bmi->mode][1]; 1028 U = B_PREDICTION_MODE_colors[bmi->as_mode][1];
1027 V = B_PREDICTION_MODE_colors[bmi->mode][2]; 1029 V = B_PREDICTION_MODE_colors[bmi->as_mode][2];
1028 1030
1029 POSTPROC_INVOKE(RTCD_VTABLE(oci), blend_b) 1031 POSTPROC_INVOKE(RTCD_VTABLE(oci), blend_b)
1030 (yl+bx, ul+(bx>>1), vl+(bx>>1), Y, U, V, 0xc 000, y_stride); 1032 (yl+bx, ul+(bx>>1), vl+(bx>>1), Y, U, V, 0xc 000, y_stride);
1031 } 1033 }
1032 bmi++; 1034 bmi++;
1033 } 1035 }
1034 1036
1035 yl += y_stride*4; 1037 yl += y_stride*4;
1036 ul += y_stride*1; 1038 ul += y_stride*1;
1037 vl += y_stride*1; 1039 vl += y_stride*1;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1098 #endif 1100 #endif
1099 1101
1100 *dest = oci->post_proc_buffer; 1102 *dest = oci->post_proc_buffer;
1101 1103
1102 /* handle problem with extending borders */ 1104 /* handle problem with extending borders */
1103 dest->y_width = oci->Width; 1105 dest->y_width = oci->Width;
1104 dest->y_height = oci->Height; 1106 dest->y_height = oci->Height;
1105 dest->uv_height = dest->y_height / 2; 1107 dest->uv_height = dest->y_height / 2;
1106 return 0; 1108 return 0;
1107 } 1109 }
OLDNEW
« no previous file with comments | « source/libvpx/vp8/common/onyxd.h ('k') | source/libvpx/vp8/common/ppc/loopfilter_altivec.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698