| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
pipeline.
BUG=16059
TEST=none
Review URL: http://codereview.chromium.org/171018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23514 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
initialization.
This mostly affects test_shell as NullAudioRenderer is only used with chrome when passing --disable-audio.
BUG=13907
TEST=test should crash less
Review URL: http://codereview.chromium.org/172018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23507 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=18970
TEST=play a video with no audio hardware, verify that UI changes
Review URL: http://codereview.chromium.org/169010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23491 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=16020
TEST=test with all media types and ensure there are no memory leaks are functional differences from previous version.
Review URL: http://codereview.chromium.org/160529
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23455 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A new method HasEnded() was added to renderer interfaces. Renderers return true when they have both received and rendered an end-of-stream buffer. For audio this translates to sending the very last buffer to the hardware. For video this translates to displaying a black frame after the very last frame has been displayed.
Renderers can notify the pipeline that the value of HasEnded() has changed to true via FilterHost::NotifyEnded(). Instead of tracking which renderers have called NotifyEnded(), the pipeline uses the notification to poll every renderer. The ended callback will only be executed once every renderer returns true for HasEnded(). This has a nice benefit of being able to ignore extra NotifyEnded() calls if we already determine the pipeline has ended.
With the changes to WebMediaPlayerImpl, we should now properly support both the ended event and looping.
BUG=16768,17970,18433,18846
TEST=media_unittests, media layout tests, ended event, timeupdate should stop firing, looping should work, seeking after video ends
Review URL: http://codereview.chromium.org/164403
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23255 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=17415
TEST=options menu has no greyed out items in it. about box date updated.
Review URL: http://codereview.chromium.org/164334
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23067 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AudioRendererHost should use ViewMsg_AudioStreamState to
notify renderer of its state instead of AudioOutputStream::State.
The enum of AudioOutputStream::State is not used anywhere, thus
removed.
TEST=unit_tests --gtest_filter=Audio*
Review URL: http://codereview.chromium.org/165255
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23061 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=18208,18726
TEST=none
Review URL: http://codereview.chromium.org/165270
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23038 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=18362
TEST=none
Review URL: http://codereview.chromium.org/164031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22974 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
and then the player exits.
This will be useful for testing and gathering metrics.
Test code has been added (but disabled) to time the full execution of the tool, so that pipeline latency can be measured and compared to Chrome.
Review URL: http://codereview.chromium.org/123011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22948 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=18441
TEST=play a low framerate video or under low rate and verify it stays synced
Review URL: http://codereview.chromium.org/160620
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22683 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We should a local reference of the input buffer, so that buffer
gets cleanup after it is out of scope.
Also disabled AudioUtilTest.FoldChannels_s16_benchmark because
it is running too long. It shold be run locally instead of on
the build bots.
TEST=media_unittests --gtest_filter=AudioRendererBaseTest.OneCompleteReadCycle
TBR=scherkus
Review URL: http://codereview.chromium.org/165087
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22671 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=18434
TEST=AudioRendererBaseTest.CompleteLifeTime
This patch fixes the busy looping and leaks by ignore the
end-of-stream packet.
Review URL: http://codereview.chromium.org/165023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22654 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/165026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22652 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=17481
TEST=media_unittests
Introduced a mesage broadcasting mechanism to notify filters of events from
another filter. In particular this is used to notify all filters that the
audio device has failed and special actions should be taken to handle it. In
this case, demuxer should disable the audio stream and should free the demuxed
audio packets instead of caching them. This will fix the memory leak that
happens if audio device fails during playback.
Review URL: http://codereview.chromium.org/159845
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22630 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
Changes the threading model from one thread per stream to one shared thread. Also, redoes the alsa reading/buffering logic to assume an asynchronous data source, and respect the different packet sizes. The Alsa device is set to non-blocking now. State transitions are cleaned up, and the threading semantics are reworked. Now linux audio will no longer crash on shutdown, seek, pause, or tab close. This implementation does still leak though. :( The leak will be fixed in another CL.
Review URL: http://codereview.chromium.org/160497
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22414 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=16011
TEST=audio_renderer_base_unittest.cc and buffer_queue_unittest.cc
Review URL: http://codereview.chromium.org/155695
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22237 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=18046
TEST=media_unittests --gtest_filter=FFmpegDemuxerTest.ProtocolRead
FFmpeg may read over the size of a file. When it happens we
should return AVERROR_EOF.
Review URL: http://codereview.chromium.org/159679
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22133 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=16056
TEST=LayoutTests/media/video-buffered.html
The current implementation of the buffered attribute for <video> and <audio>
is broken. There are several problems around this attribute:
1. We don't have any caching on disk, so we only keep a recent range of bytes
close to current playback position.
2. WebKit reports buffered as one range (0, max_time_buffered). But we only
cache a short partial range which doesn't start with 0. The correct
implementation is a list of ranges buffered. But this has to go into WebKit
first.
3. We don't have an accurate mapping between byte offset < - > timestamp.
So the current implementation is to lie about what we have buffered. We always
say we have buffered everything before the current download position. And we
only report one range. The calculation of time is also based on scaling the
duration with current buffered bytes.
Review URL: http://codereview.chromium.org/160300
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22087 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=16738
TEST=pipeline_impl_unittest.cc
Review URL: http://codereview.chromium.org/160298
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22075 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch will enable BufferedDataSource to support servers with
no range request support. It will start a probe request of 1 byte
size besides the regular request. If the server does not support
range request, we will turn on the is_streamed flag of FFmpeg and
will not do any seeking.
BUG=17628
TEST=test_shell_tests --gtest_filter=BufferedDataSource.*
Review URL: http://codereview.chromium.org/160076
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21999 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
I considered adding duration to Clock itself, but that felt like it would pollute Clock's simple purposes of keeping track of time. Furthermore, by keeping duration checking in PipelineImpl we can handle future scenarios such as streaming media where clock really should run forever.
BUG=16508
TEST=currentTime should never exceed duration
Review URL: http://codereview.chromium.org/159573
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21937 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
This is a temporary fix to a much larger problem of dealing with Chrome's audio IPC layer. Since a seek is a small amount of time, we keep the audio IPC conversation going by writing 8k of zeros. Before we were telling the audio IPC layer that we were out of data, which technically was a lie (we were just seeking), and as a result the conversation died at that point.
TEST=seek around in a video, audio should keep playing and remain in sync
BUG=17917
Review URL: http://codereview.chromium.org/160283
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21935 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
TEST=media bear tests should start passing again
BUG=none
Review URL: http://codereview.chromium.org/160295
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21907 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/160288
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21891 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
happened."
TBR=kylep
Review URL: http://codereview.chromium.org/160287
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21885 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
More or less a change to pull out time management from PipelineImpl into a new class ClockImpl. Biggest difference is ClockImpl will use the system clock + linear interpolation to provide a more "precise" representation of the current playback position.
BUG=16508
TEST=a/v sync should remain the same, currentTime should report more precise values
Review URL: http://codereview.chromium.org/159517
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21882 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=16738
TEST=pipeline_impl_unittest.cc
Review URL: http://codereview.chromium.org/159373
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21877 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
sync.
If we have a freshly opened AVFormatContext, telling it to seek to the beginning (pts=0) apparently causes the video and/or audio streams to get timestampped incorrectly, causing video sync issues. If the video has been playing a bit, a seek to the beginning causes no issues. Go figure.
BUG=17832
TEST=ogg videos should remain in sync
Review URL: http://codereview.chromium.org/159438
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21720 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=16026
TEST=play a movie trailer with 5.1 audio. It should sound roughly the same as quicktime.
Review URL: http://codereview.chromium.org/155894
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21613 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MediaFilter now has asynchronous Play() and Pause() methods that are implemented by default. Since we are a completely pull-based system, it turns out only AudioRendererBase and VideoRendererBase need to override them to halt reading from decoders.
When a seek is received by the pipeline, it goes through the following state transitions:
1) Playing -> Pausing -> Paused (notify filters to stop reading)
2) Paused -> Seeking (notify filters to flush buffers and preroll)
3) Seeking -> Playing (preroll completed, resume playback)
The key to this system is that there must be no pending reads in *any* filter when we start transitioning into the seeking state. That means the audio/video renderers do not complete their pausing->paused transition until they have completed all pending reads. To reiterate, since we're pulled based if the renderers are not reading any data, then *nothing* is happening in the pipeline.
We get a lot of nice benefits from this assertion, namely no callbacks are ever "lost", they are always replied to until we are fully paused. Furthermore, we can guarantee that the first buffer received after a Seek() will be guaranteed to be discontinuous.
This change also properly handles end-of-stream, seeking from an end-of-stream state, and displaying frames while paused. In summary, I was able to call Seek() in a while(true) loop without crashing or going out of sync.
BUG=16014,16021,17456
TEST=seeking should be way more robust
Review URL: http://codereview.chromium.org/160005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21611 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=17709
TEST=None
Review URL: http://codereview.chromium.org/159380
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21602 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
thread-UNsafeness and confusion.
Long story short: there's no reason to split an implementation of class between two classes. The data was being held in one class, with the other class accessing it privately without acquiring the lock. Really, really painful to debug as well.
Now we have a unified implementation of Pipeline that takes care of client API requests as well as filter interaction.
Since Pipeline is properly reference counted and there are two less objects to worry about, the crash reported in 3.0.195.1 should also be resolved.
BUG=17107,17548
TEST=pipeline tests, media player and chrome ui tests
Review URL: http://codereview.chromium.org/159246
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21464 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=16023
TEST=play a multichannel audio video and it should play with audio muted
Review URL: http://codereview.chromium.org/155937
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21357 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
FileDataSource broke the linux valgrind build because the callback
for read was not deleted.
TBR=scherkus
Review URL: http://codereview.chromium.org/159234
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21335 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. FFmpegGlue now taks a FFmpegProtocol instead of DataSource as input
2. FFmpegDemuxr implements FFmpegProtocol and does the blocking read and submit asynchronous read request to DataSource (with unit tests)
3. Changed SimpleDataSource to work with asynchronous read (with unit tests)
4. Reimplemented BufferedDataSource to work with asynchronous read (with unit tests)
5. Moved BufferedDataSource from chrome/renderer/media to webkit/glue/media (for faster build/debug and better coverage in automated testing)
TEST=BufferedDataSourceTest.*, SimpleDataSourceTest.*, FFmpegDemuxerTest.*
Review URL: http://codereview.chromium.org/149567
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21326 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
added complexity.
PipelineInternal now directly implements FilterHost and uses an std::map to safely cast from MediaFilter to specialized filter subclasses.
PipelineImpl also provides the same set of functions as FilterHost to allow PiplineInternal to acquire the lock and safely update data.
BUG=17107
TEST=media_unittests should still pass
Review URL: http://codereview.chromium.org/155739
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21287 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Re-trying the previous CL. The last change got reverted because of valgrind
failure.
TBR=scherkus
Original CL: http://codereview.chromium.org/155471
Review URL: http://codereview.chromium.org/159167
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21242 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
| |
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21217 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
server, but not buildbot. doh
BUG=17304
TEST=buildbot has different warnings than try server. this patch reenables the qtfaststart build with 2 warnings fixed.
Review URL: http://codereview.chromium.org/155834
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21215 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
| |
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21212 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
TBR=scherkus
Review URL: http://codereview.chromium.org/159122
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21154 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/159121
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21153 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
startup latency.
This version handles 'free' atoms, which are produced by mp4box and other tools, but impact ffmpeg seeks on playback.
The code follows ffmpeg coding standards.
BUG=17304
TEST=instrument seeks or measure latency performance and play videos with and without qt-faststart applied to the data.
Review URL: http://codereview.chromium.org/149439
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21150 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=17283
TRY=play multichannel audio (ie trek6.mp4) in media player and a crash occurs. This fix avoids the crash.
Review URL: http://codereview.chromium.org/159099
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21138 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/155471
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21137 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=16500
TEST=play youtube in different window. play another video with video tag and mute sound and make sure it does not affect youtube.
Review URL: http://codereview.chromium.org/159092
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21091 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=17107
TEST=none
Review URL: http://codereview.chromium.org/155713
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21044 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=17107
TEST=none
Review URL: http://codereview.chromium.org/155711
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21013 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=audio should decode again
Review URL: http://codereview.chromium.org/155703
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20993 0039d316-1c4b-4281-b951-d872f2087c98
|