summaryrefslogtreecommitdiffstats
path: root/media/webm/chromeos
diff options
context:
space:
mode:
authorivankr@chromium.org <ivankr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-25 16:13:24 +0000
committerivankr@chromium.org <ivankr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-25 16:13:24 +0000
commit893e084b19fd06e78cdaa187d21fcabac0e330a1 (patch)
tree0eecc737ca0fa8bab0c47c5eec6cadbc753fc2a0 /media/webm/chromeos
parent679facce5dd679ccdc3f00b6dc4414cddf1b2ccc (diff)
downloadchromium_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.cc6
-rw-r--r--media/webm/chromeos/webm_encoder.h3
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_;