summaryrefslogtreecommitdiffstats
path: root/remoting/codec
Commit message (Collapse)AuthorAgeFilesLines
* Remove shaped desktop support from remoting host and client.sergeyu2016-03-254-59/+0
| | | | | | | | | We no longer need to support shaped desktop, so the corresponding code can be removed. Review URL: https://codereview.chromium.org/1827043004 Cr-Commit-Position: refs/heads/master@{#383340}
* Move libvpx_new to libvpxjohannkoenig2016-03-024-6/+6
| | | | | | | | | | | | | | | | The move to libvpx_new happened before M47 (landed in 2524, M47 branch was 2526): crbug.com/481034 https://codereview.chromium.org/1323333002 Clients which try to transition directly between the tree after this change and before the previous move will end up in a very broken state. Now it is 6 months later and M48 is stable so is unlikely that a client would check out the old code at all, much less try to transition directly between the two versions. Leave a compatibility layer for targets which need to be updated out of band (webrtc, libyuv) Review URL: https://codereview.chromium.org/1734613003 Cr-Commit-Position: refs/heads/master@{#378739}
* Implement new video encoder performance tests, for VP9/VP8 comparison.sergeyu2016-01-204-112/+15
| | | | | | | | | | | | | | | | | | | The old encoder perf tests (in VideoEncoderVpxTest) were not providing very realistic results because: - They were measuring performance on frames with random data. - They were testing the case when the whole frame is changing every time. - They were using real clock, which affects results. This change implements new tests that provide closer approximation to how the codec is being used. CyclicFrameGenerator added in this test will also be used to test performance of the new WebRTC-based protocol. Review URL: https://codereview.chromium.org/1601303002 Cr-Commit-Position: refs/heads/master@{#370491}
* Use std::move() instead of .Pass() in remoting/*sergeyu2015-12-2410-29/+29
| | | | | | | | | | Now there is a presubmit check that doesn't allow Pass() anymore. See https://www.chromium.org/rvalue-references for information about std::move in chromium. Review URL: https://codereview.chromium.org/1545723002 Cr-Commit-Position: refs/heads/master@{#366778}
* Switch to standard integer types in remoting/.avi2015-12-2220-45/+72
| | | | | | | | | BUG=138542 TBR=wez@chromium.org Review URL: https://codereview.chromium.org/1542203002 Cr-Commit-Position: refs/heads/master@{#366684}
* Add UMA histograms for more detailed latency tracking on the CRD host.sergeyu2015-09-304-17/+2
| | | | | | | | | | | | | | | | | | | | Previously only two delays in CRD hosts were tracked: capture time and encode time. This CL adds 4 other values that are now measured on the host, sent to the client and logged to UMA: - capture_pending_time: time between input event being received and when the next frame starts capturing. - capture_overhead_time: extra latency for the capturer caused by IPC and threading. - encode_pending_time: delay between capturer and encoder. - send_pending_time: time encoded packets wait in the send queue. VideoFramePump is responsible for measuring all latency values sent to the client except for capture_time_ms which is still measured by the capturer. Review URL: https://codereview.chromium.org/1365663003 Cr-Commit-Position: refs/heads/master@{#351504}
* Copy libvpx from DEPS to srcjohannkoenig2015-09-184-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Leaves the previous version in place but updates BUILD.gn and libvpx.gn to point to the new version. This allows decoupling the WebRTC update which is also in DEPS. libvpx DEPS changes ac1772e:0d6551 https://codereview.chromium.org/1339033002 https://chromium-review.googlesource.com/299759 https://codereview.chromium.org/1350853003 https://codereview.chromium.org/1353433003 Copy directory to libvpx_new to avoid breaking bisecting. This allows the user to move between and older and newer revision. A followup to rename libvpx_new to libvpx will come in some ~months because there are additional complications if one tries to sync directly from pre-move to post-rename or the other way around. Remove WATCHLISTS and codereview.settings from _new and use the parent versions. Add DEPS file to enumerate the #include paths. Check out third_party/libvpx_new/source/libvpx directly from upstream project Update all the easy clients of libvpx to depend on the new tree directly. https://chromium.googlesource.com/chromium/deps/libvpx/+/ac1772e3db5c885b554f6a72ca9dbac4245cb0e2 BUG=481034 R=tomfinegan@chromium.org,brettw@chromium.org,phajdan.jr@chromium.org Review URL: https://codereview.chromium.org/1323333002 Cr-Commit-Position: refs/heads/master@{#349789}
* Compile remoting client plugin with GNsergeyu2015-09-141-2/+22
| | | | | | | | BUG=512899 Review URL: https://codereview.chromium.org/1312463005 Cr-Commit-Position: refs/heads/master@{#348752}
* remoting: Remove dependency on YUV code in src/mediasergeyu2015-08-212-1/+2
| | | | | | | | | | libyuv is now used for YUV conversions on both ends. BUG=256850 Review URL: https://codereview.chromium.org/1290273004 Cr-Commit-Position: refs/heads/master@{#344905}
* Simplify VideoDecoder interfacesergeyu2015-08-208-484/+165
| | | | | | | | | | | Previously VideoDecoder allowed to resize the frames. It's no longer used anywhere, so the interface can be simplified. BUG=256850, 486917 Review URL: https://codereview.chromium.org/1301233002 Cr-Commit-Position: refs/heads/master@{#344603}
* Remove VideoDecoder::Initialize().sergeyu2015-08-196-25/+13
| | | | | | | | | Initialize() function wasn't really useful in VideoDecoder. Initialization can be done when decoding the first frame. Review URL: https://codereview.chromium.org/1298863003 Cr-Commit-Position: refs/heads/master@{#344264}
* remoting: Remove third_party/speex entry from DEPS list.tfarina2015-08-011-1/+0
| | | | | | | | | | | | | | It is not necessary as nothing in codec/ includes from thir_party/speex. And right now it would not even be possible since third_party/speex was deleted in https://chromium.googlesource.com/chromium/src.git/+/f62d4353c0cc229b6327113bd195c522b4b89c21 BUG=513929 R=jamiewalch@chromium.org Review URL: https://codereview.chromium.org/1254413013 Cr-Commit-Position: refs/heads/master@{#341468}
* Make video encoder/decoder test fastersergeyu2015-07-302-69/+47
| | | | | | | | | | | | Reduced size of the frames used in the tests to make them faster. Previously all Video tests in remoting_unittests were taking more than 10 seconds, now thay take less than 4 BUG=514404 Review URL: https://codereview.chromium.org/1264743002 Cr-Commit-Position: refs/heads/master@{#341206}
* Allow shaped-desktop hosts to send shape only when it changes.wez2015-07-174-201/+78
| | | | | | | | | | | | | | | | | | | | Previously hosts supplying a shaped desktop needed to attach the desktop shape to every frame, wasting bandwidth since the shape changes relatively infrequently. This CL updates the VideoRenderer implementations to preserve the shape (or lack of one) from the preceding frame if the VideoPacket does not include the use_desktop_shape field. Also simplifies FrameConsumerProxy to remove the need for ref-counting, updates NULL->nullptr throughout remoting/codec/, and removes unnecessary transparency logic from VideoDecoderVpx. BUG=446288 Review URL: https://codereview.chromium.org/1236663002 Cr-Commit-Position: refs/heads/master@{#339212}
* Clean up some NULL->nullptr in remoting/codec/.wez2015-07-146-17/+17
| | | | | | Review URL: https://codereview.chromium.org/1240563002 Cr-Commit-Position: refs/heads/master@{#338701}
* Supply empty frames until codec is done with top-off.wez2015-07-105-45/+48
| | | | | | | | | | | | | | | Previously the VideoEncoderVpx would pass up to two empty/unchanged frames to the codec when in lossy-VP9 mode, to allow some quality top-off even if the desktop is otherwise idle. VideoEncoderVpx now calls the codec until it reports that no changes were encoded. This CL also uses a DesktopSize to hold the active-map dimensions. BUG=134202 Review URL: https://codereview.chromium.org/1213323003 Cr-Commit-Position: refs/heads/master@{#338371}
* Update VideoFramePump to pass un-changed frames to encoders.wez2015-06-108-34/+97
| | | | | | | | | | | | | | | | | | | | This allows VP9/lossy mode to "top-off" previously encoded imagery to improve visual quality at the client, by continuing to deliver data even when nothing has actually changed on the host desktop. This CL makes several other minor changes: - Fix the host's --enable-i444 flag, which was broken by refactoring. - Tweak VP9/lossy mode to more conservative quantization settings. - Tweak VP9/lossy mode to encode up to two unchanged frames for top-off. - Update VideoEncoderVerbatim for the new VideoFramePump semantics. - Update the VideoFrameRecorder & FakeDesktopCapturer. - Adds simple codec & VideoFramePump unit-tests for the new behaviour. BUG=134202 Review URL: https://codereview.chromium.org/1150163002 Cr-Commit-Position: refs/heads/master@{#333764}
* Enable Cyclic Refresh for VP9.aconverse2015-05-162-3/+46
| | | | | | | | | | | Cyclic refresh allows the encoder to update already coded sections of the image at a higher quality. BUG=134202 Review URL: https://codereview.chromium.org/1092813003 Cr-Commit-Position: refs/heads/master@{#330265}
* Switch VP9 lossy to CBR encoding.aconverse2015-04-241-6/+10
| | | | | | | | | | CBR is required for cyclic refresh. BUG=134202 Review URL: https://codereview.chromium.org/1079593004 Cr-Commit-Position: refs/heads/master@{#326881}
* Allocate image buffer in PrepareImage instead of in Configureaconverse2015-04-111-27/+54
| | | | | | | | | | | | | This is to make sure a newly allocated buffer is always filled. The behavioral changes are that the buffer is no longer reallocated (and unfilled) on a switch to lossless encode (Q=0) and not unfilled when switching colorspaces (e.g. I420 to I444). BUG= Review URL: https://codereview.chromium.org/1048103004 Cr-Commit-Position: refs/heads/master@{#324749}
* Replace COMPILE_ASSERT with static_assert in remoting/lukasza2015-03-301-1/+1
| | | | | | | | | | All our toolchains support c++'s static_assert now- COMPILE_ASSERT can be removed now. BUG=442514 Review URL: https://codereview.chromium.org/1045823003 Cr-Commit-Position: refs/heads/master@{#322824}
* Revert of Use tiles when encoding with VP9. (patchset #1 id:1 of ↵aconverse2015-03-051-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/977663004/) Reason for revert: Breaks linux valgrind, needs libvpx side fixes and roll, http://build.chromium.org/p/chromium.memory.fyi/builders/Linux%20Tests%20%28valgrind%29%283%29/builds/44420 Original issue's description: > Use tiles when encoding with VP9. > > VP9's tile encoding feature allows for multithreaded parallelism on both the > encoder and decoder side. > > TEST=Run remoting_perftests under VTune and see that two logical CPUs are used > BUG=134202 > > Committed: https://crrev.com/e67fefbf4f5a5a83ca8d487f422b09664dc4c8fe > Cr-Commit-Position: refs/heads/master@{#319167} TBR=wez@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=134202 Review URL: https://codereview.chromium.org/978133002 Cr-Commit-Position: refs/heads/master@{#319185}
* Use tiles when encoding with VP9.aconverse2015-03-051-0/+4
| | | | | | | | | | | | VP9's tile encoding feature allows for multithreaded parallelism on both the encoder and decoder side. TEST=Run remoting_perftests under VTune and see that two logical CPUs are used BUG=134202 Review URL: https://codereview.chromium.org/977663004 Cr-Commit-Position: refs/heads/master@{#319167}
* Add remoting and PPAPI tests to GN buildbrettw2015-03-041-0/+47
| | | | | | | | | Reland of https://codereview.chromium.org/961323004 TBR=dpranke Review URL: https://codereview.chromium.org/969173002 Cr-Commit-Position: refs/heads/master@{#319080}
* Revert of Add remoting and PPAPI tests to GN build (patchset #6 id:100001 of ↵cpu2015-03-021-47/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/961323004/) Reason for revert: broke windows GN builds as seen in http://build.chromium.org/p/chromium.win/builders/Win8%20GN/builds/5206/steps/compile/logs/stdio Original issue's description: > Add remoting and PPAPI tests to GN build > > Reland of https://codereview.chromium.org/965633002/ > > TBR=dpranke > > Committed: https://crrev.com/66c53eef76f7dff97b1bc76d51740c3a9c07844f > Cr-Commit-Position: refs/heads/master@{#318756} TBR=dpranke@chromium.org,brettw@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/968243004 Cr-Commit-Position: refs/heads/master@{#318772}
* Add remoting and PPAPI tests to GN buildbrettw2015-03-021-0/+47
| | | | | | | | | | Reland of https://codereview.chromium.org/965633002/ TBR=dpranke Review URL: https://codereview.chromium.org/961323004 Cr-Commit-Position: refs/heads/master@{#318756}
* Revert of Add remoting and PPAPI tests to GN build (patchset #7 id:120001 of ↵eroman2015-02-271-47/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/965633002/) Reason for revert: http://build.chromium.org/p/chromium.mac/buildstatus?builder=Mac%20GN&number=4498 ERROR at //remoting/host/BUILD.gn:56:7: Item not found "linux/x_server_clipboard.cc", ^---------------------------- You were trying to remove "linux/x_server_clipboard.cc" Original issue's description: > Add remoting and PPAPI tests to GN build > > BUG= > > Committed: https://crrev.com/d0437210926b14b1b7e06b2b56174fc92ade9c37 > Cr-Commit-Position: refs/heads/master@{#318539} TBR=kelvinp@chromium.org,dpranke@chromium.org,brettw@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/970443002 Cr-Commit-Position: refs/heads/master@{#318545}
* Add remoting and PPAPI tests to GN buildbrettw2015-02-271-0/+47
| | | | | | | | BUG= Review URL: https://codereview.chromium.org/965633002 Cr-Commit-Position: refs/heads/master@{#318539}
* Fix AudioPump to pause the stream when the network is congested.sergeyu2015-02-175-0/+14
| | | | | | | | | | | Previously AudioPump would buffer infinite amount of audio data even when the network is congested. With this changed the amount of data it can buffer is limited to 5kB and it starts dropping packets after that. Review URL: https://codereview.chromium.org/914133003 Cr-Commit-Position: refs/heads/master@{#316669}
* Add tests for resizing VPX larger than initial size.wez2015-01-291-16/+28
| | | | | | | | | | | | libvpx/VP8 currently allows resizing upward but will crash on codec teardown in that case; these tests ensure we don't regress when we remove the workarounds in VideoEncoderVpx. BUG=134202 Review URL: https://codereview.chromium.org/866533004 Cr-Commit-Position: refs/heads/master@{#313741}
* Add 3px padding to updated region in VP8 encoder.wez2015-01-241-6/+9
| | | | | | | | | | | | | Pixels around a changed pixel may be affected because of filters applied by libvpx to reduce block edge artefacts. Our use of active map resulted in these side-effects being missed from the active map and updated region, and thereby (ironically) introduced edge artefacts. BUG=448265 Review URL: https://codereview.chromium.org/869133004 Cr-Commit-Position: refs/heads/master@{#312984}
* Update VPX encoder to reconfigure rather than recreate the codec.wez2015-01-203-87/+100
| | | | | | | | | | | | | | | | | | Previously the VPX encoder would re-create the codec every time the frame dimensions or (for VP9) the lossless encoding or color settings changes. This results in significant overhead, both in re-initializing host-side resources, as well as in forcing a potentially unnecessary key-frame transmission. Reconfiguring rather than recreating the codec defers the decision of when to dispatch expensive keyframes to the codec, allowing it to e.g. optimize transitions from lossless to lossy encode. BUG=427659,260879,134202 Review URL: https://codereview.chromium.org/846113006 Cr-Commit-Position: refs/heads/master@{#312251}
* Add 8 pixels of padding around each rectangle under VP9.wez2015-01-151-6/+8
| | | | | | | | | | This is required to avoid encoding artefacts. BUG=448265 Review URL: https://codereview.chromium.org/851483005 Cr-Commit-Position: refs/heads/master@{#311583}
* Make callers of CommandLine use it via the base:: namespace.avi2014-12-231-1/+2
| | | | | | | | | | | | Covers jingle/, media/, ppapi/, remoting/, rlz/, skia/, and sync/. BUG=422426 TEST=none TBR=ben@chromium.org Review URL: https://codereview.chromium.org/819203002 Cr-Commit-Position: refs/heads/master@{#309502}
* Enable VP9 tuning for screen content.wez2014-12-161-0/+6
| | | | | | | | | | This allows VP9 to apply e.g. motion-vector heuristics tailored to common desktop UX updates such as scroll and window-dragging. BUG=260879 Review URL: https://codereview.chromium.org/799223002 Cr-Commit-Position: refs/heads/master@{#308521}
* Re-enable key-frames every 10,000 frames.jamiewalch2014-12-091-2/+5
| | | | | | | | | | This works around crbug.com/440223. BUG=440493 Review URL: https://codereview.chromium.org/787973002 Cr-Commit-Position: refs/heads/master@{#307557}
* Disable lossy vp9 testjohannkoenig2014-12-051-2/+6
| | | | | | | | | | | | | With the most recent update to the encoder and the settings in remoting, the test is generating smaller lossless files than lossy. This is because the test requires min/max-q of 20/30 for the lossy encode. BUG=439166 R=wez Review URL: https://codereview.chromium.org/782603003 Cr-Commit-Position: refs/heads/master@{#306967}
* Disable keyframes on vpx.rmsousa2014-11-211-0/+3
| | | | | | | | | | The transport layer is reliable and sequential, so a keyframe in the middle of the stream will never be necessary. Disabling keyframes gives us smoother performance for the common case where the screen isn't changing much between frames. BUG=435300 Review URL: https://codereview.chromium.org/750483002 Cr-Commit-Position: refs/heads/master@{#305304}
* Use cpuused=6 for lossy VP9 modewez2014-10-281-1/+1
| | | | | | | | BUG=260879 Review URL: https://codereview.chromium.org/678073007 Cr-Commit-Position: refs/heads/master@{#301503}
* Standardize usage of virtual/override/final in remoting/dcheng2014-10-218-42/+36
| | | | | | | | | | | | This patch was automatically generated by applying clang fixit hints generated by the plugin to the source tree. BUG=417463 TBR=jamiewalch@chromium.org Review URL: https://codereview.chromium.org/667123002 Cr-Commit-Position: refs/heads/master@{#300472}
* replace OVERRIDE and FINAL with override and final in remoting/mostynb2014-10-088-18/+18
| | | | | | | | BUG=417463 Review URL: https://codereview.chromium.org/628753002 Cr-Commit-Position: refs/heads/master@{#298734}
* Use make_scoped_ptr() in src/remoting.sergeyu2014-10-013-6/+6
| | | | | | | | Also minor code cleanup in daemon_installer_win.cc . Review URL: https://codereview.chromium.org/608343002 Cr-Commit-Position: refs/heads/master@{#297583}
* Cleanup usage of scoped_ptr<> in remoting for C++11sergeyu2014-09-295-12/+12
| | | | | | | | | - Use nullptr to initialize null scoped_ptr(). - use Pass(), PassAs() is no longer required. Review URL: https://codereview.chromium.org/609923004 Cr-Commit-Position: refs/heads/master@{#297236}
* Roll libvpx 42ddeb:55f7bajohannkoenig2014-09-231-2/+1
| | | | | | | | | | | | | | | | | | | libvpx roll: https://codereview.chromium.org/592203002 re-instate image compatibility: https://codereview.chromium.org/588403002 Use new VP9E_SET_NOISE_SENSITIVITY introduced in: https://gerrit.chromium.org/gerrit/gitweb?p=webm%2Flibvpx.git;a=commit;h=bb1a23656c63097a4b250ac484b14051f09df9b5 NOTRY=true R=tomfinegan@chromium.org Review URL: https://codereview.chromium.org/595653003 Cr-Commit-Position: refs/heads/master@{#296285}
* Move common VideoPacket initialization into VideoEncoderHelper.wez2014-09-037-52/+247
| | | | | | | | | | This avoids duplication of common VideoPacket initialization across multiple encoders, making addition of new fields (e.g. the recently added shape field) more robust. Review URL: https://codereview.chromium.org/530243002 Cr-Commit-Position: refs/heads/master@{#293064}
* Switch VP9 lossy encode to CPUUSED=7 and use it by default.wez2014-08-291-5/+4
| | | | | | | | | | Lossy encoding is now reliable enough to be enabled by default when running with VP9. BUG=260879 Review URL: https://codereview.chromium.org/421793003 Cr-Commit-Position: refs/heads/master@{#292680}
* Add manual tests to benchmark VP8 & VP9 encode performance.wez@chromium.org2014-07-013-24/+144
| | | | | | | | BUG=260879 Review URL: https://codereview.chromium.org/349223007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@280753 0039d316-1c4b-4281-b951-d872f2087c98
* Switch to CPUUSED=5 for VP9.wez@chromium.org2014-06-281-3/+2
| | | | | | | | | | | VP9's CPUUSED settings go to 6, but 5 appears to provide the best balance of quality vs performance right now. BUG=260879 Review URL: https://codereview.chromium.org/354943003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@280498 0039d316-1c4b-4281-b951-d872f2087c98
* Clean up VideoEncoderVpx tests.wez@chromium.org2014-05-311-14/+14
| | | | | | | | | | - Rename tests from VideoEncoderVp8Test to VideoEncoderVpxTest. - Update tests to use CreateTestFrame(). - Update tests to mark whole frame as "updated" for encoding. Review URL: https://codereview.chromium.org/307963003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@273991 0039d316-1c4b-4281-b951-d872f2087c98
* Extend VideoControl to allow clients to request lossless modes.wez@chromium.org2014-05-305-45/+164
| | | | | | | | | | | | - Lossless encode/color requests may be ignored by codecs. - VideoEncoderVpx supports lossless color when using VP9. - The --enable-i444 flag now controls the default color mode for VP9. BUG=260879,134202 Review URL: https://codereview.chromium.org/304653002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@273752 0039d316-1c4b-4281-b951-d872f2087c98