diff options
author | ivankr@chromium.org <ivankr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-25 16:13:24 +0000 |
---|---|---|
committer | ivankr@chromium.org <ivankr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-25 16:13:24 +0000 |
commit | 893e084b19fd06e78cdaa187d21fcabac0e330a1 (patch) | |
tree | 0eecc737ca0fa8bab0c47c5eec6cadbc753fc2a0 /media/webm/chromeos | |
parent | 679facce5dd679ccdc3f00b6dc4414cddf1b2ccc (diff) | |
download | chromium_src-893e084b19fd06e78cdaa187d21fcabac0e330a1.zip chromium_src-893e084b19fd06e78cdaa187d21fcabac0e330a1.tar.gz chromium_src-893e084b19fd06e78cdaa187d21fcabac0e330a1.tar.bz2 |
Add proper duration to WebmEncoder-created files.
BUG=132423
TEST=Manual, encoded video can be looped
Review URL: https://chromiumcodereview.appspot.com/10823006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148335 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/webm/chromeos')
-rw-r--r-- | media/webm/chromeos/webm_encoder.cc | 6 | ||||
-rw-r--r-- | media/webm/chromeos/webm_encoder.h | 3 |
2 files changed, 7 insertions, 2 deletions
diff --git a/media/webm/chromeos/webm_encoder.cc b/media/webm/chromeos/webm_encoder.cc index 0bc52d6..62ddad0 100644 --- a/media/webm/chromeos/webm_encoder.cc +++ b/media/webm/chromeos/webm_encoder.cc @@ -84,7 +84,7 @@ bool WebmEncoder::EncodeFromSprite(const SkBitmap& sprite, fps_.den = fps_d; // Sprite is tiled vertically. - size_t frame_count = sprite.height() / width_; + frame_count_ = sprite.height() / width_; vpx_image_t image; vpx_img_alloc(&image, VPX_IMG_FMT_I420, width_, height_, 16); @@ -124,7 +124,7 @@ bool WebmEncoder::EncodeFromSprite(const SkBitmap& sprite, if (!WriteWebmHeader()) return false; - for (size_t frame = 0; frame < frame_count && !has_errors_; ++frame) { + for (size_t frame = 0; frame < frame_count_ && !has_errors_; ++frame) { int res = libyuv::ConvertToI420( src, src_frame_size, image.planes[VPX_PLANE_Y], image.stride[VPX_PLANE_Y], @@ -183,6 +183,8 @@ bool WebmEncoder::WriteWebmHeader() { { // All timecodes in the segment will be expressed in milliseconds. Ebml_SerializeUnsigned(&ebml_writer_, TimecodeScale, 1000000); + double duration = 1000. * frame_count_ * fps_.den / fps_.num; + Ebml_SerializeFloat(&ebml_writer_, Segment_Duration, duration); } EndSubElement(); // Info diff --git a/media/webm/chromeos/webm_encoder.h b/media/webm/chromeos/webm_encoder.h index 9bae5b9..231a0b0 100644 --- a/media/webm/chromeos/webm_encoder.h +++ b/media/webm/chromeos/webm_encoder.h @@ -70,6 +70,9 @@ class MEDIA_EXPORT WebmEncoder { size_t height_; vpx_rational_t fps_; + // Number of frames in video. + size_t frame_count_; + // VPX config in use. vpx_codec_enc_cfg_t config_; |