| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. | 2 * Copyright 2011 The LibYuv 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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 src_stride_y = src_stride_u = src_stride_v = dst_stride_argb = 0; | 78 src_stride_y = src_stride_u = src_stride_v = dst_stride_argb = 0; |
| 79 } | 79 } |
| 80 #if defined(HAS_I444TOARGBROW_SSSE3) | 80 #if defined(HAS_I444TOARGBROW_SSSE3) |
| 81 if (TestCpuFlag(kCpuHasSSSE3)) { | 81 if (TestCpuFlag(kCpuHasSSSE3)) { |
| 82 I444ToARGBRow = I444ToARGBRow_Any_SSSE3; | 82 I444ToARGBRow = I444ToARGBRow_Any_SSSE3; |
| 83 if (IS_ALIGNED(width, 8)) { | 83 if (IS_ALIGNED(width, 8)) { |
| 84 I444ToARGBRow = I444ToARGBRow_SSSE3; | 84 I444ToARGBRow = I444ToARGBRow_SSSE3; |
| 85 } | 85 } |
| 86 } | 86 } |
| 87 #endif | 87 #endif |
| 88 #if defined(HAS_I444TOARGBROW_AVX2) |
| 89 if (TestCpuFlag(kCpuHasAVX2)) { |
| 90 I444ToARGBRow = I444ToARGBRow_Any_AVX2; |
| 91 if (IS_ALIGNED(width, 16)) { |
| 92 I444ToARGBRow = I444ToARGBRow_AVX2; |
| 93 } |
| 94 } |
| 95 #endif |
| 88 #if defined(HAS_I444TOARGBROW_NEON) | 96 #if defined(HAS_I444TOARGBROW_NEON) |
| 89 if (TestCpuFlag(kCpuHasNEON)) { | 97 if (TestCpuFlag(kCpuHasNEON)) { |
| 90 I444ToARGBRow = I444ToARGBRow_Any_NEON; | 98 I444ToARGBRow = I444ToARGBRow_Any_NEON; |
| 91 if (IS_ALIGNED(width, 8)) { | 99 if (IS_ALIGNED(width, 8)) { |
| 92 I444ToARGBRow = I444ToARGBRow_NEON; | 100 I444ToARGBRow = I444ToARGBRow_NEON; |
| 93 } | 101 } |
| 94 } | 102 } |
| 95 #endif | 103 #endif |
| 96 | 104 |
| 97 for (y = 0; y < height; ++y) { | 105 for (y = 0; y < height; ++y) { |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 src_stride_y = src_stride_u = src_stride_v = dst_stride_argb = 0; | 223 src_stride_y = src_stride_u = src_stride_v = dst_stride_argb = 0; |
| 216 } | 224 } |
| 217 #if defined(HAS_I411TOARGBROW_SSSE3) | 225 #if defined(HAS_I411TOARGBROW_SSSE3) |
| 218 if (TestCpuFlag(kCpuHasSSSE3)) { | 226 if (TestCpuFlag(kCpuHasSSSE3)) { |
| 219 I411ToARGBRow = I411ToARGBRow_Any_SSSE3; | 227 I411ToARGBRow = I411ToARGBRow_Any_SSSE3; |
| 220 if (IS_ALIGNED(width, 8)) { | 228 if (IS_ALIGNED(width, 8)) { |
| 221 I411ToARGBRow = I411ToARGBRow_SSSE3; | 229 I411ToARGBRow = I411ToARGBRow_SSSE3; |
| 222 } | 230 } |
| 223 } | 231 } |
| 224 #endif | 232 #endif |
| 233 #if defined(HAS_I411TOARGBROW_AVX2) |
| 234 if (TestCpuFlag(kCpuHasAVX2)) { |
| 235 I411ToARGBRow = I411ToARGBRow_Any_AVX2; |
| 236 if (IS_ALIGNED(width, 16)) { |
| 237 I411ToARGBRow = I411ToARGBRow_AVX2; |
| 238 } |
| 239 } |
| 240 #endif |
| 225 #if defined(HAS_I411TOARGBROW_NEON) | 241 #if defined(HAS_I411TOARGBROW_NEON) |
| 226 if (TestCpuFlag(kCpuHasNEON)) { | 242 if (TestCpuFlag(kCpuHasNEON)) { |
| 227 I411ToARGBRow = I411ToARGBRow_Any_NEON; | 243 I411ToARGBRow = I411ToARGBRow_Any_NEON; |
| 228 if (IS_ALIGNED(width, 8)) { | 244 if (IS_ALIGNED(width, 8)) { |
| 229 I411ToARGBRow = I411ToARGBRow_NEON; | 245 I411ToARGBRow = I411ToARGBRow_NEON; |
| 230 } | 246 } |
| 231 } | 247 } |
| 232 #endif | 248 #endif |
| 233 | 249 |
| 234 for (y = 0; y < height; ++y) { | 250 for (y = 0; y < height; ++y) { |
| 235 I411ToARGBRow(src_y, src_u, src_v, dst_argb, width); | 251 I411ToARGBRow(src_y, src_u, src_v, dst_argb, width); |
| 236 dst_argb += dst_stride_argb; | 252 dst_argb += dst_stride_argb; |
| 237 src_y += src_stride_y; | 253 src_y += src_stride_y; |
| 238 src_u += src_stride_u; | 254 src_u += src_stride_u; |
| 239 src_v += src_stride_v; | 255 src_v += src_stride_v; |
| 240 } | 256 } |
| 241 return 0; | 257 return 0; |
| 242 } | 258 } |
| 243 | 259 |
| 244 // Convert I400 to ARGB. | 260 // Convert I400 to ARGB. |
| 245 LIBYUV_API | 261 LIBYUV_API |
| 246 int I400ToARGB_Reference(const uint8* src_y, int src_stride_y, | 262 int I400ToARGB(const uint8* src_y, int src_stride_y, |
| 247 uint8* dst_argb, int dst_stride_argb, | 263 uint8* dst_argb, int dst_stride_argb, |
| 248 int width, int height) { | 264 int width, int height) { |
| 249 int y; | 265 int y; |
| 250 void (*YToARGBRow)(const uint8* y_buf, | 266 void (*I400ToARGBRow)(const uint8* y_buf, |
| 251 uint8* rgb_buf, | 267 uint8* rgb_buf, |
| 252 int width) = YToARGBRow_C; | 268 int width) = I400ToARGBRow_C; |
| 253 if (!src_y || !dst_argb || | 269 if (!src_y || !dst_argb || |
| 254 width <= 0 || height == 0) { | 270 width <= 0 || height == 0) { |
| 255 return -1; | 271 return -1; |
| 256 } | 272 } |
| 257 // Negative height means invert the image. | 273 // Negative height means invert the image. |
| 258 if (height < 0) { | 274 if (height < 0) { |
| 259 height = -height; | 275 height = -height; |
| 260 dst_argb = dst_argb + (height - 1) * dst_stride_argb; | 276 dst_argb = dst_argb + (height - 1) * dst_stride_argb; |
| 261 dst_stride_argb = -dst_stride_argb; | 277 dst_stride_argb = -dst_stride_argb; |
| 262 } | 278 } |
| 263 // Coalesce rows. | 279 // Coalesce rows. |
| 264 if (src_stride_y == width && | 280 if (src_stride_y == width && |
| 265 dst_stride_argb == width * 4) { | 281 dst_stride_argb == width * 4) { |
| 266 width *= height; | 282 width *= height; |
| 267 height = 1; | 283 height = 1; |
| 268 src_stride_y = dst_stride_argb = 0; | 284 src_stride_y = dst_stride_argb = 0; |
| 269 } | 285 } |
| 270 #if defined(HAS_YTOARGBROW_SSE2) | 286 #if defined(HAS_I400TOARGBROW_SSE2) |
| 271 if (TestCpuFlag(kCpuHasSSE2)) { | 287 if (TestCpuFlag(kCpuHasSSE2)) { |
| 272 YToARGBRow = YToARGBRow_Any_SSE2; | 288 I400ToARGBRow = I400ToARGBRow_Any_SSE2; |
| 273 if (IS_ALIGNED(width, 8)) { | 289 if (IS_ALIGNED(width, 8)) { |
| 274 YToARGBRow = YToARGBRow_SSE2; | 290 I400ToARGBRow = I400ToARGBRow_SSE2; |
| 275 } | 291 } |
| 276 } | 292 } |
| 277 #endif | 293 #endif |
| 278 #if defined(HAS_YTOARGBROW_AVX2) | 294 #if defined(HAS_I400TOARGBROW_AVX2) |
| 279 if (TestCpuFlag(kCpuHasAVX2)) { | 295 if (TestCpuFlag(kCpuHasAVX2)) { |
| 280 YToARGBRow = YToARGBRow_Any_AVX2; | 296 I400ToARGBRow = I400ToARGBRow_Any_AVX2; |
| 281 if (IS_ALIGNED(width, 16)) { | 297 if (IS_ALIGNED(width, 16)) { |
| 282 YToARGBRow = YToARGBRow_AVX2; | 298 I400ToARGBRow = I400ToARGBRow_AVX2; |
| 283 } | 299 } |
| 284 } | 300 } |
| 285 #endif | 301 #endif |
| 286 #if defined(HAS_YTOARGBROW_NEON) | 302 #if defined(HAS_I400TOARGBROW_NEON) |
| 287 if (TestCpuFlag(kCpuHasNEON)) { | 303 if (TestCpuFlag(kCpuHasNEON)) { |
| 288 YToARGBRow = YToARGBRow_Any_NEON; | 304 I400ToARGBRow = I400ToARGBRow_Any_NEON; |
| 289 if (IS_ALIGNED(width, 8)) { | 305 if (IS_ALIGNED(width, 8)) { |
| 290 YToARGBRow = YToARGBRow_NEON; | 306 I400ToARGBRow = I400ToARGBRow_NEON; |
| 291 } | 307 } |
| 292 } | 308 } |
| 293 #endif | 309 #endif |
| 294 | 310 |
| 295 for (y = 0; y < height; ++y) { | 311 for (y = 0; y < height; ++y) { |
| 296 YToARGBRow(src_y, dst_argb, width); | 312 I400ToARGBRow(src_y, dst_argb, width); |
| 297 dst_argb += dst_stride_argb; | 313 dst_argb += dst_stride_argb; |
| 298 src_y += src_stride_y; | 314 src_y += src_stride_y; |
| 299 } | 315 } |
| 300 return 0; | 316 return 0; |
| 301 } | 317 } |
| 302 | 318 |
| 303 // Convert I400 to ARGB. | 319 // Convert J400 to ARGB. |
| 304 LIBYUV_API | 320 LIBYUV_API |
| 305 int I400ToARGB(const uint8* src_y, int src_stride_y, | 321 int J400ToARGB(const uint8* src_y, int src_stride_y, |
| 306 uint8* dst_argb, int dst_stride_argb, | 322 uint8* dst_argb, int dst_stride_argb, |
| 307 int width, int height) { | 323 int width, int height) { |
| 308 int y; | 324 int y; |
| 309 void (*I400ToARGBRow)(const uint8* src_y, uint8* dst_argb, int pix) = | 325 void (*J400ToARGBRow)(const uint8* src_y, uint8* dst_argb, int pix) = |
| 310 I400ToARGBRow_C; | 326 J400ToARGBRow_C; |
| 311 if (!src_y || !dst_argb || | 327 if (!src_y || !dst_argb || |
| 312 width <= 0 || height == 0) { | 328 width <= 0 || height == 0) { |
| 313 return -1; | 329 return -1; |
| 314 } | 330 } |
| 315 // Negative height means invert the image. | 331 // Negative height means invert the image. |
| 316 if (height < 0) { | 332 if (height < 0) { |
| 317 height = -height; | 333 height = -height; |
| 318 src_y = src_y + (height - 1) * src_stride_y; | 334 src_y = src_y + (height - 1) * src_stride_y; |
| 319 src_stride_y = -src_stride_y; | 335 src_stride_y = -src_stride_y; |
| 320 } | 336 } |
| 321 // Coalesce rows. | 337 // Coalesce rows. |
| 322 if (src_stride_y == width && | 338 if (src_stride_y == width && |
| 323 dst_stride_argb == width * 4) { | 339 dst_stride_argb == width * 4) { |
| 324 width *= height; | 340 width *= height; |
| 325 height = 1; | 341 height = 1; |
| 326 src_stride_y = dst_stride_argb = 0; | 342 src_stride_y = dst_stride_argb = 0; |
| 327 } | 343 } |
| 328 #if defined(HAS_I400TOARGBROW_SSE2) | 344 #if defined(HAS_J400TOARGBROW_SSE2) |
| 329 if (TestCpuFlag(kCpuHasSSE2)) { | 345 if (TestCpuFlag(kCpuHasSSE2)) { |
| 330 I400ToARGBRow = I400ToARGBRow_Any_SSE2; | 346 J400ToARGBRow = J400ToARGBRow_Any_SSE2; |
| 331 if (IS_ALIGNED(width, 8)) { | 347 if (IS_ALIGNED(width, 8)) { |
| 332 I400ToARGBRow = I400ToARGBRow_SSE2; | 348 J400ToARGBRow = J400ToARGBRow_SSE2; |
| 333 } | 349 } |
| 334 } | 350 } |
| 335 #endif | 351 #endif |
| 336 #if defined(HAS_I400TOARGBROW_NEON) | 352 #if defined(HAS_J400TOARGBROW_AVX2) |
| 353 if (TestCpuFlag(kCpuHasAVX2)) { |
| 354 J400ToARGBRow = J400ToARGBRow_Any_AVX2; |
| 355 if (IS_ALIGNED(width, 16)) { |
| 356 J400ToARGBRow = J400ToARGBRow_AVX2; |
| 357 } |
| 358 } |
| 359 #endif |
| 360 #if defined(HAS_J400TOARGBROW_NEON) |
| 337 if (TestCpuFlag(kCpuHasNEON)) { | 361 if (TestCpuFlag(kCpuHasNEON)) { |
| 338 I400ToARGBRow = I400ToARGBRow_Any_NEON; | 362 J400ToARGBRow = J400ToARGBRow_Any_NEON; |
| 339 if (IS_ALIGNED(width, 8)) { | 363 if (IS_ALIGNED(width, 8)) { |
| 340 I400ToARGBRow = I400ToARGBRow_NEON; | 364 J400ToARGBRow = J400ToARGBRow_NEON; |
| 341 } | 365 } |
| 342 } | 366 } |
| 343 #endif | 367 #endif |
| 344 for (y = 0; y < height; ++y) { | 368 for (y = 0; y < height; ++y) { |
| 345 I400ToARGBRow(src_y, dst_argb, width); | 369 J400ToARGBRow(src_y, dst_argb, width); |
| 346 src_y += src_stride_y; | 370 src_y += src_stride_y; |
| 347 dst_argb += dst_stride_argb; | 371 dst_argb += dst_stride_argb; |
| 348 } | 372 } |
| 349 return 0; | 373 return 0; |
| 350 } | 374 } |
| 351 | 375 |
| 352 // Shuffle table for converting BGRA to ARGB. | 376 // Shuffle table for converting BGRA to ARGB. |
| 353 static uvec8 kShuffleMaskBGRAToARGB = { | 377 static uvec8 kShuffleMaskBGRAToARGB = { |
| 354 3u, 2u, 1u, 0u, 7u, 6u, 5u, 4u, 11u, 10u, 9u, 8u, 15u, 14u, 13u, 12u | 378 3u, 2u, 1u, 0u, 7u, 6u, 5u, 4u, 11u, 10u, 9u, 8u, 15u, 14u, 13u, 12u |
| 355 }; | 379 }; |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 src_stride_rgb565 = dst_stride_argb = 0; | 569 src_stride_rgb565 = dst_stride_argb = 0; |
| 546 } | 570 } |
| 547 #if defined(HAS_RGB565TOARGBROW_SSE2) | 571 #if defined(HAS_RGB565TOARGBROW_SSE2) |
| 548 if (TestCpuFlag(kCpuHasSSE2)) { | 572 if (TestCpuFlag(kCpuHasSSE2)) { |
| 549 RGB565ToARGBRow = RGB565ToARGBRow_Any_SSE2; | 573 RGB565ToARGBRow = RGB565ToARGBRow_Any_SSE2; |
| 550 if (IS_ALIGNED(width, 8)) { | 574 if (IS_ALIGNED(width, 8)) { |
| 551 RGB565ToARGBRow = RGB565ToARGBRow_SSE2; | 575 RGB565ToARGBRow = RGB565ToARGBRow_SSE2; |
| 552 } | 576 } |
| 553 } | 577 } |
| 554 #endif | 578 #endif |
| 579 #if defined(HAS_RGB565TOARGBROW_AVX2) |
| 580 if (TestCpuFlag(kCpuHasAVX2)) { |
| 581 RGB565ToARGBRow = RGB565ToARGBRow_Any_AVX2; |
| 582 if (IS_ALIGNED(width, 16)) { |
| 583 RGB565ToARGBRow = RGB565ToARGBRow_AVX2; |
| 584 } |
| 585 } |
| 586 #endif |
| 555 #if defined(HAS_RGB565TOARGBROW_NEON) | 587 #if defined(HAS_RGB565TOARGBROW_NEON) |
| 556 if (TestCpuFlag(kCpuHasNEON)) { | 588 if (TestCpuFlag(kCpuHasNEON)) { |
| 557 RGB565ToARGBRow = RGB565ToARGBRow_Any_NEON; | 589 RGB565ToARGBRow = RGB565ToARGBRow_Any_NEON; |
| 558 if (IS_ALIGNED(width, 8)) { | 590 if (IS_ALIGNED(width, 8)) { |
| 559 RGB565ToARGBRow = RGB565ToARGBRow_NEON; | 591 RGB565ToARGBRow = RGB565ToARGBRow_NEON; |
| 560 } | 592 } |
| 561 } | 593 } |
| 562 #endif | 594 #endif |
| 563 | 595 |
| 564 for (y = 0; y < height; ++y) { | 596 for (y = 0; y < height; ++y) { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 595 src_stride_argb1555 = dst_stride_argb = 0; | 627 src_stride_argb1555 = dst_stride_argb = 0; |
| 596 } | 628 } |
| 597 #if defined(HAS_ARGB1555TOARGBROW_SSE2) | 629 #if defined(HAS_ARGB1555TOARGBROW_SSE2) |
| 598 if (TestCpuFlag(kCpuHasSSE2)) { | 630 if (TestCpuFlag(kCpuHasSSE2)) { |
| 599 ARGB1555ToARGBRow = ARGB1555ToARGBRow_Any_SSE2; | 631 ARGB1555ToARGBRow = ARGB1555ToARGBRow_Any_SSE2; |
| 600 if (IS_ALIGNED(width, 8)) { | 632 if (IS_ALIGNED(width, 8)) { |
| 601 ARGB1555ToARGBRow = ARGB1555ToARGBRow_SSE2; | 633 ARGB1555ToARGBRow = ARGB1555ToARGBRow_SSE2; |
| 602 } | 634 } |
| 603 } | 635 } |
| 604 #endif | 636 #endif |
| 637 #if defined(HAS_ARGB1555TOARGBROW_AVX2) |
| 638 if (TestCpuFlag(kCpuHasAVX2)) { |
| 639 ARGB1555ToARGBRow = ARGB1555ToARGBRow_Any_AVX2; |
| 640 if (IS_ALIGNED(width, 16)) { |
| 641 ARGB1555ToARGBRow = ARGB1555ToARGBRow_AVX2; |
| 642 } |
| 643 } |
| 644 #endif |
| 605 #if defined(HAS_ARGB1555TOARGBROW_NEON) | 645 #if defined(HAS_ARGB1555TOARGBROW_NEON) |
| 606 if (TestCpuFlag(kCpuHasNEON)) { | 646 if (TestCpuFlag(kCpuHasNEON)) { |
| 607 ARGB1555ToARGBRow = ARGB1555ToARGBRow_Any_NEON; | 647 ARGB1555ToARGBRow = ARGB1555ToARGBRow_Any_NEON; |
| 608 if (IS_ALIGNED(width, 8)) { | 648 if (IS_ALIGNED(width, 8)) { |
| 609 ARGB1555ToARGBRow = ARGB1555ToARGBRow_NEON; | 649 ARGB1555ToARGBRow = ARGB1555ToARGBRow_NEON; |
| 610 } | 650 } |
| 611 } | 651 } |
| 612 #endif | 652 #endif |
| 613 | 653 |
| 614 for (y = 0; y < height; ++y) { | 654 for (y = 0; y < height; ++y) { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 645 src_stride_argb4444 = dst_stride_argb = 0; | 685 src_stride_argb4444 = dst_stride_argb = 0; |
| 646 } | 686 } |
| 647 #if defined(HAS_ARGB4444TOARGBROW_SSE2) | 687 #if defined(HAS_ARGB4444TOARGBROW_SSE2) |
| 648 if (TestCpuFlag(kCpuHasSSE2)) { | 688 if (TestCpuFlag(kCpuHasSSE2)) { |
| 649 ARGB4444ToARGBRow = ARGB4444ToARGBRow_Any_SSE2; | 689 ARGB4444ToARGBRow = ARGB4444ToARGBRow_Any_SSE2; |
| 650 if (IS_ALIGNED(width, 8)) { | 690 if (IS_ALIGNED(width, 8)) { |
| 651 ARGB4444ToARGBRow = ARGB4444ToARGBRow_SSE2; | 691 ARGB4444ToARGBRow = ARGB4444ToARGBRow_SSE2; |
| 652 } | 692 } |
| 653 } | 693 } |
| 654 #endif | 694 #endif |
| 695 #if defined(HAS_ARGB4444TOARGBROW_AVX2) |
| 696 if (TestCpuFlag(kCpuHasAVX2)) { |
| 697 ARGB4444ToARGBRow = ARGB4444ToARGBRow_Any_AVX2; |
| 698 if (IS_ALIGNED(width, 16)) { |
| 699 ARGB4444ToARGBRow = ARGB4444ToARGBRow_AVX2; |
| 700 } |
| 701 } |
| 702 #endif |
| 655 #if defined(HAS_ARGB4444TOARGBROW_NEON) | 703 #if defined(HAS_ARGB4444TOARGBROW_NEON) |
| 656 if (TestCpuFlag(kCpuHasNEON)) { | 704 if (TestCpuFlag(kCpuHasNEON)) { |
| 657 ARGB4444ToARGBRow = ARGB4444ToARGBRow_Any_NEON; | 705 ARGB4444ToARGBRow = ARGB4444ToARGBRow_Any_NEON; |
| 658 if (IS_ALIGNED(width, 8)) { | 706 if (IS_ALIGNED(width, 8)) { |
| 659 ARGB4444ToARGBRow = ARGB4444ToARGBRow_NEON; | 707 ARGB4444ToARGBRow = ARGB4444ToARGBRow_NEON; |
| 660 } | 708 } |
| 661 } | 709 } |
| 662 #endif | 710 #endif |
| 663 | 711 |
| 664 for (y = 0; y < height; ++y) { | 712 for (y = 0; y < height; ++y) { |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1098 src_u += src_stride_u; | 1146 src_u += src_stride_u; |
| 1099 src_v += src_stride_v; | 1147 src_v += src_stride_v; |
| 1100 } | 1148 } |
| 1101 return 0; | 1149 return 0; |
| 1102 } | 1150 } |
| 1103 | 1151 |
| 1104 #ifdef __cplusplus | 1152 #ifdef __cplusplus |
| 1105 } // extern "C" | 1153 } // extern "C" |
| 1106 } // namespace libyuv | 1154 } // namespace libyuv |
| 1107 #endif | 1155 #endif |
| OLD | NEW |