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

Unified Diff: experimental/conways_life/audio/web_wav_sound_resource.cc

Issue 10928195: First round of dead file removal (Closed) Base URL: https://github.com/samclegg/nativeclient-sdk.git@master
Patch Set: Created 8 years, 3 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
« no previous file with comments | « experimental/conways_life/audio/web_wav_sound_resource.h ('k') | experimental/conways_life/build.scons » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: experimental/conways_life/audio/web_wav_sound_resource.cc
diff --git a/experimental/conways_life/audio/web_wav_sound_resource.cc b/experimental/conways_life/audio/web_wav_sound_resource.cc
deleted file mode 100644
index d1cf3830145eb530e4cd81cc36f88850a1e4d9a7..0000000000000000000000000000000000000000
--- a/experimental/conways_life/audio/web_wav_sound_resource.cc
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright (c) 2011 The Native Client Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "experimental/conways_life/audio/web_wav_sound_resource.h"
-
-#include <string.h>
-#include <algorithm>
-
-#include "experimental/conways_life/web_resource_loader_inl.h"
-#include "ppapi/cpp/instance.h"
-#include "ppapi/cpp/url_response_info.h"
-#include "ppapi/cpp/var.h"
-
-namespace {
-// Wav record descriptor per
-// https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
-#pragma pack(push, 1)
-struct WavRecord {
- // Header.
- char header_id[4]; // Should be "RIFF"
- int32_t record_size; // Should be size of data minus 8
- char format[4]; // Should be "WAVE"
- // Subchunk 1, i.e. format descriptor.
- char format_chunk_id[4]; // Should be "fmt ".
- int32_t format_chunk_size; // Should be 16.
- int16_t audio_format; // Should be 1 for uncompressed audio.
- int16_t num_channels; // 1 for mono, 2 for stereo.
- int32_t sample_rate;
- int32_t byte_rate;
- int16_t block_align;
- int16_t bits_per_sample;
- // Data chunk.
- char data_id[4]; // Should be "data"
- int32_t audio_chunk_size; // Size of sample data that follows.
- char audio_data; // The first byte of actual sound data;
-};
-#pragma pack(pop)
-
-// Parse the headers in the url response and return the length of the
-// resource content ion bytes. Returns 0 in case of error.
-int GetContentLength(const pp::URLResponseInfo response) {
- pp::Var header_var = response.GetHeaders();
- if (!header_var.is_string()) {
- return 0;
- }
-
- static const std::string kContentLengthKey("Content-Length: ");
- std::string headers = header_var.AsString();
- size_t i = headers.find(kContentLengthKey);
- if (i == headers.npos) {
- return 0;
- }
-
- return atoi(headers.substr(i + kContentLengthKey.length()).c_str());
-}
-
-// Verify that the wav data in the buffer is valid and playable with
-// the pepper audio interface.
-bool VerifyWavData(const char* data, size_t data_size) {
- // Do we have enough data.
- if (data_size < sizeof(WavRecord)) {
- printf("Wav data size = %u is too short.\n",
- static_cast<uint32_t>(data_size));
- return false;
- }
-
- const WavRecord* wav = reinterpret_cast<const WavRecord*>(data);
- // Check various chunk formats.
- if (::strncmp(wav->header_id, "RIFF", 4) != 0 ||
- ::strncmp(wav->format, "WAVE", 4) != 0 ||
- ::strncmp(wav->format_chunk_id, "fmt ", 4) != 0 ||
- ::strncmp(wav->data_id, "data", 4) != 0) {
- printf("Did not find 'RIFF', 'WAVE' and 'fmt ' headers in wav data.\n");
- return false;
- }
- // Check that we support the audio format.
- if (wav->sample_rate != 44100 && wav->sample_rate != 48000) {
- printf("Wav sample rate = %i. MNacl only supports 44100 or 48000.\n",
- wav->sample_rate);
- return false;
- }
- if (wav->num_channels != 2 || wav->bits_per_sample != 16) {
- printf("NaCl supports stereo audio and 16-bit per sample at this time.\n");
- return false;
- }
- // Finally, check that the actual data size and wav sample data size match.
- bool check_audio_size = (wav->audio_chunk_size ==
- static_cast<int32_t>(data_size - sizeof(WavRecord) + 1));
- if (!check_audio_size) {
- printf("Wav audio size: actual = %i, expected = %i\n",
- wav->audio_chunk_size,
- static_cast<int>(data_size - sizeof(WavRecord) + 1));
- }
- return check_audio_size;
-}
-
-} // anonymous namespace
-
-
-namespace audio {
-
-WebWavSoundResource::WebWavSoundResource()
- : is_ready_(false),
- wav_data_size_(0),
- received_data_size_(0),
- loader_(NULL) {
-}
-
-WebWavSoundResource::~WebWavSoundResource() {
- Clear();
-}
-
-void WebWavSoundResource::Init(const std::string& url, pp::Instance* instance) {
- assert(wav_data_.empty()); // Can only init once.
- if (wav_data_.empty()) {
- loader_ = new Loader(instance, this);
- loader_->LoadURL(url);
- }
-}
-
-int32_t WebWavSoundResource::GetSampleRate() const {
- assert(IsReady());
- const WavRecord* wav = reinterpret_cast<const WavRecord*>(&wav_data_[0]);
- return wav->sample_rate;
-}
-
-const char* WebWavSoundResource::GetAudioData() const {
- assert(IsReady());
- const WavRecord* wav = reinterpret_cast<const WavRecord*>(&wav_data_[0]);
- return &(wav->audio_data);
-}
-
-size_t WebWavSoundResource::GetAudioDataSize() const {
- assert(IsReady());
- const WavRecord* wav = reinterpret_cast<const WavRecord*>(&wav_data_[0]);
- return wav->audio_chunk_size;
-}
-
-bool WebWavSoundResource::OnWebResourceLoaderCallback(
- Loader::DispatchOpCode op_code, Loader* loader) {
- switch (op_code) {
- case Loader::kUrlResponseInfoReady: {
- int content_length = GetContentLength(loader->GetResponseInfo());
- if (content_length <= 0) {
- // Either the download failed, or the sound data is bad. Abort.
- Clear();
- return false;
- } else {
- // Create a local buffer big enough to receive the sound data.
- wav_data_.reserve(content_length);
- wav_data_size_ = content_length;
- received_data_size_ = 0;
- return true;
- }
- break;
- }
- case Loader::kDataReceived: {
- if (received_data_size_ + loader->data_size() > wav_data_size_) {
- // Size of sound data exceeds expected size. Abort.
- return false;
- } else {
- // Append chunk of data to local sound buffer.
- ::memcpy(&wav_data_[0] + received_data_size_,
- loader->buffer(), loader->data_size());
- received_data_size_ += loader->data_size();
- return true;
- }
- break;
- }
- case Loader::kDownloadComplete: {
- is_ready_ = VerifyWavData(&wav_data_[0], wav_data_size_);
- if (!is_ready_) {
- Clear();
- }
- return true;
- break;
- }
- }
- return false;
-}
-
-void WebWavSoundResource::OnWebResourceLoaderError(int32_t error,
- Loader* loader) {
-}
-
-void WebWavSoundResource::OnWebResourceLoaderDone(Loader* loader) {
- loader_->CloseAndDeleteSelf();
- loader_ = NULL;
-}
-
-void WebWavSoundResource::Clear() {
- is_ready_ = false;
- wav_data_.clear();
- wav_data_size_ = 0;
- received_data_size_ = 0;
- if (loader_) {
- loader_->CloseAndDeleteSelf();
- loader_ = NULL;
- }
-}
-
-} // namespace audio
« no previous file with comments | « experimental/conways_life/audio/web_wav_sound_resource.h ('k') | experimental/conways_life/build.scons » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698