WebRTC源码分析 - receiver and decoder

这篇具有很好参考价值的文章主要介绍了WebRTC源码分析 - receiver and decoder。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考:WebRTC 接收到 offer 指令后流程分析与 jitterbuffer 数据到解码器的流程分析 | 码农家园

rtp_video_stream_receiver2.cc : OnReceivedPayloadData   video_header.is_last_packet_in_frame |= rtp_packet.Marker();

video_rtp_depacketizer_h264.cc:

absl::optional<VideoRtpDepacketizer::ParsedRtpPayload>

VideoRtpDepacketizerH264::Parse(rtc::CopyOnWriteBuffer rtp_payload)

packet_buffer_.InsertPacket

OnInsertedPacket --- 组帧的结果到这里

rtp_video_stream_receiver2.cc : OnAssembledFrame

buffered_frame_decryptor.cc: ManageEncryptedFrame ->DecryptFrame 

rtp_video_stream_receiver2.cc : OnDecryptedFrame

OnCompleteFrames

OnCompleteFrame

 http://receive_statistics_proxy.cc 的 ReceiveStatisticsProxy::OnCompleteFrame

 VideoStreamBufferController::InsertFrame  ->  stats_proxy_->OnCompleteFrame(metadata.is_keyframe, metadata.size,metadata.contentType); receiv:key+delta

void VideoStreamBufferController::MaybeScheduleFrameForRelease

这中间少了frame

VideoStreamBufferController::ForceKeyFrameReleaseImmediately()

VideoStreamBufferController::OnFrameReady

VideoReceiveStream2::OnEncodedFrame

VideoReceiveStream2::DecodeAndMaybeDispatchEncodedFrame

VCMGenericDecoder::Decode  (真正的decode-- 这里的decoder_ 就是 VideoDecoderSoftwareFallbackWrapper

VideoDecoderSoftwareFallbackWrapper::Decode

     硬解: RTCVideoDecoderAdapter::Decode

     软解 H264DecoderImpl::Decode     (FFmpeg解码)

   (video_codec_factory.cc 中会create hardware_decoder和software_decoder,并通过webrtc::CreateVideoDecoderSoftwareFallbackWrapper传入到webrtc fallback模块)

VideoReceiveStream2::OnCompleteFrame(std::unique_ptr<EncodedFrame> frame)

VideoStreamBufferController::InsertFrame

FrameBuffer::InsertFrame

硬件解码失败:

NotifyError就会进入error状态,一旦进入error状态,直接一直返回std::move(decode_cb).Run(DecoderStatus::Codes::kInterrupted);

media/gpu/windows/d3d11_video_decoder.cc

log关键字:

deocde失败:Failed to decode frame

Decoded frame is not a CVPixelBuffer 

解密失败:Failed to unprotect

Error code:

avcodec_send_packet error: -1094995529  FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input

avcodec_receive_packet -35: AVERROR(EAGAIN) output is not available in the current state - user must try to send input

加解密:

srtp_session.cc

Failed to unprotect文章来源地址https://www.toymoban.com/news/detail-582421.html

到了这里,关于WebRTC源码分析 - receiver and decoder的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【WebRTC---源码篇】(二:二)视频源VideoSourceBase

    作用 这个类继承自VideoSourceInterfacewebrtc::VideoFrame模板类,并且可以处理webrtc::VideoFrame 重要成员变量 重要接口 SinkPair* FindSinkPair(const VideoSinkInterfacewebrtc::VideoFrame* sink); 用于查找当前传入的sink是否已经在vector的数据消费者列中

    2024年02月09日
    浏览(36)
  • webrtc源码阅读之视频RTP接收&&JitterBuffer

    在音视频通信中,网络抖动和延迟是常见的问题,会导致音视频质量下降和用户体验不佳。为了解决这些问题,WebRTC引入了Jitter Buffer(抖动缓冲区)这一重要组件。Jitter Buffer是一个缓冲区,用于接收和处理网络传输中的音频和视频数据。它的主要作用是解决网络抖动和延迟

    2024年02月16日
    浏览(41)
  • webrtc源码阅读之h264 RTP打包

    本文来分析webrtc打包h264 rtp包的代码,版本 m98 实时传输协议(RTP)是一个网络协议,它允许在网络上进行实时的音频和视频数据传输。RTP协议主要用于解决多媒体数据的实时传输问题,特别是对延迟和数据丢失敏感的应用。 RTP协议包括两个紧密相关的部分:RTP数据协议和R

    2024年02月12日
    浏览(46)
  • RTP协议基本分析(RTSP、WebRTC使用)

    实时流传输协议(RTSP:Real Time Streaming Protocol)是一种网络传输协议,旨在发送低延迟流。 该协议由RealNetworks,Netscape和哥伦比亚大学的专家在1996年开发。它定义了应如何打包流中的数 据以进行传输。 2、RTP RTP协议原理,负责对流媒体数据进行封包并实现媒体流的实时传输,

    2023年04月17日
    浏览(38)
  • 【WebRTC---源码篇】(二:三)视频消费者VideoSinkInterfacee

    作用:这是一个视频消费的基类,所有需要使用视频帧数据的类都需要继承它  看看哪些类继承了它 class Renderer : public rtc::VideoSinkInterfaceVideoFrame  class VideoRtcpAndSyncObserver : public test::RtpRtcpObserver,                                  public rtc::VideoSinkInterfaceVideoFrame

    2024年02月10日
    浏览(38)
  • 【WebRTC---源码篇】(二十四)GCC获取码率后的分配

    配置码率

    2024年02月13日
    浏览(30)
  • 【H.264】RTP h264 码流 实例解析分析 3 : webrtc

    【srs】SRS检测IBMF还是annexb 【H.264】RTP h264 码流 实例解析分析 2 : mediasoup收包 mediasoup 并没完整解析rtp包的内容,可能与mediasoup 只需要转发,不需要解码有关系。 webrtc 本身都是全的。 m98代码,先说关键: 第一:对RTPVideoTypeHeader 构造,可用于后续解析nalu 第二: 可用与组装为

    2024年02月05日
    浏览(53)
  • 【WebRTC---源码篇】(十一:一)采集编码发送期间使用时间戳的详细解读

    一、时间戳定义 1、 NTP时间 2、本地时间 从系统启动这一刻起开始计时,不受系统时间被用户改变的影响。

    2024年02月22日
    浏览(36)
  • 国内镜像:极速下载编译WebRTC源码(For Android/Linux/IOS)(二十四)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 优质专栏: 多媒体系统工程师系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径

    2024年01月17日
    浏览(56)
  • SRS流媒体服务器——SRS4.0 WebRTC一对一通话环境搭建与逻辑分析

    环境搭建 SRS4.0 WebRTC1对1通话逻辑分析 1. 安装go语⾔环境 在Go语⾔官⽹找到对应的安装包(Downloads - The Go Programming Language) 下载和解析(使用的是阿里云的Ubuntu系统): 3.需要配置 GOROOT 和 PATH环境变量,在/etc/profile中配置。 4. 然后使用 source /etc/profile 命令使配置文件生效,就

    2023年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包