SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4835|回复: 1
打印 上一主题 下一主题

[webrtc] webrtc修改汇总

[复制链接]

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
跳转到指定楼层
楼主
发表于 2017-1-3 10:35:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ancientcc 于 2018-10-21 11:52 编辑

<webrtc>/common_audio/signal_processing/dot_product_with_scale.cc改名为dot_product_with_scale1.cc。——在NDK编译时,用dot_product_with_scale.cc总是被认为dot_product_with_scale.c,然后出了找不到源文件错。

  • <webrtc>/base/signalthread.cc
    要让在Release时也进行验证。

    1. SignalThread::~SignalThread()中的内容
    2. ASSERT(refcount_ == 0);
    3. 改为
    4. RTC_CHECK(refcount_ == 0);
    复制代码

    SignalThread实现双线程协作的后台任务时有个特殊地方:删除时不能直接调用析构函数,而是调用SignalThread:estroy。此个修改避免app还是调用析构函数。
  • <webrtc>/modules/video_capture/android
    支持了Andorid采集视频,增加此目录。
  • <webrtc>/modules/utility/source/jvm_android.cc
    loaded_classes[]增加
    1. struct {
    2.         const char* name;
    3.         jclass clazz;
    4. } loaded_classes[] = {
    5.         ......
    6.         {"org/webrtc/videoengine/WebRtcVideoCapturer", nullptr},
    7. }
    复制代码

  • <webrtc>/modules/video_capture/video_capture_factory.cc
    VideoCaptureFactory::Create、VideoCaptureFactory::CreateDeviceInfo,所有平台一样处理。
    1. rtc::scoped_refptr<VideoCaptureModule> VideoCaptureFactory::Create(
    2.         const char* deviceUniqueIdUTF8) {
    3.         return videocapturemodule::VideoCaptureImpl::Create(deviceUniqueIdUTF8);
    4. }

    5. VideoCaptureModule::DeviceInfo* VideoCaptureFactory::CreateDeviceInfo() {
    6.         return videocapturemodule::VideoCaptureImpl::CreateDeviceInfo();
    7. }
    复制代码

  • <webrtc>/modules/utility/include/jvm_android.h
    class GlobalRef增加两个方法。
    1. JNIEnv* const jni() { return jni_; }
    2. const jobject j_object() { return j_object_; }
    复制代码


    Android项目中需要复制的java文件
    1. android_library("libjingle_peerconnection_java")
    2. {
    3.         ......
    4.         deps = [
    5.                 "../../modules/audio_device:audio_device_java",
    6.                 "../../rtc_base:base_java",
    7.         ]
    8. }
    复制代码

  • 对于jin_generator.py生成的*.h
    1. #include <jni.h>
    2. 改为
    3. #include "sdk/android/src/jni/jni_generator_helper.h"
    复制代码

  • android不要忘了編译jni_onload.cc,否则SDL得到的JavaVM会传不到webrtc模块
  • 为让MediaCodec解码h264流需进行些修改,详见MediaCodec解码h264流,floor#2
回复

使用道具 举报

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
沙发
 楼主| 发表于 2017-2-24 22:03:53 | 只看该作者
本帖最后由 ancientcc 于 2017-2-24 22:06 编辑

webrtc-20170224,个人认为Windows平台的的声音设备AudioDeviceWindowCore有BUG!_ptrClientOut->IsFormatSupported会失败。

AudioDeviceWindowCore::CoreAudioIsSupported中的p->PlayoutDevices()返回2,#0时执行以下语句
  1. hr = _ptrClientOut->GetMixFormat(&pWfxOut);
复制代码
hr是S_OK,pWfxOut是以下格式。
  1. (webrtcvoiceengine.cc:1019): webrtc: wFormatTag     : 0xFFFE (65534)
  2. (webrtcvoiceengine.cc:1019): webrtc: nChannels      : 2
  3. (webrtcvoiceengine.cc:1019): webrtc: nSamplesPerSec : 44100
  4. (webrtcvoiceengine.cc:1019): webrtc: nAvgBytesPerSec: 352800
  5. (webrtcvoiceengine.cc:1019): webrtc: nBlockAlign    : 8
  6. (webrtcvoiceengine.cc:1019): webrtc: wBitsPerSample : 32
  7. (webrtcvoiceengine.cc:1019): webrtc: cbSize         : 22
复制代码
_ptrClientOut->IsFormatSupported能成功。

但在#1,GetMixFormat返回的hr是S_OK,pWfxOut是以下格式。
  1. (webrtcvoiceengine.cc:1019): webrtc: wFormatTag     : 0xFFFE (65534)
  2. (webrtcvoiceengine.cc:1019): webrtc: nChannels      : 4
  3. (webrtcvoiceengine.cc:1019): webrtc: nSamplesPerSec : 48000
  4. (webrtcvoiceengine.cc:1019): webrtc: nAvgBytesPerSec: 768000
  5. (webrtcvoiceengine.cc:1019): webrtc: nBlockAlign    : 16
  6. (webrtcvoiceengine.cc:1019): webrtc: wBitsPerSample : 32
  7. (webrtcvoiceengine.cc:1019): webrtc: cbSize         : 22
复制代码

_ptrClientOut->IsFormatSupported却失败了!试过把IsFormatSupported前去尝试Wfx.nChannels,但还是失败。

这个失改会导致AudioDeviceModuleImpl::CreatePlatformSpecificObjects()时不能创建ptrAudioDevice,程序非法退出。

解决这问题有两种办法,一是重用Webrtc旧版本的AudioDeviceWindowsWave,二是用我自个写的基于SDL的AudioDeviceSDL。考虑到要向后兼容,决定使用AudioDeviceSDL。AudioDeviceSDL在Android是有问题的,为此只是用在Windows。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2025-5-2 00:44 , Processed in 0.049805 second(s), 19 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表