RTCVideoCodecFactory.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * Copyright 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. #import <Foundation/Foundation.h>
  11. #import <WebRTC/RTCMacros.h>
  12. #import <WebRTC/RTCVideoCodec.h>
  13. NS_ASSUME_NONNULL_BEGIN
  14. /** RTCVideoEncoderFactory is an Objective-C version of webrtc::VideoEncoderFactory. */
  15. RTC_EXPORT
  16. @protocol RTCVideoEncoderFactory <NSObject>
  17. - (nullable id<RTCVideoEncoder>)createEncoder:(RTCVideoCodecInfo *)info;
  18. - (NSArray<RTCVideoCodecInfo *> *)supportedCodecs; // TODO(andersc): "supportedFormats" instead?
  19. @end
  20. /** RTCVideoDecoderFactory is an Objective-C version of webrtc::VideoDecoderFactory. */
  21. RTC_EXPORT
  22. @protocol RTCVideoDecoderFactory <NSObject>
  23. - (nullable id<RTCVideoDecoder>)createDecoder:(RTCVideoCodecInfo *)info;
  24. - (NSArray<RTCVideoCodecInfo *> *)supportedCodecs; // TODO(andersc): "supportedFormats" instead?
  25. @end
  26. #pragma mark - Default factories
  27. /** These codec factories include support for all codecs bundled with WebRTC. If using custom
  28. * codecs, create custom implementations of RTCVideoEncoderFactory and RTCVideoDecoderFactory.
  29. */
  30. RTC_EXPORT
  31. @interface RTCDefaultVideoEncoderFactory : NSObject <RTCVideoEncoderFactory>
  32. @property(nonatomic, retain) RTCVideoCodecInfo *preferredCodec;
  33. + (NSArray<RTCVideoCodecInfo *> *)supportedCodecs;
  34. @end
  35. RTC_EXPORT
  36. @interface RTCDefaultVideoDecoderFactory : NSObject <RTCVideoDecoderFactory>
  37. @end
  38. NS_ASSUME_NONNULL_END