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

Side by Side Diff: source/libvpx/y4minput.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
« README.chromium ('K') | « source/libvpx/vpxenc.c ('k') | 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 /* 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 * Based on code from the OggTheora software codec source code, 10 * Based on code from the OggTheora software codec source code,
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 | | | | 139 | | | |
140 | | | | 140 | | | |
141 141
142 We use a resampling filter to shift the site locations one quarter pixel (at 142 We use a resampling filter to shift the site locations one quarter pixel (at
143 the chroma plane's resolution) to the right. 143 the chroma plane's resolution) to the right.
144 The 4:2:2 modes look exactly the same, except there are twice as many chroma 144 The 4:2:2 modes look exactly the same, except there are twice as many chroma
145 lines, and they are vertically co-sited with the luma samples in both the 145 lines, and they are vertically co-sited with the luma samples in both the
146 mpeg2 and jpeg cases (thus requiring no vertical resampling).*/ 146 mpeg2 and jpeg cases (thus requiring no vertical resampling).*/
147 static void y4m_42xmpeg2_42xjpeg_helper(unsigned char *_dst, 147 static void y4m_42xmpeg2_42xjpeg_helper(unsigned char *_dst,
148 const unsigned char *_src,int _c_w,int _c_h){ 148 const unsigned char *_src,int _c_w,int _c_h){
149 int pli;
150 int y; 149 int y;
151 int x; 150 int x;
152 for(y=0;y<_c_h;y++){ 151 for(y=0;y<_c_h;y++){
153 /*Filter: [4 -17 114 35 -9 1]/128, derived from a 6-tap Lanczos 152 /*Filter: [4 -17 114 35 -9 1]/128, derived from a 6-tap Lanczos
154 window.*/ 153 window.*/
155 for(x=0;x<OC_MINI(_c_w,2);x++){ 154 for(x=0;x<OC_MINI(_c_w,2);x++){
156 _dst[x]=(unsigned char)OC_CLAMPI(0,(4*_src[0]-17*_src[OC_MAXI(x-1,0)]+ 155 _dst[x]=(unsigned char)OC_CLAMPI(0,(4*_src[0]-17*_src[OC_MAXI(x-1,0)]+
157 114*_src[x]+35*_src[OC_MINI(x+1,_c_w-1)]-9*_src[OC_MINI(x+2,_c_w-1)]+ 156 114*_src[x]+35*_src[OC_MINI(x+1,_c_w-1)]-9*_src[OC_MINI(x+2,_c_w-1)]+
158 _src[OC_MINI(x+3,_c_w-1)]+64)>>7,255); 157 _src[OC_MINI(x+3,_c_w-1)]+64)>>7,255);
159 } 158 }
(...skipping 11 matching lines...) Expand all
171 } 170 }
172 } 171 }
173 172
174 /*Handles both 422 and 420mpeg2 to 422jpeg and 420jpeg, respectively.*/ 173 /*Handles both 422 and 420mpeg2 to 422jpeg and 420jpeg, respectively.*/
175 static void y4m_convert_42xmpeg2_42xjpeg(y4m_input *_y4m,unsigned char *_dst, 174 static void y4m_convert_42xmpeg2_42xjpeg(y4m_input *_y4m,unsigned char *_dst,
176 unsigned char *_aux){ 175 unsigned char *_aux){
177 int c_w; 176 int c_w;
178 int c_h; 177 int c_h;
179 int c_sz; 178 int c_sz;
180 int pli; 179 int pli;
181 int y;
182 int x;
183 /*Skip past the luma data.*/ 180 /*Skip past the luma data.*/
184 _dst+=_y4m->pic_w*_y4m->pic_h; 181 _dst+=_y4m->pic_w*_y4m->pic_h;
185 /*Compute the size of each chroma plane.*/ 182 /*Compute the size of each chroma plane.*/
186 c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h; 183 c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h;
187 c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v; 184 c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v;
188 c_sz=c_w*c_h; 185 c_sz=c_w*c_h;
189 for(pli=1;pli<3;pli++){ 186 for(pli=1;pli<3;pli++){
190 y4m_42xmpeg2_42xjpeg_helper(_dst,_aux,c_w,c_h); 187 y4m_42xmpeg2_42xjpeg_helper(_dst,_aux,c_w,c_h);
191 _dst+=c_sz; 188 _dst+=c_sz;
192 _aux+=c_sz; 189 _aux+=c_sz;
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 We use a resampling filter to decimate the chroma planes by two in the 386 We use a resampling filter to decimate the chroma planes by two in the
390 vertical direction.*/ 387 vertical direction.*/
391 static void y4m_convert_422jpeg_420jpeg(y4m_input *_y4m,unsigned char *_dst, 388 static void y4m_convert_422jpeg_420jpeg(y4m_input *_y4m,unsigned char *_dst,
392 unsigned char *_aux){ 389 unsigned char *_aux){
393 int c_w; 390 int c_w;
394 int c_h; 391 int c_h;
395 int c_sz; 392 int c_sz;
396 int dst_c_w; 393 int dst_c_w;
397 int dst_c_h; 394 int dst_c_h;
398 int dst_c_sz; 395 int dst_c_sz;
399 int tmp_sz;
400 int pic_sz;
401 int pli; 396 int pli;
402 /*Skip past the luma data.*/ 397 /*Skip past the luma data.*/
403 _dst+=_y4m->pic_w*_y4m->pic_h; 398 _dst+=_y4m->pic_w*_y4m->pic_h;
404 /*Compute the size of each chroma plane.*/ 399 /*Compute the size of each chroma plane.*/
405 c_w=(_y4m->pic_w+_y4m->src_c_dec_h-1)/_y4m->src_c_dec_h; 400 c_w=(_y4m->pic_w+_y4m->src_c_dec_h-1)/_y4m->src_c_dec_h;
406 c_h=_y4m->pic_h; 401 c_h=_y4m->pic_h;
407 dst_c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h; 402 dst_c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h;
408 dst_c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v; 403 dst_c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v;
409 c_sz=c_w*c_h; 404 c_sz=c_w*c_h;
410 dst_c_sz=dst_c_w*dst_c_h; 405 dst_c_sz=dst_c_w*dst_c_h;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 We use a resampling filter to shift the original site locations one quarter 449 We use a resampling filter to shift the original site locations one quarter
455 pixel (at the original chroma resolution) to the right. 450 pixel (at the original chroma resolution) to the right.
456 Then we use a second resampling filter to decimate the chroma planes by two 451 Then we use a second resampling filter to decimate the chroma planes by two
457 in the vertical direction.*/ 452 in the vertical direction.*/
458 static void y4m_convert_422_420jpeg(y4m_input *_y4m,unsigned char *_dst, 453 static void y4m_convert_422_420jpeg(y4m_input *_y4m,unsigned char *_dst,
459 unsigned char *_aux){ 454 unsigned char *_aux){
460 unsigned char *tmp; 455 unsigned char *tmp;
461 int c_w; 456 int c_w;
462 int c_h; 457 int c_h;
463 int c_sz; 458 int c_sz;
464 int dst_c_w;
465 int dst_c_h; 459 int dst_c_h;
466 int dst_c_sz; 460 int dst_c_sz;
467 int pli; 461 int pli;
468 int y;
469 int x;
470 /*Skip past the luma data.*/ 462 /*Skip past the luma data.*/
471 _dst+=_y4m->pic_w*_y4m->pic_h; 463 _dst+=_y4m->pic_w*_y4m->pic_h;
472 /*Compute the size of each chroma plane.*/ 464 /*Compute the size of each chroma plane.*/
473 c_w=(_y4m->pic_w+_y4m->src_c_dec_h-1)/_y4m->src_c_dec_h; 465 c_w=(_y4m->pic_w+_y4m->src_c_dec_h-1)/_y4m->src_c_dec_h;
474 c_h=_y4m->pic_h; 466 c_h=_y4m->pic_h;
475 dst_c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v; 467 dst_c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v;
476 c_sz=c_w*c_h; 468 c_sz=c_w*c_h;
477 dst_c_sz=c_w*dst_c_h; 469 dst_c_sz=c_w*dst_c_h;
478 tmp=_aux+2*c_sz; 470 tmp=_aux+2*c_sz;
479 for(pli=1;pli<3;pli++){ 471 for(pli=1;pli<3;pli++){
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 } 806 }
815 807
816 void y4m_input_close(y4m_input *_y4m){ 808 void y4m_input_close(y4m_input *_y4m){
817 free(_y4m->dst_buf); 809 free(_y4m->dst_buf);
818 free(_y4m->aux_buf); 810 free(_y4m->aux_buf);
819 } 811 }
820 812
821 int y4m_input_fetch_frame(y4m_input *_y4m,FILE *_fin,vpx_image_t *_img){ 813 int y4m_input_fetch_frame(y4m_input *_y4m,FILE *_fin,vpx_image_t *_img){
822 char frame[6]; 814 char frame[6];
823 int pic_sz; 815 int pic_sz;
824 int frame_c_w;
825 int frame_c_h;
826 int c_w; 816 int c_w;
827 int c_h; 817 int c_h;
828 int c_sz; 818 int c_sz;
829 int ret; 819 int ret;
830 /*Read and skip the frame header.*/ 820 /*Read and skip the frame header.*/
831 ret=fread(frame,1,6,_fin); 821 ret=fread(frame,1,6,_fin);
832 if(ret<6)return 0; 822 if(ret<6)return 0;
833 if(memcmp(frame,"FRAME",5)){ 823 if(memcmp(frame,"FRAME",5)){
834 fprintf(stderr,"Loss of framing in Y4M input data\n"); 824 fprintf(stderr,"Loss of framing in Y4M input data\n");
835 return -1; 825 return -1;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h; 862 c_w=(_y4m->pic_w+_y4m->dst_c_dec_h-1)/_y4m->dst_c_dec_h;
873 c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v; 863 c_h=(_y4m->pic_h+_y4m->dst_c_dec_v-1)/_y4m->dst_c_dec_v;
874 c_sz=c_w*c_h; 864 c_sz=c_w*c_h;
875 _img->stride[PLANE_Y]=_y4m->pic_w; 865 _img->stride[PLANE_Y]=_y4m->pic_w;
876 _img->stride[PLANE_U]=_img->stride[PLANE_V]=c_w; 866 _img->stride[PLANE_U]=_img->stride[PLANE_V]=c_w;
877 _img->planes[PLANE_Y]=_y4m->dst_buf; 867 _img->planes[PLANE_Y]=_y4m->dst_buf;
878 _img->planes[PLANE_U]=_y4m->dst_buf+pic_sz; 868 _img->planes[PLANE_U]=_y4m->dst_buf+pic_sz;
879 _img->planes[PLANE_V]=_y4m->dst_buf+pic_sz+c_sz; 869 _img->planes[PLANE_V]=_y4m->dst_buf+pic_sz+c_sz;
880 return 1; 870 return 1;
881 } 871 }
OLDNEW
« README.chromium ('K') | « source/libvpx/vpxenc.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698