From ac993fef2c3ec646223fea67da399ca28b46d53a Mon Sep 17 00:00:00 2001 From: "mikhal@webrtc.org" Date: Wed, 7 Nov 2012 17:18:04 +0000 Subject: [PATCH] Adding codecType to OnIncomingCapturedEncodedFrame partially reverting r3013. Review URL: https://webrtc-codereview.appspot.com/965010 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3055 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../modules/video_capture/include/video_capture_defines.h | 3 ++- .../modules/video_capture/test/video_capture_unittest.cc | 3 ++- webrtc/modules/video_capture/video_capture_impl.cc | 8 +++++--- webrtc/modules/video_capture/video_capture_impl.h | 6 +++--- webrtc/video_engine/vie_capturer.cc | 4 +++- webrtc/video_engine/vie_capturer.h | 3 ++- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/webrtc/modules/video_capture/include/video_capture_defines.h b/webrtc/modules/video_capture/include/video_capture_defines.h index 193be77a0..990ab6371 100644 --- a/webrtc/modules/video_capture/include/video_capture_defines.h +++ b/webrtc/modules/video_capture/include/video_capture_defines.h @@ -134,7 +134,8 @@ public: virtual void OnIncomingCapturedFrame(const WebRtc_Word32 id, I420VideoFrame& videoFrame) = 0; virtual void OnIncomingCapturedEncodedFrame(const WebRtc_Word32 id, - VideoFrame& videoFrame) = 0; + VideoFrame& videoFrame, + VideoCodecType codecType) = 0; virtual void OnCaptureDelayChanged(const WebRtc_Word32 id, const WebRtc_Word32 delay) = 0; protected: diff --git a/webrtc/modules/video_capture/test/video_capture_unittest.cc b/webrtc/modules/video_capture/test/video_capture_unittest.cc index 74b15ab17..ae2dc9397 100644 --- a/webrtc/modules/video_capture/test/video_capture_unittest.cc +++ b/webrtc/modules/video_capture/test/video_capture_unittest.cc @@ -180,7 +180,8 @@ class TestVideoCaptureCallback : public VideoCaptureDataCallback { last_frame_.CopyFrame(videoFrame); } virtual void OnIncomingCapturedEncodedFrame(const WebRtc_Word32 id, - webrtc::VideoFrame& videoFrame) + webrtc::VideoFrame& videoFrame, + webrtc::VideoCodecType codecType) { assert(!"NOTIMPLEMENTED"); } diff --git a/webrtc/modules/video_capture/video_capture_impl.cc b/webrtc/modules/video_capture/video_capture_impl.cc index 794156fea..5512d4ec0 100644 --- a/webrtc/modules/video_capture/video_capture_impl.cc +++ b/webrtc/modules/video_capture/video_capture_impl.cc @@ -216,7 +216,8 @@ WebRtc_Word32 VideoCaptureImpl::DeliverCapturedFrame(I420VideoFrame& } WebRtc_Word32 VideoCaptureImpl::DeliverEncodedCapturedFrame( - VideoFrame& captureFrame, WebRtc_Word64 capture_time) { + VideoFrame& captureFrame, WebRtc_Word64 capture_time, + VideoCodecType codecType) { UpdateFrameCount(); // frame count used for local frame rate callback. const bool callOnCaptureDelayChanged = _setCaptureDelay != _captureDelay; @@ -243,7 +244,7 @@ WebRtc_Word32 VideoCaptureImpl::DeliverEncodedCapturedFrame( if (callOnCaptureDelayChanged) { _dataCallBack->OnCaptureDelayChanged(_id, _captureDelay); } - _dataCallBack->OnIncomingCapturedEncodedFrame(_id, captureFrame); + _dataCallBack->OnIncomingCapturedEncodedFrame(_id, captureFrame, codecType); } return 0; @@ -320,7 +321,8 @@ WebRtc_Word32 VideoCaptureImpl::IncomingFrame( "Failed to copy captured frame of length %d", static_cast(videoFrameLength)); } - DeliverEncodedCapturedFrame(_capture_encoded_frame, captureTime); + DeliverEncodedCapturedFrame(_capture_encoded_frame, captureTime, + frameInfo.codecType); } const WebRtc_UWord32 processTime = diff --git a/webrtc/modules/video_capture/video_capture_impl.h b/webrtc/modules/video_capture/video_capture_impl.h index 38f62bf19..da5d60d71 100644 --- a/webrtc/modules/video_capture/video_capture_impl.h +++ b/webrtc/modules/video_capture/video_capture_impl.h @@ -100,9 +100,9 @@ protected: virtual ~VideoCaptureImpl(); WebRtc_Word32 DeliverCapturedFrame(I420VideoFrame& captureFrame, WebRtc_Word64 capture_time); - WebRtc_Word32 DeliverEncodedCapturedFrame( - VideoFrame& captureFrame, - WebRtc_Word64 capture_time); + WebRtc_Word32 DeliverEncodedCapturedFrame(VideoFrame& captureFrame, + WebRtc_Word64 capture_time, + VideoCodecType codec_type); WebRtc_Word32 _id; // Module ID char* _deviceUniqueId; // current Device unique name; diff --git a/webrtc/video_engine/vie_capturer.cc b/webrtc/video_engine/vie_capturer.cc index a4461b599..4c05855fd 100644 --- a/webrtc/video_engine/vie_capturer.cc +++ b/webrtc/video_engine/vie_capturer.cc @@ -359,7 +359,8 @@ void ViECapturer::OnIncomingCapturedFrame(const WebRtc_Word32 capture_id, } void ViECapturer::OnIncomingCapturedEncodedFrame(const WebRtc_Word32 capture_id, - VideoFrame& video_frame) { + VideoFrame& video_frame, + VideoCodecType codec_type) { WEBRTC_TRACE(kTraceStream, kTraceVideo, ViEId(engine_id_, capture_id_), "%s(capture_id: %d)", __FUNCTION__, capture_id); CriticalSectionScoped cs(capture_cs_.get()); @@ -367,6 +368,7 @@ void ViECapturer::OnIncomingCapturedEncodedFrame(const WebRtc_Word32 capture_id, // is slightly off since it's being set when the frame has been received from // the camera, and not when the camera actually captured the frame. video_frame.SetRenderTime(video_frame.RenderTimeMs() - FrameDelay()); + assert(codec_type != kVideoCodecUnknown); if (encoded_frame_.Length() != 0) { // The last encoded frame has not been sent yet. Need to wait. deliver_event_.Reset(); diff --git a/webrtc/video_engine/vie_capturer.h b/webrtc/video_engine/vie_capturer.h index 4a7ba4e67..4dd12cfb6 100644 --- a/webrtc/video_engine/vie_capturer.h +++ b/webrtc/video_engine/vie_capturer.h @@ -118,7 +118,8 @@ class ViECapturer virtual void OnIncomingCapturedFrame(const WebRtc_Word32 id, I420VideoFrame& video_frame); virtual void OnIncomingCapturedEncodedFrame(const WebRtc_Word32 capture_id, - VideoFrame& video_frame); + VideoFrame& video_frame, + VideoCodecType codec_type); virtual void OnCaptureDelayChanged(const WebRtc_Word32 id, const WebRtc_Word32 delay);