| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/base/video_frame.h" | 5 #include "media/base/video_frame.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 case VideoFrame::I420: { | 294 case VideoFrame::I420: { |
| 295 switch (plane) { | 295 switch (plane) { |
| 296 case VideoFrame::kYPlane: | 296 case VideoFrame::kYPlane: |
| 297 return area; | 297 return area; |
| 298 case VideoFrame::kUPlane: | 298 case VideoFrame::kUPlane: |
| 299 case VideoFrame::kVPlane: | 299 case VideoFrame::kVPlane: |
| 300 return area / 4; | 300 return area / 4; |
| 301 default: | 301 default: |
| 302 break; | 302 break; |
| 303 } | 303 } |
| 304 break; |
| 304 } | 305 } |
| 305 case VideoFrame::YV12A: { | 306 case VideoFrame::YV12A: { |
| 306 switch (plane) { | 307 switch (plane) { |
| 307 case VideoFrame::kYPlane: | 308 case VideoFrame::kYPlane: |
| 308 case VideoFrame::kAPlane: | 309 case VideoFrame::kAPlane: |
| 309 return area; | 310 return area; |
| 310 case VideoFrame::kUPlane: | 311 case VideoFrame::kUPlane: |
| 311 case VideoFrame::kVPlane: | 312 case VideoFrame::kVPlane: |
| 312 return area / 4; | 313 return area / 4; |
| 313 default: | 314 default: |
| 314 break; | 315 break; |
| 315 } | 316 } |
| 317 break; |
| 316 } | 318 } |
| 317 case VideoFrame::YV16: { | 319 case VideoFrame::YV16: { |
| 318 switch (plane) { | 320 switch (plane) { |
| 319 case VideoFrame::kYPlane: | 321 case VideoFrame::kYPlane: |
| 320 return area; | 322 return area; |
| 321 case VideoFrame::kUPlane: | 323 case VideoFrame::kUPlane: |
| 322 case VideoFrame::kVPlane: | 324 case VideoFrame::kVPlane: |
| 323 return area / 2; | 325 return area / 2; |
| 324 default: | 326 default: |
| 325 break; | 327 break; |
| 326 } | 328 } |
| 329 break; |
| 327 } | 330 } |
| 328 case VideoFrame::UNKNOWN: | 331 case VideoFrame::UNKNOWN: |
| 329 case VideoFrame::NATIVE_TEXTURE: | 332 case VideoFrame::NATIVE_TEXTURE: |
| 330 case VideoFrame::HISTOGRAM_MAX: | 333 case VideoFrame::HISTOGRAM_MAX: |
| 331 #if defined(VIDEO_HOLE) | 334 #if defined(VIDEO_HOLE) |
| 332 case VideoFrame::HOLE: | 335 case VideoFrame::HOLE: |
| 333 #endif // defined(VIDEO_HOLE) | 336 #endif // defined(VIDEO_HOLE) |
| 334 break; | 337 break; |
| 335 } | 338 } |
| 336 NOTREACHED() << "Unsupported video frame format/plane: " | 339 NOTREACHED() << "Unsupported video frame format/plane: " |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 } | 434 } |
| 432 | 435 |
| 433 int VideoFrame::row_bytes(size_t plane) const { | 436 int VideoFrame::row_bytes(size_t plane) const { |
| 434 DCHECK(IsValidPlane(plane)); | 437 DCHECK(IsValidPlane(plane)); |
| 435 int width = coded_size_.width(); | 438 int width = coded_size_.width(); |
| 436 switch (format_) { | 439 switch (format_) { |
| 437 // Planar, 8bpp. | 440 // Planar, 8bpp. |
| 438 case YV12A: | 441 case YV12A: |
| 439 if (plane == kAPlane) | 442 if (plane == kAPlane) |
| 440 return width; | 443 return width; |
| 441 // Fallthrough. | 444 FALLTHROUGH_INTENDED; |
| 442 case YV12: | 445 case YV12: |
| 443 case YV16: | 446 case YV16: |
| 444 case I420: | 447 case I420: |
| 445 case YV12J: | 448 case YV12J: |
| 446 if (plane == kYPlane) | 449 if (plane == kYPlane) |
| 447 return width; | 450 return width; |
| 448 return RoundUp(width, 2) / 2; | 451 return RoundUp(width, 2) / 2; |
| 449 | 452 |
| 450 default: | 453 default: |
| 451 break; | 454 break; |
| 452 } | 455 } |
| 453 | 456 |
| 454 // Intentionally leave out non-production formats. | 457 // Intentionally leave out non-production formats. |
| 455 NOTREACHED() << "Unsupported video frame format: " << format_; | 458 NOTREACHED() << "Unsupported video frame format: " << format_; |
| 456 return 0; | 459 return 0; |
| 457 } | 460 } |
| 458 | 461 |
| 459 int VideoFrame::rows(size_t plane) const { | 462 int VideoFrame::rows(size_t plane) const { |
| 460 DCHECK(IsValidPlane(plane)); | 463 DCHECK(IsValidPlane(plane)); |
| 461 int height = coded_size_.height(); | 464 int height = coded_size_.height(); |
| 462 switch (format_) { | 465 switch (format_) { |
| 463 case YV16: | 466 case YV16: |
| 464 return height; | 467 return height; |
| 465 | 468 |
| 466 case YV12A: | 469 case YV12A: |
| 467 if (plane == kAPlane) | 470 if (plane == kAPlane) |
| 468 return height; | 471 return height; |
| 469 // Fallthrough. | 472 FALLTHROUGH_INTENDED; |
| 470 case YV12: | 473 case YV12: |
| 471 case I420: | 474 case I420: |
| 472 if (plane == kYPlane) | 475 if (plane == kYPlane) |
| 473 return height; | 476 return height; |
| 474 return RoundUp(height, 2) / 2; | 477 return RoundUp(height, 2) / 2; |
| 475 | 478 |
| 476 default: | 479 default: |
| 477 break; | 480 break; |
| 478 } | 481 } |
| 479 | 482 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 : mailbox_(mailbox), | 523 : mailbox_(mailbox), |
| 521 sync_point_(sync_point), | 524 sync_point_(sync_point), |
| 522 release_callback_(release_callback) {} | 525 release_callback_(release_callback) {} |
| 523 | 526 |
| 524 VideoFrame::MailboxHolder::~MailboxHolder() { | 527 VideoFrame::MailboxHolder::~MailboxHolder() { |
| 525 if (!release_callback_.is_null()) | 528 if (!release_callback_.is_null()) |
| 526 release_callback_.Run(sync_point_); | 529 release_callback_.Run(sync_point_); |
| 527 } | 530 } |
| 528 | 531 |
| 529 } // namespace media | 532 } // namespace media |
| OLD | NEW |