blob: 820651f177d62e25757e7cb415813a758ea44214 [file] [log] [blame]
ossua1a040a2017-04-06 10:03:21 -07001/*
2 * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
ossueb1fde42017-05-02 06:46:30 -070011#ifndef WEBRTC_API_AUDIO_CODECS_AUDIO_ENCODER_FACTORY_H_
12#define WEBRTC_API_AUDIO_CODECS_AUDIO_ENCODER_FACTORY_H_
ossua1a040a2017-04-06 10:03:21 -070013
14#include <memory>
15#include <vector>
16
ossueb1fde42017-05-02 06:46:30 -070017#include "webrtc/api/audio_codecs/audio_encoder.h"
ossua1a040a2017-04-06 10:03:21 -070018#include "webrtc/api/audio_codecs/audio_format.h"
Edward Lemurc20978e2017-07-06 19:44:34 +020019#include "webrtc/rtc_base/refcount.h"
ossua1a040a2017-04-06 10:03:21 -070020
21namespace webrtc {
22
23// A factory that creates AudioEncoders.
24// NOTE: This class is still under development and may change without notice.
25class AudioEncoderFactory : public rtc::RefCountInterface {
26 public:
27 // Returns a prioritized list of audio codecs, to use for signaling etc.
28 virtual std::vector<AudioCodecSpec> GetSupportedEncoders() = 0;
29
30 // Returns information about how this format would be encoded, provided it's
31 // supported. More format and format variations may be supported than those
32 // returned by GetSupportedEncoders().
33 virtual rtc::Optional<AudioCodecInfo> QueryAudioEncoder(
34 const SdpAudioFormat& format) = 0;
35
36 // Creates an AudioEncoder for the specified format. The encoder will tags its
37 // payloads with the specified payload type.
38 // TODO(ossu): Try to avoid audio encoders having to know their payload type.
39 virtual std::unique_ptr<AudioEncoder> MakeAudioEncoder(
40 int payload_type,
41 const SdpAudioFormat& format) = 0;
42};
43
44} // namespace webrtc
45
ossueb1fde42017-05-02 06:46:30 -070046#endif // WEBRTC_API_AUDIO_CODECS_AUDIO_ENCODER_FACTORY_H_