Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 The WebRTC 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 1544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1555 memset(video_frame->buffer(webrtc::kUPlane), 128, | 1555 memset(video_frame->buffer(webrtc::kUPlane), 128, |
| 1556 video_frame->allocated_size(webrtc::kUPlane)); | 1556 video_frame->allocated_size(webrtc::kUPlane)); |
| 1557 memset(video_frame->buffer(webrtc::kVPlane), 128, | 1557 memset(video_frame->buffer(webrtc::kVPlane), 128, |
| 1558 video_frame->allocated_size(webrtc::kVPlane)); | 1558 video_frame->allocated_size(webrtc::kVPlane)); |
| 1559 video_frame->set_rotation(rotation); | 1559 video_frame->set_rotation(rotation); |
| 1560 } | 1560 } |
| 1561 | 1561 |
| 1562 void WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame( | 1562 void WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame( |
| 1563 const VideoFrame& frame) { | 1563 const VideoFrame& frame) { |
| 1564 TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::OnFrame"); | 1564 TRACE_EVENT0("webrtc", "WebRtcVideoSendStream::OnFrame"); |
| 1565 webrtc::VideoFrame video_frame(frame.GetVideoFrameBuffer(), 0, 0, | 1565 invoker_.AsyncInvoke<void>( |
|
pbos-webrtc
2016/04/08 14:08:56
I really don't want a thread hop here, I've CLs th
perkj_webrtc
2016/04/08 14:34:07
This can wait until then....
nisse-webrtc
2016/04/08 14:57:03
Agreed.
nisse-webrtc
2016/04/11 06:35:39
Can you cc me on that cl?
| |
| 1566 frame.GetVideoRotation()); | 1566 worker_thread_, |
| 1567 rtc::Bind(&WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame_w, | |
| 1568 this, | |
| 1569 webrtc::VideoFrame(frame.GetVideoFrameBuffer(), 0, 0, | |
| 1570 frame.GetVideoRotation()), | |
| 1571 frame.GetTimeStamp() / rtc::kNumNanosecsPerMillisec)); | |
| 1572 } | |
| 1573 | |
| 1574 void WebRtcVideoChannel2::WebRtcVideoSendStream::OnFrame_w( | |
| 1575 webrtc::VideoFrame video_frame, int64_t frame_delta_ms) { | |
| 1576 RTC_DCHECK(worker_thread_->IsCurrent()); | |
| 1567 rtc::CritScope cs(&lock_); | 1577 rtc::CritScope cs(&lock_); |
| 1568 if (stream_ == NULL) { | 1578 if (stream_ == NULL) { |
| 1569 // Frame input before send codecs are configured, dropping frame. | 1579 // Frame input before send codecs are configured, dropping frame. |
| 1570 return; | 1580 return; |
| 1571 } | 1581 } |
| 1572 | 1582 |
| 1573 int64_t frame_delta_ms = frame.GetTimeStamp() / rtc::kNumNanosecsPerMillisec; | |
| 1574 // frame->GetTimeStamp() is essentially a delta, align to webrtc time | 1583 // frame->GetTimeStamp() is essentially a delta, align to webrtc time |
| 1575 if (first_frame_timestamp_ms_ == 0) { | 1584 if (first_frame_timestamp_ms_ == 0) { |
| 1576 first_frame_timestamp_ms_ = rtc::Time() - frame_delta_ms; | 1585 first_frame_timestamp_ms_ = rtc::Time() - frame_delta_ms; |
| 1577 } | 1586 } |
| 1578 | 1587 |
| 1579 last_frame_timestamp_ms_ = first_frame_timestamp_ms_ + frame_delta_ms; | 1588 last_frame_timestamp_ms_ = first_frame_timestamp_ms_ + frame_delta_ms; |
| 1580 video_frame.set_render_time_ms(last_frame_timestamp_ms_); | 1589 video_frame.set_render_time_ms(last_frame_timestamp_ms_); |
| 1581 // Reconfigure codec if necessary. | 1590 // Reconfigure codec if necessary. |
| 1582 SetDimensions(video_frame.width(), video_frame.height()); | 1591 SetDimensions(video_frame.width(), video_frame.height()); |
| 1583 last_rotation_ = video_frame.rotation(); | 1592 last_rotation_ = video_frame.rotation(); |
| (...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2565 rtx_mapping[video_codecs[i].codec.id] != | 2574 rtx_mapping[video_codecs[i].codec.id] != |
| 2566 fec_settings.red_payload_type) { | 2575 fec_settings.red_payload_type) { |
| 2567 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; | 2576 video_codecs[i].rtx_payload_type = rtx_mapping[video_codecs[i].codec.id]; |
| 2568 } | 2577 } |
| 2569 } | 2578 } |
| 2570 | 2579 |
| 2571 return video_codecs; | 2580 return video_codecs; |
| 2572 } | 2581 } |
| 2573 | 2582 |
| 2574 } // namespace cricket | 2583 } // namespace cricket |
| OLD | NEW |