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

Side by Side Diff: talk/media/devices/filevideocapturer.cc

Issue 1324263004: Remove cricket::VideoFrame::Set/GetElapsedTime() (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased. Re-added CapturedFrame.elapsed_time. Remove once Chromium is updated. Created 5 years, 2 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 | « talk/media/devices/filevideocapturer.h ('k') | talk/media/webrtc/webrtcvideocapturer.cc » ('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 * libjingle 2 * libjingle
3 * Copyright 2004 Google Inc. 3 * Copyright 2004 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 } 67 }
68 68
69 if (write_header_) { 69 if (write_header_) {
70 // Convert the frame header to bytebuffer. 70 // Convert the frame header to bytebuffer.
71 rtc::ByteBuffer buffer; 71 rtc::ByteBuffer buffer;
72 buffer.WriteUInt32(frame.width); 72 buffer.WriteUInt32(frame.width);
73 buffer.WriteUInt32(frame.height); 73 buffer.WriteUInt32(frame.height);
74 buffer.WriteUInt32(frame.fourcc); 74 buffer.WriteUInt32(frame.fourcc);
75 buffer.WriteUInt32(frame.pixel_width); 75 buffer.WriteUInt32(frame.pixel_width);
76 buffer.WriteUInt32(frame.pixel_height); 76 buffer.WriteUInt32(frame.pixel_height);
77 buffer.WriteUInt64(frame.elapsed_time); 77 // Elapsed time is deprecated.
78 const uint64_t dummy_elapsed_time = 0;
79 buffer.WriteUInt64(dummy_elapsed_time);
78 buffer.WriteUInt64(frame.time_stamp); 80 buffer.WriteUInt64(frame.time_stamp);
79 buffer.WriteUInt32(size); 81 buffer.WriteUInt32(size);
80 82
81 // Write the bytebuffer to file. 83 // Write the bytebuffer to file.
82 if (rtc::SR_SUCCESS != video_file_.Write(buffer.Data(), 84 if (rtc::SR_SUCCESS != video_file_.Write(buffer.Data(),
83 buffer.Length(), 85 buffer.Length(),
84 NULL, 86 NULL,
85 NULL)) { 87 NULL)) {
86 LOG(LS_ERROR) << "Failed to write frame header"; 88 LOG(LS_ERROR) << "Failed to write frame header";
87 return false; 89 return false;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 ///////////////////////////////////////////////////////////////////// 158 /////////////////////////////////////////////////////////////////////
157 // Implementation of class FileVideoCapturer 159 // Implementation of class FileVideoCapturer
158 ///////////////////////////////////////////////////////////////////// 160 /////////////////////////////////////////////////////////////////////
159 static const int64 kNumNanoSecsPerMilliSec = 1000000; 161 static const int64 kNumNanoSecsPerMilliSec = 1000000;
160 const char* FileVideoCapturer::kVideoFileDevicePrefix = "video-file:"; 162 const char* FileVideoCapturer::kVideoFileDevicePrefix = "video-file:";
161 163
162 FileVideoCapturer::FileVideoCapturer() 164 FileVideoCapturer::FileVideoCapturer()
163 : frame_buffer_size_(0), 165 : frame_buffer_size_(0),
164 file_read_thread_(NULL), 166 file_read_thread_(NULL),
165 repeat_(0), 167 repeat_(0),
166 start_time_ns_(0),
167 last_frame_timestamp_ns_(0), 168 last_frame_timestamp_ns_(0),
168 ignore_framerate_(false) { 169 ignore_framerate_(false) {
169 } 170 }
170 171
171 FileVideoCapturer::~FileVideoCapturer() { 172 FileVideoCapturer::~FileVideoCapturer() {
172 Stop(); 173 Stop();
173 delete[] static_cast<char*>(captured_frame_.data); 174 delete[] static_cast<char*>(captured_frame_.data);
174 } 175 }
175 176
176 bool FileVideoCapturer::Init(const Device& device) { 177 bool FileVideoCapturer::Init(const Device& device) {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 LOG(LS_ERROR) << "File not opened yet"; 237 LOG(LS_ERROR) << "File not opened yet";
237 return CS_NO_DEVICE; 238 return CS_NO_DEVICE;
238 } else if (!video_file_.SetPosition(0)) { 239 } else if (!video_file_.SetPosition(0)) {
239 LOG(LS_ERROR) << "Failed to seek back to beginning of the file"; 240 LOG(LS_ERROR) << "Failed to seek back to beginning of the file";
240 return CS_FAILED; 241 return CS_FAILED;
241 } 242 }
242 243
243 SetCaptureFormat(&capture_format); 244 SetCaptureFormat(&capture_format);
244 // Create a thread to read the file. 245 // Create a thread to read the file.
245 file_read_thread_ = new FileReadThread(this); 246 file_read_thread_ = new FileReadThread(this);
246 start_time_ns_ = kNumNanoSecsPerMilliSec *
247 static_cast<int64>(rtc::Time());
248 bool ret = file_read_thread_->Start(); 247 bool ret = file_read_thread_->Start();
249 if (ret) { 248 if (ret) {
250 LOG(LS_INFO) << "File video capturer '" << GetId() << "' started"; 249 LOG(LS_INFO) << "File video capturer '" << GetId() << "' started";
251 return CS_RUNNING; 250 return CS_RUNNING;
252 } else { 251 } else {
253 LOG(LS_ERROR) << "File video capturer '" << GetId() << "' failed to start"; 252 LOG(LS_ERROR) << "File video capturer '" << GetId() << "' failed to start";
254 return CS_FAILED; 253 return CS_FAILED;
255 } 254 }
256 } 255 }
257 256
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 if (rtc::SR_SUCCESS == sr) { 294 if (rtc::SR_SUCCESS == sr) {
296 if (CapturedFrame::kFrameHeaderSize != bytes_read) { 295 if (CapturedFrame::kFrameHeaderSize != bytes_read) {
297 return rtc::SR_EOS; 296 return rtc::SR_EOS;
298 } 297 }
299 rtc::ByteBuffer buffer(header, CapturedFrame::kFrameHeaderSize); 298 rtc::ByteBuffer buffer(header, CapturedFrame::kFrameHeaderSize);
300 buffer.ReadUInt32(reinterpret_cast<uint32*>(&frame->width)); 299 buffer.ReadUInt32(reinterpret_cast<uint32*>(&frame->width));
301 buffer.ReadUInt32(reinterpret_cast<uint32*>(&frame->height)); 300 buffer.ReadUInt32(reinterpret_cast<uint32*>(&frame->height));
302 buffer.ReadUInt32(&frame->fourcc); 301 buffer.ReadUInt32(&frame->fourcc);
303 buffer.ReadUInt32(&frame->pixel_width); 302 buffer.ReadUInt32(&frame->pixel_width);
304 buffer.ReadUInt32(&frame->pixel_height); 303 buffer.ReadUInt32(&frame->pixel_height);
305 buffer.ReadUInt64(reinterpret_cast<uint64*>(&frame->elapsed_time)); 304 // Elapsed time is deprecated.
305 uint64 dummy_elapsed_time;
306 buffer.ReadUInt64(&dummy_elapsed_time);
306 buffer.ReadUInt64(reinterpret_cast<uint64*>(&frame->time_stamp)); 307 buffer.ReadUInt64(reinterpret_cast<uint64*>(&frame->time_stamp));
307 buffer.ReadUInt32(&frame->data_size); 308 buffer.ReadUInt32(&frame->data_size);
308 } 309 }
309 310
310 return sr; 311 return sr;
311 } 312 }
312 313
313 // Executed in the context of FileReadThread. 314 // Executed in the context of FileReadThread.
314 bool FileVideoCapturer::ReadFrame(bool first_frame, int* wait_time_ms) { 315 bool FileVideoCapturer::ReadFrame(bool first_frame, int* wait_time_ms) {
315 uint32 start_read_time_ms = rtc::Time(); 316 uint32 start_read_time_ms = rtc::Time();
316 317
317 // 1. Signal the previously read frame to downstream. 318 // 1. Signal the previously read frame to downstream.
318 if (!first_frame) { 319 if (!first_frame) {
319 captured_frame_.time_stamp = kNumNanoSecsPerMilliSec * 320 captured_frame_.time_stamp = kNumNanoSecsPerMilliSec *
320 static_cast<int64>(start_read_time_ms); 321 static_cast<int64>(start_read_time_ms);
321 captured_frame_.elapsed_time = captured_frame_.time_stamp - start_time_ns_;
322 SignalFrameCaptured(this, &captured_frame_); 322 SignalFrameCaptured(this, &captured_frame_);
323 } 323 }
324 324
325 // 2. Read the next frame. 325 // 2. Read the next frame.
326 if (rtc::SS_CLOSED == video_file_.GetState()) { 326 if (rtc::SS_CLOSED == video_file_.GetState()) {
327 LOG(LS_ERROR) << "File not opened yet"; 327 LOG(LS_ERROR) << "File not opened yet";
328 return false; 328 return false;
329 } 329 }
330 // 2.1 Read the frame header. 330 // 2.1 Read the frame header.
331 rtc::StreamResult result = ReadFrameHeader(&captured_frame_); 331 rtc::StreamResult result = ReadFrameHeader(&captured_frame_);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 if (interval_ms > 0) { 376 if (interval_ms > 0) {
377 *wait_time_ms = interval_ms; 377 *wait_time_ms = interval_ms;
378 } 378 }
379 } 379 }
380 // Keep the original timestamp read from the file. 380 // Keep the original timestamp read from the file.
381 last_frame_timestamp_ns_ = captured_frame_.time_stamp; 381 last_frame_timestamp_ns_ = captured_frame_.time_stamp;
382 return true; 382 return true;
383 } 383 }
384 384
385 } // namespace cricket 385 } // namespace cricket
OLDNEW
« no previous file with comments | « talk/media/devices/filevideocapturer.h ('k') | talk/media/webrtc/webrtcvideocapturer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698