summaryrefslogtreecommitdiffstats
path: root/media/base
Commit message (Collapse)AuthorAgeFilesLines
...
* Purge net/ and ui/base from media_unittest DEPS.dalecurtis@chromium.org2014-08-022-14/+0
| | | | | | | | | | | | Saves us over 1200 files during compilation!! Also cleans up media_perftests for a smaller savings. BUG=302505 TEST=media_unittests is at ~3000 files now. Review URL: https://codereview.chromium.org/438963005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287189 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for partial append window end trimming.dalecurtis@chromium.org2014-08-023-17/+154
| | | | | | | | | | | | | | Facilitates gapless playback across mp3 and aac. Relying on splice frames and crossfading doesn't work in cases where the prior segment signal diverges to null-padding values too quickly relative to the newly appended segment. BUG=395899 TEST=new unittests. llama-demo works. Review URL: https://codereview.chromium.org/414603002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287174 0039d316-1c4b-4281-b951-d872f2087c98
* Revert "Revert 285479 "Make DataSource::Stop() synchronous.""xhwang@chromium.org2014-08-021-1/+1
| | | | | | | | | | | | | | | This reverts commit aca48d3efdf5ba8a891d6f139fd8ba8db8d69fc2. The original CL didn't cause issue 397656. It's caused by previous CLs and is fixed by r286787. This CL simply reland the original CL. TBR=gbillock@chromium.org BUG=349211, 397656 TEST=Existing tests pass. Review URL: https://codereview.chromium.org/435023002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287136 0039d316-1c4b-4281-b951-d872f2087c98
* Use WeakPtr in media Pipeline callbacks.xhwang@chromium.org2014-07-314-83/+185
| | | | | | | | | | | | | | | | | | | | | | Now we destroy AudioRenderer and VideoRenderer in Pipeline::DoStop(). However, when DoStop() is called, we could have callbacks (e.g. time_cb, ended_cb etc) already posted by AudioRenderer and VideoRenderer. After DoStop(), the Pipeline could be destroyed, executing those previously posted callbacks would cause crash because we bind the callbacks using base::Unretained(this). This CL changes the Pipeline callbacks to use weak pointer instead of base::Unretained(this) so that the previously posted callbacks will be dropped quietly if they are executed after the pipeline is destroyed. Note that weak pointers should only be evaluated on the thread it's created, so I am adding several PostTask() and/or thread check to enforce this. BUG=349211,397656,397582 TEST=All existing tests pass. Review URL: https://codereview.chromium.org/417303004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286787 0039d316-1c4b-4281-b951-d872f2087c98
* Pipeline: Handle the case where Seek() is called after error happened.xhwang@chromium.org2014-07-312-3/+26
| | | | | | | | | | This happened once during local testing where the demuxer is reporting an error. TEST=Added unit test to cover this case. Review URL: https://codereview.chromium.org/433583002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286786 0039d316-1c4b-4281-b951-d872f2087c98
* Disable DemuxerPerfTest.Demuxer on Windows since it takes longer than the ↵jam@chromium.org2014-07-301-1/+7
| | | | | | | | | | | test launcher timeout to run. BUG=399002 TBR=rileya@chromium.org Review URL: https://codereview.chromium.org/425283006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286581 0039d316-1c4b-4281-b951-d872f2087c98
* MediaUrlInterceptor for embedders to handle custom urls.igsolla@chromium.org2014-07-307-28/+140
| | | | | | | | | | | | | | This change adds a MediaUrlInterceptor that content embedders can register to handle custom urls. The MediaUrlInterceptor translates a url into a media file. The motivation for this change is to allow the Android WebView to play media files from the assets in the apk. BUG=387898 Review URL: https://codereview.chromium.org/411353002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286506 0039d316-1c4b-4281-b951-d872f2087c98
* Use validating form of IPC enum macros for media:: types.tsepez@chromium.org2014-07-301-0/+2
| | | | | | | | | | This avoids a NULL deref and a browser DoS should a renderer send an out-of-range type. This is easily hit with the IPC fuzzer but unlikely to occur otherwise. Review URL: https://codereview.chromium.org/421743002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286424 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 285479 "Make DataSource::Stop() synchronous."inferno@chromium.org2014-07-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Causing UAFs on ClusterFuzz BUG=397656 > Make DataSource::Stop() synchronous. > > In a lot of filters in media code, Stop() has been folded into the dtor. > This model doesn't apply directly to DataSource because DataSource::Stop() > is called by the FFmpegDemuxer, but the DataSource is owned by > WebMediaPlayerImpl. > > TBR=gbillock@chromium.org > BUG=349211 > TEST=All existing tests pass. > > Review URL: https://codereview.chromium.org/413243002 TBR=xhwang@chromium.org Review URL: https://codereview.chromium.org/421843004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285858 0039d316-1c4b-4281-b951-d872f2087c98
* Make DataSource::Stop() synchronous.xhwang@chromium.org2014-07-251-1/+1
| | | | | | | | | | | | | | | In a lot of filters in media code, Stop() has been folded into the dtor. This model doesn't apply directly to DataSource because DataSource::Stop() is called by the FFmpegDemuxer, but the DataSource is owned by WebMediaPlayerImpl. TBR=gbillock@chromium.org BUG=349211 TEST=All existing tests pass. Review URL: https://codereview.chromium.org/413243002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285479 0039d316-1c4b-4281-b951-d872f2087c98
* Fold TextRenderer::Stop() into the dtor.xhwang@chromium.org2014-07-245-263/+40
| | | | | | | | | BUG=349211 TEST=All existing tests pass. Review URL: https://codereview.chromium.org/416713002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285213 0039d316-1c4b-4281-b951-d872f2087c98
* Android VideoCapture: catch exception on Android.Camera.SetParameters.mcasas@chromium.org2014-07-231-2/+7
| | | | | | | | | | | | See [1]. [1] http://developer.android.com/reference/android/hardware/Camera.html#setParameters(android.hardware.Camera.Parameters) BUG=b/16370110 Review URL: https://codereview.chromium.org/400933002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285050 0039d316-1c4b-4281-b951-d872f2087c98
* VideoRenderer: Fires all pending callbacks in dtor.xhwang@chromium.org2014-07-231-3/+1
| | | | | | | | | | | This make VideoRenderer consistent with the rest of the media pipeline. BUG=349211 TEST=All existing tests pass. Review URL: https://codereview.chromium.org/414583002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284898 0039d316-1c4b-4281-b951-d872f2087c98
* Fold VideoRenderer::Stop() into the dtor.xhwang@chromium.org2014-07-234-20/+9
| | | | | | | | | BUG=349211 TEST=All existing tests pass. Review URL: https://codereview.chromium.org/409813003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284830 0039d316-1c4b-4281-b951-d872f2087c98
* Have media content and chrome browser tests load data from media/test/datashadi@chromium.org2014-07-222-4/+43
| | | | | | | | | | | | | Update remaining encrypted media browser tests to use new player app. This is similar to r282795 + fix to GN builds. The fix is in media/BUILD.gn file. BUG=379314 Review URL: https://codereview.chromium.org/408993002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284803 0039d316-1c4b-4281-b951-d872f2087c98
* Fold AudioRenderer::Stop() into the dtor.xhwang@chromium.org2014-07-224-22/+6
| | | | | | | | | BUG=349211 TEST=Existing tests pass. Review URL: https://codereview.chromium.org/407583002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284734 0039d316-1c4b-4281-b951-d872f2087c98
* Android media: VideoFrame should not store so many sync points.dongseong.hwang@intel.com2014-07-223-38/+61
| | | | | | | | | | | | | | | | | VideoFrame based on StreamTexture is reused on many frames. However, clients (e.g. compositor, WebGL) inserts a sync point every frame. So VideoFrame on Android can keep several mega byte sync points unnecessarily. This CL makes VideoFrame keep only one sync point. When a client set new sync point to VideoFrame and VideoFrame already keeps the sync point of another client, VideoFrame waits the previous sync point before inserting a new sync point. A client must provide a VideoFrame::SyncPointProvider so that VideoFrame can insert or wait a sync point. BUG=350925 Review URL: https://codereview.chromium.org/312803002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284658 0039d316-1c4b-4281-b951-d872f2087c98
* Make media::AudioRenderer return a media::TimeSource.scherkus@chromium.org2014-07-226-69/+79
| | | | | | | | | | | Mostly mechanical change to finish migrating time-related methods from AudioRenderer to TimeSource. BUG=370634 Review URL: https://codereview.chromium.org/403723006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284598 0039d316-1c4b-4281-b951-d872f2087c98
* Support basic authentication for html5 mediaqinmin@chromium.org2014-07-213-0/+36
| | | | | | | | | | | | | This change passes the basic auth information to android mediaplayer to solve the issue that media with basic auth is not able to play. Previously MediaInfoLoader and MediaResourceGetter could be ran at the same time. However, MediaResourceGetter could miss the credential info if we do that. As a result, we should wait until MediaInfoLoader finishes before creating the browser side MediaPlayer. BUG=319885 Review URL: https://codereview.chromium.org/405663002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284535 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 284489 "Have media content and chrome browser tests load ..."sky@chromium.org2014-07-212-43/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This broke the linux gn bot: http://build.chromium.org/p/chromium.linux/builders/Linux%20GN%20%28dbg%29/builds/9676/steps/compile/logs/stdio [824/4367 | 164.256] CXX obj/media/video/capture/media_unittests.fake_video_capture_device_unittest.o FAILED: ../../third_party/llvm-build/Release+Asserts/bin/clang++ -Wl,--fatal-warnings -m64 -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -B../../third_party/binutils/Linux_x64/Release/bin -Wl,--icf=none -pthread -Wl,-rpath=\\\$ORIGIN/lib/ -Wl,-rpath-link=lib/ -o ffmpeg_unittests -Wl,--start-group @ffmpeg_unittests.rsp -Wl,--end-group -ldl -lasound -lX11 -lXcomposite -lXcursor -lXdamage -lXext -lXfixes -lXi -lXrender -lXss -lXtst -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lnss3 -lnssutil3 -lsmime3 -lplds4 -lplc4 -lnspr4 -lfontconfig -lfreetype -lpangocairo-1.0 -lpango-1.0 -lcairo obj/media/base/media_test_support.test_data_util.o:../../media/base/test_data_util.cc:function media::StartMediaHttpTestServer():error: undefined reference to 'net::BaseTestServer::kLocalhost' obj/media/base/media_test_support.test_data_util.o:../../media/base/test_data_util.cc:function media::StartMediaHttpTestServer():error: undefined reference to 'net::LocalTestServer::LocalTestServer(net::BaseTestServer::Type, std::string const&, base::FilePath const&)' obj/media/base/media_test_support.test_data_util.o:../../media/base/test_data_util.cc:function media::StartMediaHttpTestServer():error: undefined reference to 'net::LocalTestServer::Start()' clang:error: linker command failed with exit code 1 (use -v to see invocation) ... > Have media content and chrome browser tests load data from media/test/data > > Update remaining encrypted media browser tests to use new player app. > > (This is identical to r282795 which got reverted, i.e. revert of revert). > > The fix was submitted separately in r283757 > > BUG=379314 > > Review URL: https://codereview.chromium.org/398823004 TBR=shadi@chromium.org Review URL: https://codereview.chromium.org/405803007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284495 0039d316-1c4b-4281-b951-d872f2087c98
* Have media content and chrome browser tests load data from media/test/datashadi@chromium.org2014-07-212-4/+43
| | | | | | | | | | | | | | Update remaining encrypted media browser tests to use new player app. (This is identical to r282795 which got reverted, i.e. revert of revert). The fix was submitted separately in r283757 BUG=379314 Review URL: https://codereview.chromium.org/398823004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284489 0039d316-1c4b-4281-b951-d872f2087c98
* Switch the input code to use AudioBlockFifo.xians@chromium.org2014-07-212-1/+10
| | | | | | | | | | | | | It saves two memcpy and quite some intermedia AudioBus code. Also, this CL corrects a mistake in https://codereview.chromium.org/389623002/ by using FromInterleavedPartial() instead of FromInterleaved(). BUG=393199 TEST=bots and webrtc loopback test: https://apprtc.appspot.com Review URL: https://codereview.chromium.org/396263004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284477 0039d316-1c4b-4281-b951-d872f2087c98
* Drop time from media::{Audio,Video}Renderer::StartPlayingFrom().scherkus@chromium.org2014-07-185-22/+39
| | | | | | | | | | | | | | | | In preparation for migrating to TimeSource, StartPlayingFrom() is renamed to StartPlaying() with renderers expected to fetch the current time instead of being provided the time. AudioRenderer::SetMediaTime() is temporarily added until we can migrate the interface to being based on TimeSource. BUG=370634 R=xhwang@chromium.org Review URL: https://codereview.chromium.org/400853002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284155 0039d316-1c4b-4281-b951-d872f2087c98
* Introduce media::TimeSource.scherkus@chromium.org2014-07-184-0/+246
| | | | | | | | | | | | | | TimeSource represents the canonical source of time and will eventually replace the time-updating callback from AudioRenderer and VideoRenderer. A wall-clock based implementation is also provided for media pipelines that do not contain any audio. BUG=370634 Review URL: https://codereview.chromium.org/379343005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284122 0039d316-1c4b-4281-b951-d872f2087c98
* Added UMA logging for Video Rotation metadata.suderman@chromium.org2014-07-181-1/+2
| | | | | | | | BUG=47554 Review URL: https://codereview.chromium.org/394373002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283962 0039d316-1c4b-4281-b951-d872f2087c98
* Update SourceBufferStream and its unit tests to always expect valid durations.acolwell@chromium.org2014-07-172-0/+11
| | | | | | | | | | | | | | | | | | | | | This change fixes the SourceBufferStream unit tests so that they always provide valid durations for buffers that it passes to SourceBufferStream. I've also added code to SoureBufferStream to verify that it always gets buffers with valid durations. Minor tweaks to test expectations were needed to compensate for the SourceBufferStream behaving differently when it got actual durations instead of using the durations it made up. In most cases I just used the duration the SourceBufferStream was ultimately using. In a few cases the duration the SourceBufferStream was generating didn't make any sense so I simply changed the expectations to match the new behavior. This is an attempt to reland https://codereview.chromium.org/379693002/ with appropriate crash fixes. Review URL: https://codereview.chromium.org/393403002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283754 0039d316-1c4b-4281-b951-d872f2087c98
* Fold {Audio|Video}Decoder::Stop() into the dtor.xhwang@chromium.org2014-07-163-21/+13
| | | | | | | | | | | | | The Stop() process is already synchronous. This CL folds the Stop() call into the dtor which simplifies a lot of code. TBR=bbudge@chromium.org BUG=349211 TEST=Current unittests pass. Review URL: https://codereview.chromium.org/395703002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283578 0039d316-1c4b-4281-b951-d872f2087c98
* Add a block based Audio FIFO.xians@chromium.org2014-07-163-0/+302
| | | | | | | | | | | | | | | This new AudioBlockFifo() is made for the input code to avoid copying audio data during Push() and Consume(). Contrast to the existing AudioFifo, which requires a AudioBus* as input param for its Push() and Consume() methods to copy the data from/to the FIFO, this new AudioBlockFifo keeps blocks of AudioBus, it accepts interleaved data as input for its Push() method, and its Consume() method return an AudioBus for consumption. So the copy operations in this AudioBlockFifo() is 1 versus 3 in AudioFifo(). NOTRY=true BUG=393199 TEST=media_unittests --gtest_filter="*AudioBlockFifo*" Review URL: https://codereview.chromium.org/389623002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283518 0039d316-1c4b-4281-b951-d872f2087c98
* Revert of Update SourceBufferStream and its unit tests to always expect ↵falken@chromium.org2014-07-162-11/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | valid durations. (https://codereview.chromium.org/379693002/) Reason for revert: This seems to have broken several layout tests: event-attributes.html media-controller-time-clamp.html video-currentTime-delay.html video-currentTime-set.html video-duration-known-after-eos.html video-loop.html video-playbackrate.html video-played-collapse.html video-seek-past-end-paused.html video-seek-past-end-playing.html video-seek-to-duration-with-playbackrate-zero.html See for example this build: http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Mac10.6%20(dbg)/builds/16392 Original issue's description: > Update SourceBufferStream and its unit tests to always expect valid durations. > > This change fixes the SourceBufferStream unit tests so that they always > provide valid durations for buffers that it passes to SourceBufferStream. > I've also added code to SoureBufferStream to verify that it always gets > buffers with valid durations. > > Minor tweaks to test expectations were needed to compensate for the > SourceBufferStream behaving differently when it got actual durations instead > of using the durations it made up. In most cases I just used the duration > the SourceBufferStream was ultimately using. In a few cases the duration > the SourceBufferStream was generating didn't make any sense so I simply > changed the expectations to match the new behavior. > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=283365 TBR=wolenetz@chromium.org,dalecurtis@chromium.org,acolwell@chromium.org NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/392193003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283390 0039d316-1c4b-4281-b951-d872f2087c98
* Update SourceBufferStream and its unit tests to always expect valid durations.acolwell@chromium.org2014-07-162-0/+11
| | | | | | | | | | | | | | | | | | This change fixes the SourceBufferStream unit tests so that they always provide valid durations for buffers that it passes to SourceBufferStream. I've also added code to SoureBufferStream to verify that it always gets buffers with valid durations. Minor tweaks to test expectations were needed to compensate for the SourceBufferStream behaving differently when it got actual durations instead of using the durations it made up. In most cases I just used the duration the SourceBufferStream was ultimately using. In a few cases the duration the SourceBufferStream was generating didn't make any sense so I simply changed the expectations to match the new behavior. Review URL: https://codereview.chromium.org/379693002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283365 0039d316-1c4b-4281-b951-d872f2087c98
* Use SkSrc_Mode in SkCanvasVideoRenderer, to prevent transparent video frames ↵rileya@chromium.org2014-07-164-0/+39
| | | | | | | | | | | from blending with reused image buffer contents. BUG=392733 TEST=SkCanvasVideoRendererTest.TransparentFrame Review URL: https://codereview.chromium.org/388363002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283338 0039d316-1c4b-4281-b951-d872f2087c98
* Remove media::VideoRenderer::SetPlaybackRate() (round 2).scherkus@chromium.org2014-07-144-10/+0
| | | | | | | | | | | | | | | | | | | Video renderers don't need the information as they are already making audio/video synchronization decisions based on a media timeline that already incorporates the current playback rate via the time callback. In particular, VideoRendererImpl only used playback rate to estimate a better duration to sleep until the current frame was ready ... except that in most cases we'd sleep for kIdleTimeDelta and wait until the media timeline had progressed past the current frame's timestamp. In other words, there's absolutely no reason to even try to estimate the sleep duration based on the playback rate. BUG=370634 Review URL: https://codereview.chromium.org/394443003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283072 0039d316-1c4b-4281-b951-d872f2087c98
* Revert of Remove media::VideoRenderer::SetPlaybackRate(). ↵falken@chromium.org2014-07-144-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/384943002/) Reason for revert: Sorry to revert this change. It made the following layout tests flakily fail: media/track/track-cue-rendering-horizontal.html media/track/track-cue-rendering-vertical.html Reverting locally healed the tests. The image diffs show what appears to be a timestamp change (something like 0:18 to 0:19): https://storage.googleapis.com/chromium-layout-test-archives/WebKit_Linux__dbg_/20779/layout-test-results/results.html Original issue's description: > Remove media::VideoRenderer::SetPlaybackRate(). > > Video renderers don't need the information as they are already making > audio/video synchronization decisions based on a media timeline that > already incorporates the current playback rate via the time callback. > > In particular, VideoRendererImpl only used playback rate to estimate > a better duration to sleep until the current frame was ready ... > except that in most cases we'd sleep for kIdleTimeDelta and wait > until the media timeline had progressed past the current frame's > timestamp. In other words, there's absolutely no reason to even try > to estimate the sleep duration based on the playback rate. > > BUG=370634 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=282797 TBR=xhwang@chromium.org,scherkus@chromium.org NOTREECHECKS=true NOTRY=true BUG=370634 Review URL: https://codereview.chromium.org/390733002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282891 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 282795 "Have media content and chrome browser tests load ..."shadi@google.com2014-07-122-43/+4
| | | | | | | | | | | | | | | | | | | | It broke browser tests. Probably need to update isolate files to fix it... > Have media content and chrome browser tests load data from media/test/data > > With media files copied over to media/test/data, this CL makes media related content browser tests and chrome browser tests load test data from one location. > > The location is common with media unit tests data forder; managed in one place in media/base/test_data_util.h > > BUG=379314 > > Review URL: https://codereview.chromium.org/357413002 TBR=shadi@chromium.org Review URL: https://codereview.chromium.org/383063009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282812 0039d316-1c4b-4281-b951-d872f2087c98
* Some cleanup in PipelineTest.xhwang@chromium.org2014-07-121-70/+74
| | | | | | | | | | | | | | | Do not call Pipeline::On{Audio|Video}RendererEnded() because it's pipeline's implementation detail and will go away. Instead, let the mock renderers call the ended_cb. Also rename several helper functions to reflect what they really do. BUG=392259 TEST=All current tests pass. Review URL: https://codereview.chromium.org/388763003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282798 0039d316-1c4b-4281-b951-d872f2087c98
* Remove media::VideoRenderer::SetPlaybackRate().scherkus@chromium.org2014-07-124-10/+0
| | | | | | | | | | | | | | | | | | | Video renderers don't need the information as they are already making audio/video synchronization decisions based on a media timeline that already incorporates the current playback rate via the time callback. In particular, VideoRendererImpl only used playback rate to estimate a better duration to sleep until the current frame was ready ... except that in most cases we'd sleep for kIdleTimeDelta and wait until the media timeline had progressed past the current frame's timestamp. In other words, there's absolutely no reason to even try to estimate the sleep duration based on the playback rate. BUG=370634 Review URL: https://codereview.chromium.org/384943002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282797 0039d316-1c4b-4281-b951-d872f2087c98
* Have media content and chrome browser tests load data from media/test/datashadi@chromium.org2014-07-122-4/+43
| | | | | | | | | | | | With media files copied over to media/test/data, this CL makes media related content browser tests and chrome browser tests load test data from one location. The location is common with media unit tests data forder; managed in one place in media/base/test_data_util.h BUG=379314 Review URL: https://codereview.chromium.org/357413002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282795 0039d316-1c4b-4281-b951-d872f2087c98
* Zero initialize the first allocation of a VideoFrame.dalecurtis@chromium.org2014-07-122-3/+19
| | | | | | | | | | | | Replicates FFmpeg's behavior for frame allocation. They do not zero the frame on subsequent pool reuse, so I have not done so either. BUG=390941,390944,390945 TEST=new unittest. Review URL: https://codereview.chromium.org/383893002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282775 0039d316-1c4b-4281-b951-d872f2087c98
* Skip to enter the fullscreen automatically when hole-punching is enabled.ycheo@chromium.org2014-07-113-1/+18
| | | | | | | | BUG=391724 Review URL: https://codereview.chromium.org/378543002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282588 0039d316-1c4b-4281-b951-d872f2087c98
* Add a ref counted audio bus.rkc@chromium.org2014-07-112-1/+32
| | | | | | | | | | | For some applications where we need to keep multiple copies of the audio bus around (particularly in STL containers), a scoped_ptr to an audio bus isn't enough. For those rare situations, we're adding a RefCounted version of the AudioBus. R=dalecurtis@chromium.org BUG=None. Review URL: https://codereview.chromium.org/388563005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282510 0039d316-1c4b-4281-b951-d872f2087c98
* Allow AudioRendererMixerInputs to be restarted after stopped.dalecurtis@chromium.org2014-07-113-11/+23
| | | | | | | | | | | | | | | | | | | | | We probably shouldn't allow this, but it's currently relied upon by the WebAudio code and cleaning it up is a big deal: http://crbug.com/151051. The AudioRendererSink interface does not specify that after Stop() the sink can no longer be used. All other sinks allow restart, so this is just keeping with the pace. In http://crrev.com/280502 I conflated the one-stop-only mechanics of AudioRenderer:Stop() with those of AudioRendererSink::Stop(). This patch reverts that mistake while keeping the fixes for the original issue. BUG=389204,390977 TEST=new unittest. Review URL: https://codereview.chromium.org/381823003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282481 0039d316-1c4b-4281-b951-d872f2087c98
* Update to Pipeline Metadata and Decoder streamsuderman@chromium.org2014-07-108-1/+40
| | | | | | | | | | | to track the set of video rotation metadata. This will later be used to correctly orient rotated videos. BUG=47554 Review URL: https://codereview.chromium.org/363813002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282236 0039d316-1c4b-4281-b951-d872f2087c98
* Rename media::Clock to media::TimeDeltaInterpolator and update API.scherkus@chromium.org2014-07-1010-347/+290
| | | | | | | | | | | Mostly cosmetic API changes. The guts of TimeDeltaInterpolator were spruced up a bit. BUG=370634 Review URL: https://codereview.chromium.org/376013003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282186 0039d316-1c4b-4281-b951-d872f2087c98
* Android VideoCapture: Use max frame rate instead of min for CaptureFormat ↵mcasas@chromium.org2014-07-091-1/+1
| | | | | | | | | | enumeration. BUG=390884 Review URL: https://codereview.chromium.org/379813003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282115 0039d316-1c4b-4281-b951-d872f2087c98
* Pipeline: Call clock_->SetTime() right before StartPlayingFrom().xhwang@chromium.org2014-07-092-13/+10
| | | | | | | | | | | | | | | | | | | | | Currently we call clock_->SetTime() before we flush the renderers. This CL moves it to right before we call StartPlayingFrom(start_timestamp_). This makes it easier in a later CL to hide all clock logic into a new Renderer implementation. This CL also fixed the PipelineTest.Seek test. Originally we AddTextStream() in the text which causes a TextRenderer::Read(). But we never satisfy or abort that Read(). This caused TextRenderer::Pause() to never return the completion callback. Therefore, the pipeline seek process never finishes. This test was passing because we SetTime() before we DoSeek(). Now I moved SetTime() after DoSeek() and this issue is exposed. BUG=392259 TEST=All existing tests pass. Review URL: https://codereview.chromium.org/377003002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281938 0039d316-1c4b-4281-b951-d872f2087c98
* Remove duration from media::Clock.scherkus@chromium.org2014-07-096-109/+22
| | | | | | | | | | | It has no business being in there. Instead let Pipeline track duration and cap interpolated time values as needed. BUG=370634 Review URL: https://codereview.chromium.org/375003002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281935 0039d316-1c4b-4281-b951-d872f2087c98
* Fixes for re-enabling more MSVC level 4 warnings: media/ editionpkasting@chromium.org2014-07-083-6/+6
| | | | | | | | | | | | | | | | | This contains fixes for the following sorts of issues: * Signedness mismatch * Assignment inside conditional * Possibly-uninitialized local variable This also contains a small number of other cleanups/simplifications to nearby code. BUG=81439 TEST=none Review URL: https://codereview.chromium.org/377803004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281888 0039d316-1c4b-4281-b951-d872f2087c98
* Set buffering state variable even when Pipeline underflow is disabled.scherkus@chromium.org2014-07-081-5/+6
| | | | | | | | | | | | | r389104 added both a DCHECK to verify buffering state as well as a new way to disable underflow logic for Pipeline. In debug valgrind builds it became possible to underflow and hit the DCHECK since the variable was never updated. BUG=389104 Review URL: https://codereview.chromium.org/372013002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281654 0039d316-1c4b-4281-b951-d872f2087c98
* Fold Pipeline's initial prerolling state into the playing state.scherkus@chromium.org2014-07-082-41/+31
| | | | | | | | | | | It's no longer needed now that all renderers have moved towards buffering state callbacks. BUG=144683 Review URL: https://codereview.chromium.org/361243007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281619 0039d316-1c4b-4281-b951-d872f2087c98
* Third attempt of fixing narrowing error for TAG.thakis@chromium.org2014-07-071-2/+4
| | | | | | | | | | | | | | | | | | | Previous attempt: https://codereview.chromium.org/377443004/ Before the uint32 cast (which is needed to prevent integer promotion from turning this into a signed int), the bytes need to be cast to uint8 so that sign extension is done correctly. (Keeping this a macro for now since else this would have to be a constexpr function, and we don't use c++11 yet.) BUG=82385 TBR=acolwell@chromium.org NOTRY=true Review URL: https://codereview.chromium.org/372053002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281587 0039d316-1c4b-4281-b951-d872f2087c98