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

Side by Side Diff: source/libvpx/tools_common.c

Issue 1302353004: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « source/libvpx/tools_common.h ('k') | source/libvpx/vp8/common/common.h » ('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
11 #include <math.h> 11 #include <math.h>
12 #include <stdarg.h> 12 #include <stdarg.h>
13 #include <stdio.h> 13 #include <stdio.h>
14 #include <stdlib.h> 14 #include <stdlib.h>
15 #include <string.h> 15 #include <string.h>
16 16
17 #include "./tools_common.h" 17 #include "./tools_common.h"
18 18
19 #if CONFIG_VP8_ENCODER || CONFIG_VP9_ENCODER 19 #if CONFIG_VP8_ENCODER || CONFIG_VP9_ENCODER || CONFIG_VP10_ENCODER
20 #include "vpx/vp8cx.h" 20 #include "vpx/vp8cx.h"
21 #endif 21 #endif
22 22
23 #if CONFIG_VP8_DECODER || CONFIG_VP9_DECODER 23 #if CONFIG_VP8_DECODER || CONFIG_VP9_DECODER || CONFIG_VP10_DECODER
24 #include "vpx/vp8dx.h" 24 #include "vpx/vp8dx.h"
25 #endif 25 #endif
26 26
27 #if defined(_WIN32) || defined(__OS2__) 27 #if defined(_WIN32) || defined(__OS2__)
28 #include <io.h> 28 #include <io.h>
29 #include <fcntl.h> 29 #include <fcntl.h>
30 30
31 #ifdef __OS2__ 31 #ifdef __OS2__
32 #define _setmode setmode 32 #define _setmode setmode
33 #define _fileno fileno 33 #define _fileno fileno
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 shortread |= (fread(ptr + buf_position, 1, needed, f) < needed); 123 shortread |= (fread(ptr + buf_position, 1, needed, f) < needed);
124 } 124 }
125 125
126 ptr += yuv_frame->stride[plane]; 126 ptr += yuv_frame->stride[plane];
127 } 127 }
128 } 128 }
129 129
130 return shortread; 130 return shortread;
131 } 131 }
132 132
133 #if CONFIG_ENCODERS
134
133 static const VpxInterface vpx_encoders[] = { 135 static const VpxInterface vpx_encoders[] = {
136 #if CONFIG_VP10_ENCODER
137 {"vp10", VP10_FOURCC, &vpx_codec_vp10_cx},
138 #endif
139
134 #if CONFIG_VP8_ENCODER 140 #if CONFIG_VP8_ENCODER
135 {"vp8", VP8_FOURCC, &vpx_codec_vp8_cx}, 141 {"vp8", VP8_FOURCC, &vpx_codec_vp8_cx},
136 #endif 142 #endif
137 143
138 #if CONFIG_VP9_ENCODER 144 #if CONFIG_VP9_ENCODER
139 {"vp9", VP9_FOURCC, &vpx_codec_vp9_cx}, 145 {"vp9", VP9_FOURCC, &vpx_codec_vp9_cx},
140 #endif 146 #endif
141 }; 147 };
142 148
143 int get_vpx_encoder_count(void) { 149 int get_vpx_encoder_count(void) {
144 return sizeof(vpx_encoders) / sizeof(vpx_encoders[0]); 150 return sizeof(vpx_encoders) / sizeof(vpx_encoders[0]);
145 } 151 }
146 152
147 const VpxInterface *get_vpx_encoder_by_index(int i) { 153 const VpxInterface *get_vpx_encoder_by_index(int i) {
148 return &vpx_encoders[i]; 154 return &vpx_encoders[i];
149 } 155 }
150 156
151 const VpxInterface *get_vpx_encoder_by_name(const char *name) { 157 const VpxInterface *get_vpx_encoder_by_name(const char *name) {
152 int i; 158 int i;
153 159
154 for (i = 0; i < get_vpx_encoder_count(); ++i) { 160 for (i = 0; i < get_vpx_encoder_count(); ++i) {
155 const VpxInterface *encoder = get_vpx_encoder_by_index(i); 161 const VpxInterface *encoder = get_vpx_encoder_by_index(i);
156 if (strcmp(encoder->name, name) == 0) 162 if (strcmp(encoder->name, name) == 0)
157 return encoder; 163 return encoder;
158 } 164 }
159 165
160 return NULL; 166 return NULL;
161 } 167 }
162 168
169 #endif // CONFIG_ENCODERS
170
171 #if CONFIG_DECODERS
172
163 static const VpxInterface vpx_decoders[] = { 173 static const VpxInterface vpx_decoders[] = {
164 #if CONFIG_VP8_DECODER 174 #if CONFIG_VP8_DECODER
165 {"vp8", VP8_FOURCC, &vpx_codec_vp8_dx}, 175 {"vp8", VP8_FOURCC, &vpx_codec_vp8_dx},
166 #endif 176 #endif
167 177
168 #if CONFIG_VP9_DECODER 178 #if CONFIG_VP9_DECODER
169 {"vp9", VP9_FOURCC, &vpx_codec_vp9_dx}, 179 {"vp9", VP9_FOURCC, &vpx_codec_vp9_dx},
170 #endif 180 #endif
181
182 #if CONFIG_VP10_DECODER
183 {"vp10", VP10_FOURCC, &vpx_codec_vp10_dx},
184 #endif
171 }; 185 };
172 186
173 int get_vpx_decoder_count(void) { 187 int get_vpx_decoder_count(void) {
174 return sizeof(vpx_decoders) / sizeof(vpx_decoders[0]); 188 return sizeof(vpx_decoders) / sizeof(vpx_decoders[0]);
175 } 189 }
176 190
177 const VpxInterface *get_vpx_decoder_by_index(int i) { 191 const VpxInterface *get_vpx_decoder_by_index(int i) {
178 return &vpx_decoders[i]; 192 return &vpx_decoders[i];
179 } 193 }
180 194
(...skipping 14 matching lines...) Expand all
195 209
196 for (i = 0; i < get_vpx_decoder_count(); ++i) { 210 for (i = 0; i < get_vpx_decoder_count(); ++i) {
197 const VpxInterface *const decoder = get_vpx_decoder_by_index(i); 211 const VpxInterface *const decoder = get_vpx_decoder_by_index(i);
198 if (decoder->fourcc == fourcc) 212 if (decoder->fourcc == fourcc)
199 return decoder; 213 return decoder;
200 } 214 }
201 215
202 return NULL; 216 return NULL;
203 } 217 }
204 218
219 #endif // CONFIG_DECODERS
220
205 // TODO(dkovalev): move this function to vpx_image.{c, h}, so it will be part 221 // TODO(dkovalev): move this function to vpx_image.{c, h}, so it will be part
206 // of vpx_image_t support 222 // of vpx_image_t support
207 int vpx_img_plane_width(const vpx_image_t *img, int plane) { 223 int vpx_img_plane_width(const vpx_image_t *img, int plane) {
208 if (plane > 0 && img->x_chroma_shift > 0) 224 if (plane > 0 && img->x_chroma_shift > 0)
209 return (img->d_w + 1) >> img->x_chroma_shift; 225 return (img->d_w + 1) >> img->x_chroma_shift;
210 else 226 else
211 return img->d_w; 227 return img->d_w;
212 } 228 }
213 229
214 int vpx_img_plane_height(const vpx_image_t *img, int plane) { 230 int vpx_img_plane_height(const vpx_image_t *img, int plane) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 279
264 if (sse > 0.0) { 280 if (sse > 0.0) {
265 const double psnr = 10.0 * log10(samples * peak * peak / sse); 281 const double psnr = 10.0 * log10(samples * peak * peak / sse);
266 return psnr > kMaxPSNR ? kMaxPSNR : psnr; 282 return psnr > kMaxPSNR ? kMaxPSNR : psnr;
267 } else { 283 } else {
268 return kMaxPSNR; 284 return kMaxPSNR;
269 } 285 }
270 } 286 }
271 287
272 // TODO(debargha): Consolidate the functions below into a separate file. 288 // TODO(debargha): Consolidate the functions below into a separate file.
273 #if CONFIG_VP9 && CONFIG_VP9_HIGHBITDEPTH 289 #if CONFIG_VP9_HIGHBITDEPTH
274 static void highbd_img_upshift(vpx_image_t *dst, vpx_image_t *src, 290 static void highbd_img_upshift(vpx_image_t *dst, vpx_image_t *src,
275 int input_shift) { 291 int input_shift) {
276 // Note the offset is 1 less than half. 292 // Note the offset is 1 less than half.
277 const int offset = input_shift > 0 ? (1 << (input_shift - 1)) - 1 : 0; 293 const int offset = input_shift > 0 ? (1 << (input_shift - 1)) - 1 : 0;
278 int plane; 294 int plane;
279 if (dst->d_w != src->d_w || dst->d_h != src->d_h || 295 if (dst->d_w != src->d_w || dst->d_h != src->d_h ||
280 dst->x_chroma_shift != src->x_chroma_shift || 296 dst->x_chroma_shift != src->x_chroma_shift ||
281 dst->y_chroma_shift != src->y_chroma_shift || 297 dst->y_chroma_shift != src->y_chroma_shift ||
282 dst->fmt != src->fmt || input_shift < 0) { 298 dst->fmt != src->fmt || input_shift < 0) {
283 fatal("Unsupported image conversion"); 299 fatal("Unsupported image conversion");
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 } 492 }
477 493
478 void vpx_img_downshift(vpx_image_t *dst, vpx_image_t *src, 494 void vpx_img_downshift(vpx_image_t *dst, vpx_image_t *src,
479 int down_shift) { 495 int down_shift) {
480 if (dst->fmt & VPX_IMG_FMT_HIGHBITDEPTH) { 496 if (dst->fmt & VPX_IMG_FMT_HIGHBITDEPTH) {
481 highbd_img_downshift(dst, src, down_shift); 497 highbd_img_downshift(dst, src, down_shift);
482 } else { 498 } else {
483 lowbd_img_downshift(dst, src, down_shift); 499 lowbd_img_downshift(dst, src, down_shift);
484 } 500 }
485 } 501 }
486 #endif // CONFIG_VP9 && CONFIG_VP9_HIGHBITDEPTH 502 #endif // CONFIG_VP9_HIGHBITDEPTH
OLDNEW
« no previous file with comments | « source/libvpx/tools_common.h ('k') | source/libvpx/vp8/common/common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698