网上有很多使用 GStreamer 管道与 NodeJS 的“tcpclientsink”或“udpsink”的示例,以使用 GStreamer 管道输出到 Web 浏览器。
但我找不到任何示例或文档可以清楚地解释如何使用 webrtcbin 元素与 NodeJS 服务器将流发送到 Web 浏览器。(webrtcbin 的替代品也可以。)
我有以下 GStreamer 管道:
gst-launch-1.0 videotestsrc \
! queue ! vp8enc ! rtpvp8pay \
! application/x-rtp,media=video,encoding-name=VP8,payload=96 \
! webrtcbin name=sendrecv
Run Code Online (Sandbox Code Playgroud)
有人可以帮助使用基于 NodeJS 的服务器使用此管道以将流显示到 Web 浏览器上吗?
这是一个类似的示例,但它使用tcpclientsink:
https ://tewarid.github.io/2011/04/26/stream-live-webm-video-to-browser-using-node.js-and-gstreamer.html
我目前很难理解链接/加载概念。
您能告诉我以下关于符号和重定位表的使用的陈述是否正确?
谢谢你的时间!
直到最近,我认为部分名称通常必须以点开头.。但是,在研究我的裸机 C-IDE 的示例链接器文件时,我注意到似乎有一个例外:COMMON.
.text :
{
KEEP(*(.isr_vector))
*(.text*)
KEEP(*(.init))
KEEP(*(.fini))
/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)
/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)
*(.rodata*)
KEEP(*(.eh_frame*))
} > ROM
.bss (NOLOAD):
{
*(.bss*)
*(COMMON)
} > RAM
Run Code Online (Sandbox Code Playgroud)
这使我得出结论,以 开头的部分名称.似乎只是约定而不是要求。
COMMON?.bss我的.bss输出部分实际上包含了一个非部分,这让我感到相当困惑。同去同.text部分。.text我的.text输出部分中包含大量非部分。为什么只是给他们自己的输出部分并不常见?这不是更合乎逻辑吗?这背后是否有任何真正的原因,或者只是它的方式?
使用二进制补码在内存中存储负值的好处是众所周知的,并在本板中进行了充分讨论.
因此,我想知道:
是否存在一些架构,它们选择了一种不同的方式来表示内存中的负值,而不是使用两个补码?如果是这样的话:原因是什么?
type T is array ("A" .. "F") of Integer;
Run Code Online (Sandbox Code Playgroud)
hello.adb:4:22: discrete type required for range
Run Code Online (Sandbox Code Playgroud)
如果我的理解是正确的,那么Ada参考手册第3.6章第9 节就是编译器引发编译错误的原因:
array_type_definition中的每个index_subtype_definition或discrete_subtype_definition定义索引子类型; 它的类型(索引类型)应该是离散的.
因此,为什么"A" .. "F"不discrete呢?究竟是discrete什么意思?
下面引用了数组类型定义的语法要求.资料来源:Ada参考手册
array_type_definition ::= unconstrained_array_definition | constrained_array_definition
constrained_array_definition ::= array (discrete_subtype_definition {, discrete_subtype_definition}) of component_definition
discrete_subtype_definition ::= discrete_subtype_indication | range
range ::= range_attribute_reference | simple_expression .. simple_expression
simple_expression ::= [unary_adding_operator] term {binary_adding_operator term}
term ::= factor {multiplying_operator factor}
factor ::= primary [** primary] | abs …Run Code Online (Sandbox Code Playgroud) 我正在尝试理解C工具链的链接阶段.我编写了一个示例程序并剖析了生成的目标文件.虽然这有助于我更好地理解所涉及的过程,但有些事情对我来说仍然不清楚.
这是:
这是正确的,那些重定位表条目......
RELOCATION RECORDS FOR [.text]:
OFFSET TYPE VALUE
0000002b dir32 .data
00000035 dir32 .data
0000003f dir32 .data
Run Code Online (Sandbox Code Playgroud)
...基本上是告诉链接器,使存储在地址偏移2b,35并且3f从.text不是绝对不会忽略,但相对不会忽略(=偏移)有关.data?据我所知,这使链接器能够
我不明白为什么未初始化的变量与初始化变量的处理方式不同.为什么寄存器地址存储在操作码中,
他们的重定位表条目的值字段对我来说完全不清楚.我原本期望在.bss那里引用该部分.
RELOCATION RECORDS FOR [.text]:
OFFSET TYPE VALUE
0000000d dir32 _var1_zeroed-0x00000004
00000017 dir32 _var2_zeroed-0x00000004
00000021 dir32 _var3_zeroed-0x00000004
Run Code Online (Sandbox Code Playgroud) 我成功地编写了一个在我的 STM32F4 上运行的裸机 C 程序。没什么特别的,只是通常的led-blinky-program。在这个项目中,我编写了初始化例程,用于清除该.bss部分并.data自己初始化该部分。
这并不复杂。在链接器脚本中,我只是指示链接器创建一些标记.dataand.bss部分的开始和结束的符号。
.data 0x20001000 :
ALIGN(4)
{
__etext = LOADADDR(.data);
__data_start__ = ADDR(.data) ;
*(.data*) ;
__data_end__ = ADDR(.data) + SIZEOF(.data) ;
} >RAM AT>ROM
.bss :
ALIGN(4)
{
__bss_start__ = ADDR(.bss) ;
*(.bss*) ;
__bss_end__ = ADDR(.bss) + SIZEOF(.bss) ;
} >RAM
Run Code Online (Sandbox Code Playgroud)
然后我在我的代码中使用了这些符号:
extern unsigned int __etext;
extern unsigned int __data_start__;
extern unsigned int __data_end__;
extern unsigned int __bss_start__;
extern unsigned int __bss_end__;
void Reset_Handler()
{
unsigned …Run Code Online (Sandbox Code Playgroud) 在阅读了关于整数提升的相关问题之后,似乎是整数提升或仅适用于小整数类型(例如short int或)的常见理解char.
但是,我想知道为什么不应该将unsigned intie值的变量15提升为一个int.毕竟,它的转换等级等于int和unsigned int的等级,如下面引用中的语句(1)所要求的那样.
作为一个int可以代表值15而没有任何问题(在我知道的所有平台上),它应该转换为int.
如果可以使用int或unsigned int,则可以在表达式中使用以下内容:
具有整数类型的对象或表达式,其整数转换等级小于或等于int和unsigned int的等级.
_Bool,int,signed int或unsigned int类型的位字段.
如果int可以表示原始类型的所有值(由宽度限制,对于位字段),则该值将转换为int; 否则,它将转换为unsigned int.这些被称为整数促销.整数促销不会更改所有其他类型.
c ×5
linker ×2
object ×2
relocation ×2
ada ×1
arrays ×1
bare-metal ×1
cortex-m ×1
crt ×1
dataformat ×1
embedded ×1
gstreamer ×1
ld ×1
node.js ×1
promotions ×1
range ×1
sections ×1
symbols ×1
types ×1