Commit Graph

12 Commits

Author SHA1 Message Date
magjed@webrtc.org
f58b455cf7 cricket::VideoAdapter: Drop frames before spending time converting/scaling, not after.
In VideoCapturer::OnFrameCaptured, we currently convert cricket::CapturedFrame to cricket::VideoFrame and then send that to VideoAdapter::AdaptFrame. AdaptFrame may then decide to drop the frame. It would be faster to drop the frame before converting to cricket::VideoFrame.

This CL refactors VideoAdapter with a new function AdaptFrameResolution that takes captured resolution as input and output adapted resolution, or 0x0 if the frame should be dropped. Using that function, frames can be dropped before any conversion takes place.

R=fbarchard@google.com, perkj@webrtc.org, tommi@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=7702

Committed: https://code.google.com/p/webrtc/source/detail?r=7707

Review URL: https://webrtc-codereview.appspot.com/29949004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7721 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-19 18:09:14 +00:00
tommi@webrtc.org
4ec19e306a Revert 7707 "cricket::VideoAdapter: Drop frames before spending ..."
This didn't compile on the FYI bots.  Example error:

FAILED: E:\b\depot_tools\python276_bin\python.exe gyp-win-tool link-with-manifests environment.x86 True chrome_child.dll "E:\b\depot_tools\python276_bin\python.exe gyp-win-tool link-wrapper environment.x86 False link.exe /nologo /IMPLIB:chrome_child.dll.lib /DLL /OUT:chrome_child.dll @chrome_child.dll.rsp" 2 mt.exe rc.exe "obj\chrome\chrome_child_dll.chrome_child.dll.intermediate.manifest" obj\chrome\chrome_child_dll.chrome_child.dll.generated.manifest
content_renderer.lib(content_renderer.webrtc_video_capturer_adapter.obj) : error LNK2001: unresolved external symbol "public: virtual class cricket::VideoFrame * __thiscall cricket::VideoFrameFactory::CreateAliasedFrame(struct cricket::CapturedFrame const *,int,int,int,int)const " (?CreateAliasedFrame@VideoFrameFactory@cricket@@UBEPAVVideoFrame@2@PBUCapturedFrame@2@HHHH@Z)

libjingle_webrtc_common.lib(libjingle_webrtc_common.peerconnectionfactory.obj) : error LNK2001: unresolved external symbol "public: virtual class cricket::VideoFrame * __thiscall cricket::VideoFrameFactory::CreateAliasedFrame(struct cricket::CapturedFrame const *,int,int,int,int)const " (?CreateAliasedFrame@VideoFrameFactory@cricket@@UBEPAVVideoFrame@2@PBUCapturedFrame@2@HHHH@Z)

libjingle_webrtc_common.lib(libjingle_webrtc_common.videocapturer.obj) : error LNK2001: unresolved external symbol "public: virtual class cricket::VideoFrame * __thiscall cricket::VideoFrameFactory::CreateAliasedFrame(struct cricket::CapturedFrame const *,int,int,int,int)const " (?CreateAliasedFrame@VideoFrameFactory@cricket@@UBEPAVVideoFrame@2@PBUCapturedFrame@2@HHHH@Z)

libjingle_webrtc_common.lib(libjingle_webrtc_common.dummydevicemanager.obj) : error LNK2001: unresolved external symbol "public: virtual class cricket::VideoFrame * __thiscall cricket::VideoFrameFactory::CreateAliasedFrame(struct cricket::CapturedFrame const *,int,int,int,int)const " (?CreateAliasedFrame@VideoFrameFactory@cricket@@UBEPAVVideoFrame@2@PBUCapturedFrame@2@HHHH@Z)

chrome_child.dll : fatal error LNK1120: 1 unresolved externals


> cricket::VideoAdapter: Drop frames before spending time converting/scaling, not after.
> 
> In VideoCapturer::OnFrameCaptured, we currently convert cricket::CapturedFrame to cricket::VideoFrame and then send that to VideoAdapter::AdaptFrame. AdaptFrame may then decide to drop the frame. It would be faster to drop the frame before converting to cricket::VideoFrame.
> 
> This CL refactors VideoAdapter with a new function AdaptFrameResolution that takes captured resolution as input and output adapted resolution, or 0x0 if the frame should be dropped. Using that function, frames can be dropped before any conversion takes place.
> 
> R=fbarchard@google.com, perkj@webrtc.org, tommi@webrtc.org
> 
> Committed: https://code.google.com/p/webrtc/source/detail?r=7702
> 
> Review URL: https://webrtc-codereview.appspot.com/29949004

TBR=magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/28019004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7708 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-16 22:58:11 +00:00
magjed@webrtc.org
858dbbced2 cricket::VideoAdapter: Drop frames before spending time converting/scaling, not after.
In VideoCapturer::OnFrameCaptured, we currently convert cricket::CapturedFrame to cricket::VideoFrame and then send that to VideoAdapter::AdaptFrame. AdaptFrame may then decide to drop the frame. It would be faster to drop the frame before converting to cricket::VideoFrame.

This CL refactors VideoAdapter with a new function AdaptFrameResolution that takes captured resolution as input and output adapted resolution, or 0x0 if the frame should be dropped. Using that function, frames can be dropped before any conversion takes place.

R=fbarchard@google.com, perkj@webrtc.org, tommi@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=7702

Review URL: https://webrtc-codereview.appspot.com/29949004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7707 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-16 18:21:51 +00:00
magjed@webrtc.org
a73d746562 Revert 7702 "cricket::VideoAdapter: Drop frames before spending ..."
Rease for revert: failed internal test cases

> cricket::VideoAdapter: Drop frames before spending time converting/scaling, not after.
> 
> In VideoCapturer::OnFrameCaptured, we currently convert cricket::CapturedFrame to cricket::VideoFrame and then send that to VideoAdapter::AdaptFrame. AdaptFrame may then decide to drop the frame. It would be faster to drop the frame before converting to cricket::VideoFrame.
> 
> This CL refactors VideoAdapter with a new function AdaptFrameResolution that takes captured resolution as input and output adapted resolution, or 0x0 if the frame should be dropped. Using that function, frames can be dropped before any conversion takes place.
> 
> R=fbarchard@google.com, perkj@webrtc.org, tommi@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/29949004

TBR=magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/24279004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7703 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-14 13:25:25 +00:00
magjed@webrtc.org
bbd8cad21f cricket::VideoAdapter: Drop frames before spending time converting/scaling, not after.
In VideoCapturer::OnFrameCaptured, we currently convert cricket::CapturedFrame to cricket::VideoFrame and then send that to VideoAdapter::AdaptFrame. AdaptFrame may then decide to drop the frame. It would be faster to drop the frame before converting to cricket::VideoFrame.

This CL refactors VideoAdapter with a new function AdaptFrameResolution that takes captured resolution as input and output adapted resolution, or 0x0 if the frame should be dropped. Using that function, frames can be dropped before any conversion takes place.

R=fbarchard@google.com, perkj@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/29949004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7702 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-14 12:10:46 +00:00
pbos@webrtc.org
75c3ec1763 Fix data races during VideoAdapterTest tear-down.
Explicitly disconnect the VideoCapturer to avoid frames being
delivered during listener destruction. This manifested only on DrMemory
Full on Windows which I was able to repro locally.

BUG=3671
R=henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/15289004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6991 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-27 18:16:13 +00:00
pbos@webrtc.org
f21ac1fd46 Fix Win64 compile of videoadapter_unittest.cc.
Missed an typecast in videoadapter_unittest.cc in r6979 due to
tryservers being clogged and me waiting for a windows, linux, mac and
tsanv2 bot to finish was not enough. Committing fix straight away to
un-break tree.

TBR=tommi@webrtc.org
BUG=3671

Review URL: https://webrtc-codereview.appspot.com/18279004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6980 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-26 12:46:57 +00:00
pbos@webrtc.org
c9b3f77e65 Fix data races in VideoAdapterTest.
Adressing clear races between the test thread and capturer thread shown
as heap-use-after-free in vpx_codec_destroy in
WebRtcVideoMediaChannelTest.SetSend (way later in the rest run).

When capturing a frame the test copied it to a separate frame that would
then be read by the test without synchronization, if the test didn't
manage to examine the frame in between captures the adapted frame would
be overwritten by the following frame during accesses to it.

The actual races are suppressed by race:webrtc/base/messagequeue.cc and
race:webrtc/base/thread.cc. These fixes reduce the suppression count
locally from around 3000 to 30 for VideoAdapterTest.*.

Also removing tsan suppressions for talk/base as it's been moved to
webrtc/base.

R=tommi@webrtc.org
BUG=3671

Review URL: https://webrtc-codereview.appspot.com/22169004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6979 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-26 12:33:18 +00:00
buildbot@webrtc.org
a09a99950e (Auto)update libjingle 73222930-> 73226398
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6891 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-13 17:26:08 +00:00
buildbot@webrtc.org
4f0d401fae (Auto)update libjingle 72682155-> 72785180
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6841 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-07 04:47:36 +00:00
buildbot@webrtc.org
8e885990ae (Auto)update libjingle 72566057-> 72591796
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6824 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-04 23:56:14 +00:00
buildbot@webrtc.org
3bc48247b7 (Auto)update libjingle 72403605-> 72407428
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6811 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-01 16:53:32 +00:00