Netra基于Rdk平臺的軟件框架設計

Netra(DM8168)處理器是個多核處理器,每個核之間相互獨立卻又相互關聯,如何高效簡潔地利用每個核完成一套系統功能是非常關鍵的,RDK這套軟件平臺就是針對這種多核平臺設計的一套多通道視頻應用方案,主要用于DVRNVR、IPNC之類的產品。

? ? ? ? 這個軟件框架結構允許用戶創建不同的多路數據流來實現視頻的采集、視頻處理(DEI、Noise Filter、Encode、Decode、SwMs、Merge等)和視頻播放功能,其框架設計非常值得學習。


以下為相關縮寫解釋:

*****************************************************************************************************

HDVPSS:High Definition Video Processing Subsystem

HDVICP:High Definition Video and Image CoProcessor

Ducati:Dual Core M3 Processors controlling HDVPSS and HDVICP hardware engines

Video M3:ARM Cortex M3 Core(inside Ducati subSystem)controlling HDVICP codecs

VPSS M3:ARM Cortex M3 Core(inside Ducati subSystem)controlling HDVPSS,also called DSS M3

DEI:Deinterlacer

McFW:Multi Channel Framework

IPC:Inter Processor Communication

******************************************************************************************************

1、Rdk平臺軟件框架圖

? ? ?在Rdk平臺軟件中做了很好的分層,如下圖所示:


注意:上圖中核間通過Syslink/IPC通信,任意2個核之間都可以直接通信,是一個星型網絡,上圖畫的連接關系描述的是對等層次的概念。

上圖中相關層的功能及相關描述如下表所示:

處理器描述相關TI軟件包
LinuxHOST?A8

Linux?OS,?includes,?filesystems,

SATA,?Ethernet,?USB?and?other

IO?drivers

Linux?PSP
BIOS6

VPSS?M3

Video?M3

DSP

BIOS?RTOS?used?as?OS?on

Video-M3,?VPSS-M3,?DSP.

Provides?features?like?threads,

semaphores,?interrupts.

Queues?and?message?passing

between?links?is?implemented

using?BIOS?semaphores.

BIOS

XDC?(used?for?BIOS?and

other?configuration)

Syslink?/?IPC

HOST?A8

VPSS?M3

Video?M3

DSP

Software?APIs?used?for

communicating?between

processors.?Provides?features

like?processor?loading?and

booting,?multiprocessor?heaps,

multiprocessor?linked?list

(ListMP),?message?queues,?notify etc

Syslink

IPC

HDVPSS

Drivers

VPSS?M3

HDVPSS?drivers?like?capture,

display,?deinterlacer,?scaling

based?on?FVID2?interface?to

control?and?configure?the

HDVPSS?HW

HDVPSS

Video

Encode/Decode

Video?M3

Video?encode?/?decode?APIs

based?on?XDM?/?XDIAS?interface.

Uses?framework?components?for?resource?allocation

XDIAS

Framework?components

IVAHD?HDVICP2?API

H264?decoder

H264?encoder

Links

Links?HOST?A8

VPSS?M3

Video?M3

DSP

Implementation?of?individual

links.?Some?links?are?specific?to

a?processor?while?some?links?are?common?across?processors

DVR?RDK
Link?APIHOST?A8

The?link?API?allows?users?to

create?,?connect,?and?control

links?on?HOSTA8,?VPSS?M3,

Video?M3?and?DSP.

Link?API?is?used?to?create?a?chain?of?links?which?forms

?a?user?defined?use-case.

The?connection?of?links?to?each

other?is?platform?dependant.

McFW
McFW?APIHOST?A8

Multi-Channel?FrameWork?API.

Multi-Channel?Application

specific?API?which?allows?user?to?setup?and?control?pre-defined

application?specific?chains?for

DVR,?NVR,?using?a?single?simplified?API?interface.

This?allows?users?to?directly?use

the?links?without?having?to

understand?the?detailed?link?API.

The?McFW?API?is?platform

independent?and?same?API?will

work?on?DM816x,?DM814x,

DM810x

McFW

User

Application

HOST?A8

Typically?GUI?and?other

application?specific?components

like?file?read/write,?network

streaming.

Customer?specific



2、基于Rdk框架的實例


? ? ? ? ? ? ? ? Capture (YUV422I) 16CH D1 60fps
? ? ? ? ? ? ? ? ? ?|
? ? ? ? ? ? ? ? ? NSF (YUV420SP)
? ? ? ? ? ? ? ? ? ?|
? ? ? ? ? ? ? ? ? dup1---->IPCM3OUT(VPS) -> IPCM3IN(VID) -> ENC ->?IPC_BITS_OUT_M3 ->?IPC_BITS_IN_A8 -> fwrite() - Write to filesystem
? ? ? ? ? ? ? ? ? ?|? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?!

? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ! ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?+-<----IPCM3IN(VPS) <- IPCM3OUT(VID) -> DEC <-?IPC_BITS_IN_M3?<-?IPC_BITS_OUT_A8 <-?fread() - read from harddisk
? ? ? ? ? ? ? ? ? ?|
? ? ? ? ? ? ? ? ?MERGE
? ? ? ? ? ? ? ? ? ?|
? ? ? ? ? ? ? ? ? DUP2
? ? ? ? ? ? ? ? ? |||
? ? ? ? ?+--------+|+------------+
? ? ? ? ?| ? ? ? ? | ? ? ??? ? ? |? ? ? ?
? ? ? ? ?| ? ? ? ? ? ? ? ?| ? ? ? ? ? ? |
? ? ? SW Mosaic ? ? ? SW Mosaic ? ? ? ?SW Moasic
? ? ? (DEIH YUV422I) ?(DEI YUV422I) ? ?(SC5 YUV422I)
? ? ? ? ?| ? ? ? ? ? ? ? ?| ? ? ? ? ? ? |
?GRPX0 ? | ? ? ? GRPX1,2 ?| ? ? ? ? ? ? |
? ? | ? ?| ? ? ? ? ? | ? ?| ? ? ? ? ? ? |
? ? On-Chip HDMI ? ?Off-Chip HDMI ?SDTV (NTSC)
? ? ? 1080p60 ? ? ? ? 1080p60 ? ? ? ?480i60

3、Link Api機制

3.1 link api的概念

? ? link在上圖中的視頻數據流中是最基本的單元模塊,每個link中包含了一個基于BIOS6/Linux的任務、線程、消息盒(使用操作系統的信號量實現)。由于每個link運行一個獨立的線程,因此link之間可以并行運行。消息盒是關聯用戶指定的link,讓link之間有個互相對話的機制,用來傳遞信令。而對于視頻流數據、幀數據的傳遞link實現了專門的接口來實現,只傳遞指針,而不是數據。

? ? 在實現上節所介紹的數據流可以通過將多個link連接來實現chain,link API允許用戶Create、Start、Stop、Delete、Control各個link。在Rdk中TI基于link API進行再次封裝,用于特定的應用場合,其各種參數均是為特定的產品定制,可以是相關業務的開發更迅速。


3.2 link內部結構


3.3 link的特性

  • 視頻處理的工作量可以均衡到每個核心上去執行,如下表:
ProcessorOSUsed?for
HOST?A8LinuxSystem?setup?and?control,?GUI,?IO?peripheral?control?like?SATA,?Ethernet,?USB,?Audio
VPSS?M3BIOS6

HDVPSS?control?for?video?capture,?video?display,?scaling,?deInterlacing?…

Video?M3BIOS6HDVICP2?Video?compression?/?decompression?(H264?encode,?H264?decode)
DSPBIOS6SW?OSD,?custom?video?processing?algorithms

  • 每個link都有自己獨立的任務/線程用于完成視頻采集或播放等處理;
  • 每個link都可以處理來自多個通道的視頻幀數據,每個通道的視頻寬高和數據格式都可以不同;
  • A8作為HOST可以用來連接多個link形成數據流的鏈并對其進行控制
  • 數據鏈被建立并啟動時,數據鏈中的每個link將和它的下游link進行幀數據的交互
  • links之間的幀數據交互可以在多個核心之間進行,并且并不需要A8 HOST的干涉,從而降低A8的開銷;
  • ?在數據鏈運行過程中用戶可以發送控制信令給任意link來動態設置相關的link參數

3.4 link接口

? ? link接口可以分成以下幾類:

  • link API——被用戶調用來配置和控制link的接口
  • Inter link API——被其他links調用來交換幀數據的接口
  • link output queue——被其他links通過Inter Link API接口實用的幀buffer隊列

3.5 link間的消息傳遞

? ? 每個Link通過一個32位的該LinkId來識別ID4位標識了這個Link是在哪個核上運行,低24位標識了該Link的名稱

BitsDescription
[0..27]Link ID
[28..31]Processor ID on which this link runs
0:DSP
1:Video M3

2:VPSS M3

3:A8


每個Link?API都需要這個LinkID參數來發送消息,當用戶發送消息到一個Link時,根據這ID函數內部判斷這個消息是發給本地的Link還是遠端核心的Link;如果是本地的直接調用BIOS/LINUX?API函數,否則就通過Syslink模塊的MessageQ發送這個消息到指定的核心,讓對端的核心調用對應的函數處理。


3.6 link API

? ? 下面將通過表格的形式來看看link API的部分接口及相關功能:

APIDescription
System_linkCreateCreates?a?link?——allocates?driver,?codec,?memory?resources.
System_linkGetInfoGet?information?about?a?link?like?number?of?channels,?properties?of?each?channel.?MUST?be?called?after?System_linkCreate()?for?a?link
System_linkStartStart?the?link?——starts?the?driver?or?codec
System_linkControlSend?a?link?specific?control?command?with?optional?arguments
System_linkStopStop?the?link?——?stops?the?driver?or?codec
System_linkDeleteDeletes?a?link?——?free’s?driver,?codec,?memory?resources


3.7 Inter link API

? ? 下面的表格介紹了在link內部實現的交換幀數據的API,對于用戶來說,這部分API是不需要關心的:

APIDescription
System_GetLinkInfoCbFunction?to?return?information?about?a?link?like?number?of?channels,?properties?of?each?channel
System_LinkGetOutputFramesCb

Function?to?return?captured?or?generated?or

output?frames?to?the?caller?(another?link)

System_LinkPutEmptyFramesCbFunction?to?release?consumed?frames?back?to?the?original?link?for?reuse
System_LinkGetOutputBitBufsCbFunction?to?return?generated?or?output?bitstream?frame?to?the?caller?(another?link)?–Valid?only?for?Encode?Link
System_LinkPutEmptyBitBufsCbFunction?to?release?consumed?bitstream?frames?back?to?the?original?link?for?reuse?–Valid?only?for?Encode?Link

? ? 在每個link中必須實現一些函數并在初始化時注冊這些函數指針給link管理的核心模塊,用于幀數據的獲取、釋放、dump相關狀態等。

? ? 對于任一個link想從它的上游link獲取幀數據都需要調用link管理核心函數System_getLinksFullFrames(),該函數內部會發送消息到對應的上游link,觸發該link向管理模塊注冊的回調函數System_LinkGetOutputFramesCb()將幀數據傳遞給該link;

? ? 同樣的,在當一個link想釋放處理完畢的幀buffer給上游link時需要調用link管理核心函數System_putLinksEmptyFrames(),該函數內部會發送消息到對應的上游link,觸發它注冊的回調函數System_LinkPutEmptyFramesCb()將幀buffer回收,用于后續的數據處理;

? ? 建立chain時,你肯定還會關注一個信息,那就是上游link的相關參數如何傳遞給下游的link,從源程序仔細琢磨琢磨就可以看出來,和上面的處理類似,所有有下游link的link都會注冊一個System_GetLinkInfoCb()的回調函數,在下游link的driver中會在創建driver時調用System_linkGetInfo()函數來獲取上游link的相關參數。

? ? 通過上述的方法,對于一個link來說就不需要關心和它交互的是哪一個link,所有的尋址都通過linkID來自動查找,并且同一個link實現可以和不同的link交互,而不需要改變函數的實現。


3.8 Link Output Queues 的管理

? ??一個Link可以有一個或多個輸出隊列用來存放采集到的或處理完畢的幀數據,每個Link的輸出隊列內存由自己分配;

? ??大多數Links只有一個輸出隊列,但是有些link有多個,從而可以實現多路不同的輸出數據流滿足不同的應用需求,例如,Noise?filter?Link可以輸出16路幀數據到2個輸出隊列,每個輸出隊列輸出8路通道數據跟別給2DEI?Links模塊處理。

? ??一個輸出隊列中可以有多個視頻channels的數據,每個channel可以有不同的大小和數據格式;

? ??數據結構?FVID2_Frame是在VPSS驅動中定義的,Links之間就通過該結構參數傳遞幀數據的信息,如幀數據的Buf指針,而幀數據本身并不會被拷貝,從而節省內存開銷;

? ? 當一個Link采集完或處理完一幀數據后會發送一個消息“SYSTEM_CMD_NEW_DATA”給下游的Link,從而通知它有數據可取;當下游Link收到該消息后會調用System_getLinksFullFrames()函數來獲取對用的幀數據,處理完后再調用System_putLinksEmptyFrames()函數來歸還給上游Link繼續使用。

因此一個Link需要知道:

  • 上游LinkLinkIDQueID,從而從該隊列里面獲取幀數據
  • 下游LinkID,從而在有新數據產生時通知下游Link來取
上游LinkLinkIDQueID?以及下游LinkID?都是在System_linkCreate()時由A8 HOST端來指定的。


3.9 IPC link核間幀數據交互

IPC?Link,是用來多核之間的幀數據傳遞的。

VPSS上的采集Link想把幀數據發送給Video?Link處理,先將幀數據傳遞給本地的IPC?Link,然后IPC?Link再通過Syslink/IPC發送到Video?Link上的IPC?Link,然后再轉發給Video?Link,這樣的話對于采集Link的實現來說就非常清晰簡單,它的實現都是發送給本地的另一個Link

IPC?Link的實現有點復雜,因為它涉及的幀數據傳遞是在多個核之間,這里面就牽扯到cache的一致性問題,考慮到每個核的特性以及高效性,總共設計了3個內部Links用于幀數據的傳遞機制:

  • Intra-processor?links

? ? ?即同一核心內部的link,如采集與降噪之間的幀數據傳遞,這種內部的link間傳遞幀數據都是在VPSS?M3內部完成,因此采用簡單且高效的隊列機制實現。

  • Inter?M3?(Video?/?VPSS)?links

? ? ?即M3內部核心之間的link,由于VideoVpss所在的2M3核心是同屬于一個雙核M3處理器,它們的cache是共享的;如降噪模塊(VPSS?NF)到編碼模塊(VIDEO?Enc)之間傳遞幀數據,帶有NotifyIPC?ListMP機制被用來在這2M3核心之間傳遞幀信息(FVID2_Frame),該過程中不需要任何cache操作和地址轉換。

  • Inter?processor?(M3?to?A8?or?DSP)

? ? 即處理器內部核心之間,如編碼(VideoM3)到BitStream?In(HostA8)之間傳遞幀數據,同樣使用帶NotifyIPC?ListMP機制2個核心之間傳遞幀信息(FVID2_Frame),但該過程中需要做cache同步和地址轉換操作。


4、chain數據鏈路的建立

? ? 一個Chain是由多個links按照一定的應用需求按順序連接成一條視頻處理的數據流。

? ? 一個Chain可以銷毀后重新按照新的需求組成新的Chain,不需要重啟系統。

?Chain創建是特別需要相關link的順序

  • 通過System_linkCreate()函數按照由source>>sink?的順序創建需要的Links,Source?Link即沒有上游LinkLink,如:視頻采集;Sink?Link是沒有下游LinkLink,如:視頻播放;這個創建順序是非常重要的,因為一個Link創建時它會查詢上游Link的一些信息,如上游Link需要的channel的個數和屬性,從而按照這些參數配置自己。
  • 下一步調用System_linkStart()函數啟動每個Link,啟動順序一般從Sink?Link往前到Sorce?Link,當然你也可以不按照這個順序,不過不推薦,因為這樣可以保證每個Link在它的上游Link啟動前準備好接收數據,避免過多的緩沖引入額外的時延。
  • 當一個Chain運行后控制命令就可以發送到各個Links來控制它,如調用System_linkControl()函數發送改變畫面合成風格的命令給相應的Link,具體的命令定義由每個Link的功能實現來決定;
  • 注意:一般來說System_linkControl()函數是在System_linkCreate()創建了Link之后才能調用,不過有些控制命令可以在System_linkCreate()調用之前調用,以完成Link創建之前必須的一些初始化,如復位;
  • Chain工作完成或銷毀時可以調用System_linkStop()函數先停止每個Link,注意:停止的順序必須從Source開始依次到Sink結束;因為一個Link可能阻塞著等待下游Link釋放當前Link的輸出Buffer,如果下游Link先停止的話當前Link可能會出于wait?for?ever的狀態而永久退不出來,因此上游Link必須先停止,之后才能停止下游Link
  • 最后等所有Link全部停止后,可以調用System_linkDelete()函數刪除所有Links,刪除順序沒有要求;
  • Chain銷毀后就可以按照之前的順序重新創建一個新的Chain來完成另一個工作了。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253200.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253200.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253200.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電感嘯叫原因與應對措施

大部分硬件工程師應該都遇到過,PCBA上電后出現“滋滋滋”的叫聲,其聲響或大或小,或時有時無,或深沉或刺耳,或變化無常者皆有。該現象我們稱為“嘯叫”,一般分為電感嘯叫和電容嘯叫。 其中電感嘯叫最為常見,尤其在DCDC電路中,大部分是因為 器件參數選擇不合理 導致的。…

ASP.NET Web API 記錄請求響應數據到日志的一個方法

原文:ASP.NET Web API 記錄請求響應數據到日志的一個方法原文&#xff1a;http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 記錄請求響應數據到日志的一個方法 REST風格的服務架構已經成為越來越多人的選擇&#xff0c;之前我用過WCF來實…

Nginx + php

Nginx php 目前有兩種方式1.nginx apache nginx 負責靜態內容、反向代理和保持連接&#xff0c;apache則負責處理動態內容。 2.nginx fastcgi php-fpm一、nginx apache 采用Nginx前端Apache后端的服務器架構&#xff0c;這樣可以很好地結合了Nginx高并發和靜態頁面高效率以…

Android Fragment完全解析,關于碎片你所需知道的一切

我們都知道&#xff0c;Android上的界面展示都是通過Activity實現的&#xff0c;Activity實在是太常用了&#xff0c;我相信大家都已經非常熟悉了&#xff0c;這里就不再贅述。 但是Activity也有它的局限性&#xff0c;同樣的界面在手機上顯示可能很好看&#xff0c;在平板上就…

圖像--攝像頭組成與基本參數

基本組成 Sensor: 圖象傳感器 FPC: 電路板 IR:紅外濾波片 Holder:基座 Lens:鏡頭 其他 核心部件&#xff1a;1- SENSOR 2- LENS Sensor參數 類別 指標 參考 備注 Sensor 廠家 sony 三星 OV 格科微由原廠提供完整規格書和型號 低像素需要注意 分辨率 0.3MP (VGA)模組…

1.I2C協議

1.I2C協議2條雙向串行線&#xff0c;一條數據線SDA&#xff0c;一條時鐘線SCL。SDA傳輸數據是大端傳輸&#xff0c;每次傳輸8bit&#xff0c;即一字節。支持多主控(multimastering)&#xff0c;任何時間點只能有一個主控。總線上每個設備都有自己的一個addr&#xff0c;共7個bi…

聯想啟天M715E安裝硬盤保護系統和網絡同傳

現還是學生&#xff0c;雖然大四課上的少&#xff0c;實驗室去的也不勤了&#xff0c;但指導老師有事吩咐&#xff0c;還是要辦好的。 沈老師榮升軟件實驗室主任&#xff0c;學校給了2個機房&#xff0c;一個70臺聯想啟天M715E&#xff0c;一個30臺新的70臺新主機&#xff08;配…

圖像--攝像頭數據輸出格式與傳輸接口

一、 數據輸出格式 RAW data 格式: CMOS 在將光信號轉換為電信號時的電平高低的原始記錄&#xff0c;單純地將沒有進行任何處理的圖像數據&#xff0c;即攝像元件直接得到的電信號進行數字化處理而得到的。 每個pixel只能感光R光或者B光或者G光&am…

計算機入門與學習回憶(一)

這個回憶&#xff0c;不是記錄什么成功&#xff0c;而記錄一些失敗的經歷。 大約初中還是高中的時候&#xff0c;就玩過計算機。那是一個很冷的冬天的晚上&#xff0c;一臺華南計算機所造的仿APPLE II的計算機。 這臺計算機很簡陋&#xff0c;只有一個主機&#xff0c;沒有屏幕…

怎么建立微信生態用戶增長模型?

微信最新數據及中國網民最新數據概述截止到2018年&#xff0c;移動網民用戶增長放緩&#xff0c;接近人口大盤。微信作為全國移動網民的一款超級應用&#xff0c;在移動網民的***率超過90%。微信最近一年的新增用戶主要來自中老年用戶群體和鄉鎮用戶群體***。易觀最新發布的8月…

數據庫設計的三大范式

三大范式是為了了更好的設計數據庫 1. 所謂第一范式&#xff08;1NF&#xff09;是指在關系模型中&#xff0c;對列添加的一個規范要求&#xff0c;所有的列都應該是原子性的&#xff0c;即數據庫表的每一列都是不可分割的原子數據項&#xff0c;而不能是集合&#xff0c;數組&…

圖像-攝像頭驅動流程

驅動架構 在Kernel層用camera的驅動將其驅動起來以后&#xff0c;將硬件驅動接口交給Hal&#xff1b; 上層的camera應用程序在andriod實時系統的虛擬機中&#xff0c;加載留給camera公用的庫文 件&#xff0c;調用Hal層的接口來控制camera硬件來實現功能。 驅動流程 打開came…

第四章

選擇結構&#xff08;二&#xff09; 學習本章會用到的單詞&#xff1a; case&#xff1a;實例&#xff0c;情形&#xff0c;情況 switch&#xff1a;轉換&#xff0c;切換&#xff0c;開關 default&#xff1a;系統默認值&#xff0c;違約&#xff0c;預設。缺省 exit&#xf…

tensorflow的一些函數

1.tf.constant(value,dtypeNone,shapeNone,nameConst) 注意這個函數創造的是一個常數tensor&#xff0c;而不是一個具體的常數 value:即可以是list&#xff0c;也可以是value dtype:對應生成的tensor里的元素的類型 # Constant 1-D Tensor populated with value list.tensor t…

生活小常識

1、面試時說三個月試用期可以縮短的不要相信&#xff0c;可以談談別的條件 2、在飯店吃飯滿幾桌送下次吃飯的卷的不要信。可能你會沒時間&#xff0c;或飯店沒地方。&#xff08;談談當時可以送的其他優惠。或者根據自己的需求定桌數&#xff0c;不要被他誘惑湊桌&#xff09;轉…

IP、TCP、UDP數據包長度問題

IP數據包長度問題總結 首先要看TCP/IP協議&#xff0c;涉及到四層&#xff1a;鏈路層&#xff0c;網絡層&#xff0c;傳輸層&#xff0c;應用層。   其中以太網&#xff08;Ethernet&#xff09;的數據幀在鏈路層    IP包在網絡層   TCP或UDP包在傳輸層    TCP或UDP中的…

RK瑞芯微WIFI模組2020最新支持列表,放心使用!

如下所示為RK瑞芯微2020最新支持的WIFIBT模組列表&#xff0c;請參考&#xff01; 標題希望對選型有所幫助&#xff0c;避免踩坑&#xff0c;坑驅動工程師&#xff01; 有事要搞&#xff0c;請私聊&#xff01;

數據類型進階

----------siwuxie095 1、整數類型 如果去掉注釋&#xff0c;報錯&#xff1a;Type mismatch: cannot convert from into byte 即 不能把 int 類型轉換成 byte 類型 如果選擇 Add cast to byte&#xff1a; 即 把 b13 的結果&#xff08;默認為 int 類型&#xff09;強制轉換成…

區塊鏈教程Fabric1.0源代碼分析流言算法Gossip服務端二

區塊鏈教程Fabric1.0源代碼分析流言算法Gossip服務端二 Fabric 1.0源代碼筆記 之 gossip&#xff08;流言算法&#xff09; #GossipServer&#xff08;Gossip服務端&#xff09; 5.2、commImpl結構體方法 //conn.serviceConnection()&#xff0c;啟動連接服務 func (c *commImp…

一段H264數據的分析

&#xfeff;&#xfeff;目錄(?)[-] 分析00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01分析00 00 00 01 68 CE 38 80 00 00 00 01 分析00 00 00 01 67 42 00 1E 99 A0 B1 31 00 00 00 01 H264的數據流分為兩種&#xff0c;一種是NAL UNIT stream(RTP),一種是 bits stream…