| Index: media/bench/bench.cc
|
| diff --git a/media/bench/bench.cc b/media/bench/bench.cc
|
| index 03e9d0fd6d481e484caff429d63ba3694dc953de..529e03f5eb8b8ed9548194e67f555265f5d81348 100644
|
| --- a/media/bench/bench.cc
|
| +++ b/media/bench/bench.cc
|
| @@ -317,12 +317,13 @@ int main(int argc, const char** argv) {
|
| }
|
|
|
| // Buffer used for audio decoding.
|
| - int16* samples =
|
| - reinterpret_cast<int16*>(av_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE));
|
| + scoped_ptr_malloc<int16, media::ScopedPtrAVFree> samples(
|
| + reinterpret_cast<int16*>(av_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE)));
|
|
|
| // Buffer used for video decoding.
|
| - AVFrame* frame = avcodec_alloc_frame();
|
| - if (!frame) {
|
| + scoped_ptr_malloc<AVFrame, media::ScopedPtrAVFree> frame(
|
| + avcodec_alloc_frame());
|
| + if (!frame.get()) {
|
| std::cerr << "Error: avcodec_alloc_frame for "
|
| << in_path << std::endl;
|
| return 1;
|
| @@ -363,7 +364,7 @@ int main(int argc, const char** argv) {
|
| int size_out = AVCODEC_MAX_AUDIO_FRAME_SIZE;
|
|
|
| base::TimeTicks decode_start = base::TimeTicks::HighResNow();
|
| - result = avcodec_decode_audio3(codec_context, samples, &size_out,
|
| + result = avcodec_decode_audio3(codec_context, samples.get(), &size_out,
|
| &packet);
|
| base::TimeDelta delta = base::TimeTicks::HighResNow() - decode_start;
|
|
|
| @@ -373,28 +374,29 @@ int main(int argc, const char** argv) {
|
| read_result = 0; // Force continuation.
|
|
|
| if (output) {
|
| - if (fwrite(samples, 1, size_out, output) !=
|
| + if (fwrite(samples.get(), 1, size_out, output) !=
|
| static_cast<size_t>(size_out)) {
|
| std::cerr << "Error: Could not write "
|
| << size_out << " bytes for " << in_path << std::endl;
|
| return 1;
|
| }
|
| }
|
| +
|
| + const uint8* u8_samples =
|
| + reinterpret_cast<const uint8*>(samples.get());
|
| if (hash_djb2) {
|
| - hash_value = DJB2Hash(reinterpret_cast<const uint8*>(samples),
|
| - size_out, hash_value);
|
| + hash_value = DJB2Hash(u8_samples, size_out, hash_value);
|
| }
|
| if (hash_md5) {
|
| - MD5Update(&ctx, reinterpret_cast<const uint8*>(samples),
|
| - size_out);
|
| + MD5Update(&ctx, u8_samples, size_out);
|
| }
|
| }
|
| } else if (target_codec == CODEC_TYPE_VIDEO) {
|
| int got_picture = 0;
|
|
|
| base::TimeTicks decode_start = base::TimeTicks::HighResNow();
|
| - result = avcodec_decode_video2(codec_context, frame, &got_picture,
|
| - &packet);
|
| + result = avcodec_decode_video2(codec_context, frame.get(),
|
| + &got_picture, &packet);
|
| base::TimeDelta delta = base::TimeTicks::HighResNow() - decode_start;
|
|
|
| if (got_picture) {
|
| @@ -474,8 +476,13 @@ int main(int argc, const char** argv) {
|
| base::TimeDelta total = base::TimeTicks::HighResNow() - start;
|
| LeaveTimingSection();
|
|
|
| + // Clean up.
|
| if (output)
|
| file_util::CloseFile(output);
|
| + if (codec_context)
|
| + avcodec_close(codec_context);
|
| + if (format_context)
|
| + av_close_input_file(format_context);
|
|
|
| // Calculate the sum of times. Note that some of these may be zero.
|
| double sum = 0;
|
|
|