diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-27 18:28:06 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-27 18:28:06 +0000 |
commit | cf8a3ca85acf493baf39650dc1b1bb70c1341948 (patch) | |
tree | de9e3c1f6132502bb5188010ab0fb6a9f1843e7d /media/media.gyp | |
parent | 5e59a06c7fc05e7d89e2c0b5f5ee14290ac73fd8 (diff) | |
download | chromium_src-cf8a3ca85acf493baf39650dc1b1bb70c1341948.zip chromium_src-cf8a3ca85acf493baf39650dc1b1bb70c1341948.tar.gz chromium_src-cf8a3ca85acf493baf39650dc1b1bb70c1341948.tar.bz2 |
Refactor PTS processing logic from FFmpegVideoDecoder::FindPtsAndDuration() into PtsStream.
This simplifies its reuse in other video decoders. An instance of this class is added to OmxVideoDecoder filter.
The PTS processing is mostly left intact. The only difference is addition of PtsStream::Seek() method, which
resets the current PTS. Without this method seeking brakes AV synchronization if the video decoder relies on last
known PTS and frame rate to calculate timestamps for decoded frames.
Patch by ostrovsm@gmail.com:
http://codereview.chromium.org/6902032/
BUG=none
TEST=The easiest way I found to reproduce the problem is to use an .avi file. It doesn't happen all the time but
sometimes AVI demuxer reports invalid timestamps for video packets, and the decoder heavily relies on the PTS
estimation logic (last PTS + frame rate). A sample file that triggers the behavior can be downloaded from [1].
The FFmpeg library has to be reconfigured to support MPEG4 decoding and AVI demuxing. Also to simplify the
experiment "video/x-msvideo" has to be added to the list of supported media types in net/base/mime_util.cc.
[1] http://www.dvdloc8.com/clip.php?movieid=284&clipid=1
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83180 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/media.gyp')
-rw-r--r-- | media/media.gyp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/media/media.gyp b/media/media.gyp index 31961e8..a72afde 100644 --- a/media/media.gyp +++ b/media/media.gyp @@ -116,6 +116,8 @@ 'base/pipeline_status.h', 'base/pts_heap.cc', 'base/pts_heap.h', + 'base/pts_stream.cc', + 'base/pts_stream.h', 'base/seekable_buffer.cc', 'base/seekable_buffer.h', 'base/state_matrix.cc', @@ -375,6 +377,7 @@ 'base/mock_task.h', 'base/pipeline_impl_unittest.cc', 'base/pts_heap_unittest.cc', + 'base/pts_stream_unittest.cc', 'base/run_all_unittests.cc', 'base/seekable_buffer_unittest.cc', 'base/state_matrix_unittest.cc', |