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

Unified Diff: content/renderer/pepper/pepper_video_capture_host.cc

Issue 955253002: Add metadata to media::VideoFrame and plumb it through IPC/MediaStream. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tommi's nits addressed Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/pepper/pepper_video_capture_host.h ('k') | media/base/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/pepper/pepper_video_capture_host.cc
diff --git a/content/renderer/pepper/pepper_video_capture_host.cc b/content/renderer/pepper/pepper_video_capture_host.cc
index ed76dc3f2b21889a2f5e890f8ec6b30637256c93..820dd12b67ca0b722b1bae03f032d0ce8fad5982 100644
--- a/content/renderer/pepper/pepper_video_capture_host.cc
+++ b/content/renderer/pepper/pepper_video_capture_host.cc
@@ -4,6 +4,7 @@
#include "content/renderer/pepper/pepper_video_capture_host.h"
+#include "content/renderer/media/media_stream_video_source.h"
#include "content/renderer/pepper/host_globals.h"
#include "content/renderer/pepper/pepper_media_device_manager.h"
#include "content/renderer/pepper/pepper_platform_video_capture.h"
@@ -120,21 +121,26 @@ void PepperVideoCaptureHost::PostErrorReply() {
}
void PepperVideoCaptureHost::OnFrameReady(
- const scoped_refptr<media::VideoFrame>& frame,
- media::VideoCaptureFormat format) {
+ const scoped_refptr<media::VideoFrame>& frame) {
DCHECK(frame.get());
- if (alloc_size_ != frame->coded_size() || buffers_.empty()) {
- AllocBuffers(frame->coded_size(), format.frame_rate);
- alloc_size_ = frame->coded_size();
+ if (alloc_size_ != frame->visible_rect().size() || buffers_.empty()) {
+ alloc_size_ = frame->visible_rect().size();
+ double frame_rate;
+ int rounded_frame_rate;
+ if (frame->metadata()->GetDouble(media::VideoFrameMetadata::FRAME_RATE,
+ &frame_rate))
+ rounded_frame_rate = static_cast<int>(frame_rate + 0.5 /* round */);
+ else
+ rounded_frame_rate = MediaStreamVideoSource::kUnknownFrameRate;
+ AllocBuffers(alloc_size_, rounded_frame_rate);
}
for (uint32_t i = 0; i < buffers_.size(); ++i) {
if (!buffers_[i].in_use) {
DCHECK_EQ(frame->format(), media::VideoFrame::I420);
if (buffers_[i].buffer->size() <
- media::VideoFrame::AllocationSize(frame->format(),
- frame->coded_size())) {
+ media::VideoFrame::AllocationSize(frame->format(), alloc_size_)) {
// TODO(ihf): handle size mismatches gracefully here.
return;
}
@@ -144,7 +150,7 @@ void PepperVideoCaptureHost::OnFrameReady(
static_assert(media::VideoFrame::kVPlane == 2, "v plane should be 2");
for (size_t j = 0; j < media::VideoFrame::NumPlanes(frame->format());
++j) {
- const uint8* src = frame->data(j);
+ const uint8* src = frame->visible_data(j);
const size_t row_bytes = frame->row_bytes(j);
const size_t src_stride = frame->stride(j);
for (int k = 0; k < frame->rows(j); ++k) {
« no previous file with comments | « content/renderer/pepper/pepper_video_capture_host.h ('k') | media/base/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698