Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: media/base/audio_buffer_unittest.cc

Issue 251893002: Support start trimming post-decoding. Use it with FFmpegDemuxer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/audio_buffer_unittest.cc
diff --git a/media/base/audio_buffer_unittest.cc b/media/base/audio_buffer_unittest.cc
index c40c076bd5e8ee73c224df4db6b972f0c00fea84..09da83e5fa45973c2ab8da63f6c60b2ee31c3068 100644
--- a/media/base/audio_buffer_unittest.cc
+++ b/media/base/audio_buffer_unittest.cc
@@ -358,4 +358,49 @@ TEST(AudioBufferTest, Trim) {
EXPECT_EQ(buffer->duration(), base::TimeDelta::FromSeconds(0));
}
+TEST(AudioBufferTest, TrimRange) {
+ const ChannelLayout channel_layout = CHANNEL_LAYOUT_4_0;
+ const int channels = ChannelLayoutToChannelCount(channel_layout);
+ const int frames = 100;
+ const base::TimeDelta start_time;
+ const base::TimeDelta duration = base::TimeDelta::FromSeconds(frames);
wolenetz 2014/04/29 19:18:08 Do you really intend duration to be 100 seconds, e
DaleCurtis 2014/04/30 22:04:04 Fixed here https://codereview.chromium.org/2615330
+ const float step = 1.0f;
+ scoped_refptr<AudioBuffer> buffer =
+ MakeAudioBuffer<float>(kSampleFormatPlanarF32,
wolenetz 2014/04/29 19:18:08 TrimRange does fancy mem ops depending on planar v
DaleCurtis 2014/04/30 22:04:04 Done.
+ channel_layout,
+ channels,
+ kSampleRate,
+ 0,
+ step,
+ frames,
+ start_time,
+ duration);
+ EXPECT_EQ(frames, buffer->frame_count());
+ EXPECT_EQ(start_time, buffer->timestamp());
+ EXPECT_EQ(frames, buffer->duration().InSeconds());
+
+ scoped_ptr<AudioBus> bus = AudioBus::Create(channels, frames);
+
+ const int trim_start = 25;
+ const int trim_length = 50;
+
+ // Verify the first 25 frames before trimming.
+ buffer->ReadFrames(trim_start, 0, 0, bus.get());
+ VerifyResult(bus->channel(0), trim_start, 0, step);
wolenetz 2014/04/29 19:18:08 TrimRange's fancy mem ops could use additional ver
DaleCurtis 2014/04/30 22:04:04 Done.
+
+ // Trim frames from the middle of the buffer.
+ buffer->TrimRange(trim_start, trim_start + trim_length);
+ EXPECT_EQ(buffer->frame_count(), frames - trim_length);
+ EXPECT_EQ(buffer->timestamp(), start_time);
+ EXPECT_EQ(buffer->duration(), base::TimeDelta::FromSeconds(50));
wolenetz 2014/04/29 19:18:08 I don't understand why an AudioBuffer could be giv
DaleCurtis 2014/04/29 20:46:35 Generally the duration will only be off by a micro
DaleCurtis 2014/04/30 22:04:04 Fixed here: https://codereview.chromium.org/261533
+
+ // Verify the first 25 frames.
+ buffer->ReadFrames(trim_start, 0, 0, bus.get());
+ VerifyResult(bus->channel(0), trim_start, 0, step);
wolenetz 2014/04/29 19:18:08 ditto: verify all channels
DaleCurtis 2014/04/30 22:04:04 Done.
+
+ // Verify the next 25 frames.
+ buffer->ReadFrames(trim_start, trim_start, 0, bus.get());
+ VerifyResult(bus->channel(0), trim_start, trim_start + trim_length, step);
wolenetz 2014/04/29 19:18:08 ditto
DaleCurtis 2014/04/30 22:04:04 Done.
+}
+
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698