yangkang2021.github.io

webrtc各平台的编码工厂支持情况

webrtc各端都支持vp8,vp9,h264,av1. 但是内部在GPU加速,细分类型,打包格式上面有区别。

内建相关文件:

```
//编码工厂
#include "api/video_codecs/video_decoder_factory.h"          //api定义
#include "api/video_codecs/builtin_video_decoder_factory.h"  //api适配层
#include "media/engine/internal_decoder_factory.h"           //真正的定义

#include "api/video_codecs/video_encoder_factory.h"
#include "api/video_codecs/builtin_video_encoder_factory.h"
#include "media/engine/internal_encoder_factory.h"

//具体编码器类
#include "modules/video_coding/codecs/vp8/include/vp8.h"
#include "modules/video_coding/codecs/vp9/include/vp9.h"
#include "modules/video_coding/codecs/h264/include/h264.h"
#include "modules/video_coding/codecs/av1/include/"
```

SDP获取参数:

    std::vector<SdpVideoFormat> InternalEncoderFactory::SupportedFormats() {
      std::vector<SdpVideoFormat> supported_codecs;
      supported_codecs.push_back(SdpVideoFormat(cricket::kVp8CodecName));
      for (const webrtc::SdpVideoFormat& format : webrtc::SupportedVP9Codecs())
        supported_codecs.push_back(format);
      for (const webrtc::SdpVideoFormat& format : webrtc::SupportedH264Codecs())
        supported_codecs.push_back(format);
      if (kIsLibaomAv1EncoderSupported)
        supported_codecs.push_back(SdpVideoFormat(cricket::kAv1CodecName));
      return supported_codecs;
    }
    
    std::vector<SdpVideoFormat> InternalEncoderFactory::GetSupportedFormats()
        const {
      return SupportedFormats();
    }

内建的对象模型:windows,linux,mac

Android对象模型:全在java层