This CL introduces two new functions to the WebRtcVideoEncoderFactory interface based on cricket::VideoFormat instead of WebRtcVideoEncoderFactory::VideoCodec. The functions are: WebRtcVideoEncoderFactory::CreateVideoEncoder() and WebRtcVideoEncoderFactory::supported_codecs(). In order to make a smooth transition to the new interface, the old functions are kept, and default implementations are provided for both the old and new functions so that external clients can switch from the old to the new functions in peace. The default implementations will just convert between cricket::VideoFormat and WebRtcVideoEncoderFactory::VideoCodec. Once all external clients have updated their code, the plan is to remove the old functions and all default implementations to make WebRtcVideoEncoderFactory a pure interface again. BUG=webrtc:6402,webrtc:6337 Review-Url: https://codereview.webrtc.org/2449993003 Cr-Commit-Position: refs/heads/master@{#14826}
50 lines
1.6 KiB
C++
50 lines
1.6 KiB
C++
/*
|
|
* Copyright 2015 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef WEBRTC_API_JAVA_JNI_ANDROIDMEDIAENCODER_JNI_H_
|
|
#define WEBRTC_API_JAVA_JNI_ANDROIDMEDIAENCODER_JNI_H_
|
|
|
|
#include <vector>
|
|
|
|
#include "webrtc/api/android/jni/jni_helpers.h"
|
|
#include "webrtc/media/engine/webrtcvideoencoderfactory.h"
|
|
|
|
namespace webrtc_jni {
|
|
|
|
// Implementation of Android MediaCodec based encoder factory.
|
|
class MediaCodecVideoEncoderFactory
|
|
: public cricket::WebRtcVideoEncoderFactory {
|
|
public:
|
|
MediaCodecVideoEncoderFactory();
|
|
virtual ~MediaCodecVideoEncoderFactory();
|
|
|
|
void SetEGLContext(JNIEnv* jni, jobject egl_context);
|
|
|
|
// WebRtcVideoEncoderFactory implementation.
|
|
webrtc::VideoEncoder* CreateVideoEncoder(
|
|
const cricket::VideoCodec& codec) override;
|
|
const std::vector<cricket::VideoCodec>& supported_codecs() const override;
|
|
void DestroyVideoEncoder(webrtc::VideoEncoder* encoder) override;
|
|
|
|
private:
|
|
// Disable overloaded virtual function warning. TODO(magjed): Remove once
|
|
// http://crbug/webrtc/6402 is fixed.
|
|
using cricket::WebRtcVideoEncoderFactory::CreateVideoEncoder;
|
|
|
|
jobject egl_context_;
|
|
|
|
// Empty if platform support is lacking, const after ctor returns.
|
|
std::vector<cricket::VideoCodec> supported_codecs_;
|
|
};
|
|
|
|
} // namespace webrtc_jni
|
|
|
|
#endif // WEBRTC_API_JAVA_JNI_ANDROIDMEDIAENCODER_JNI_H_
|