// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_SPEECH_AUDIO_ENCODER_H_
#define COMPONENTS_SPEECH_AUDIO_ENCODER_H_

#include <memory>
#include <string>

#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "components/speech/audio_buffer.h"
#include "third_party/flac/include/FLAC/stream_encoder.h"

class AudioChunk;

class FlacStreamEncoderDeleter {
 public:
  void operator()(FLAC__StreamEncoder* ptr) {
    FLAC__stream_encoder_delete(ptr);
  }
};

// Provides a simple interface to encode raw audio using FLAC codec.
class AudioEncoder {
 public:
  AudioEncoder(int sampling_rate, int bits_per_sample);

  AudioEncoder(const AudioEncoder&) = delete;
  AudioEncoder& operator=(const AudioEncoder&) = delete;

  ~AudioEncoder();

  // Encodes |raw audio| to the internal buffer. Use
  // |GetEncodedDataAndClear| to read the result after this call or when
  // audio capture completes.
  void Encode(const AudioChunk& raw_audio);

  // Finish encoding and flush any pending encoded bits out.
  void Flush();

  // Merges, retrieves and clears all the accumulated encoded audio chunks.
  scoped_refptr<AudioChunk> GetEncodedDataAndClear();

  std::string GetMimeType();
  int GetBitsPerSample();

 private:
  AudioBuffer encoded_audio_buffer_;

  std::unique_ptr<FLAC__StreamEncoder, FlacStreamEncoderDeleter> encoder_;
  bool is_encoder_initialized_;
};

#endif  // COMPONENTS_SPEECH_AUDIO_ENCODER_H_
