Home | History | Annotate | Download | only in webm
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef MEDIA_FORMATS_WEBM_WEBM_AUDIO_CLIENT_H_
      6 #define MEDIA_FORMATS_WEBM_WEBM_AUDIO_CLIENT_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "media/base/media_log.h"
     12 #include "media/formats/webm/webm_parser.h"
     13 
     14 namespace media {
     15 class AudioDecoderConfig;
     16 
     17 // Helper class used to parse an Audio element inside a TrackEntry element.
     18 class WebMAudioClient : public WebMParserClient {
     19  public:
     20   explicit WebMAudioClient(const LogCB& log_cb);
     21   virtual ~WebMAudioClient();
     22 
     23   // Reset this object's state so it can process a new audio track element.
     24   void Reset();
     25 
     26   // Initialize |config| with the data in |codec_id|, |codec_private|,
     27   // |is_encrypted| and the fields parsed from the last audio track element this
     28   // object was used to parse.
     29   // Returns true if |config| was successfully initialized.
     30   // Returns false if there was unexpected values in the provided parameters or
     31   // audio track element fields.
     32   bool InitializeConfig(const std::string& codec_id,
     33                         const std::vector<uint8>& codec_private,
     34                         const int64 seek_preroll,
     35                         const int64 codec_delay,
     36                         bool is_encrypted,
     37                         AudioDecoderConfig* config);
     38 
     39  private:
     40   // WebMParserClient implementation.
     41   virtual bool OnUInt(int id, int64 val) OVERRIDE;
     42   virtual bool OnFloat(int id, double val) OVERRIDE;
     43 
     44   LogCB log_cb_;
     45   int channels_;
     46   double samples_per_second_;
     47   double output_samples_per_second_;
     48 
     49   DISALLOW_COPY_AND_ASSIGN(WebMAudioClient);
     50 };
     51 
     52 }  // namespace media
     53 
     54 #endif  // MEDIA_FORMATS_WEBM_WEBM_AUDIO_CLIENT_H_
     55