我正在研究视频应用程序,但遇到UDP流与TCP的问题.
当我使用下面的管道时,视频流可以接受.(应用程序本身是python,但管道基本上如下)
sender:
gst-launch-0.10 v4l2src ! video/x-raw-yuv,width=320,height=240 !
theoraenc ! oggmux ! tcpclientsink host=nnn.nnn.nnn.nnn port = 5000
receiver:
gst-launch-0.10 tcpserversrc host=nnn.nnn.nnn.nnn port=5000
! decodebin ! xvimagesink
Run Code Online (Sandbox Code Playgroud)
但是,由于这个应用程序要跨越/通过NAT执行,我需要UDP流.当我将tcpserversrc切换为"udpsrc port = 5000"并将tcpclientsink切换为"udpsink host = nnn.nnn.nnn.nnnn port = 5000"时,性能急剧下降到接收计算机每5秒获取一个帧的程度或者.(即使两个流在同一台机器上执行,也会发生这种情况)
发送管道生成以下(一次):
WARNING: from element /GstPipeline:pipeline0/GstUDPSink:udpsink0:
Internal data flow problem.
Additional debug info:
gstbasesink.c(3492): gst_base_sink_chain_unlocked (): /GstPipeline:pipeline0
/GstUDPSink:udpsink0:
Received buffer without a new-segment. Assuming timestamps start from 0.
Run Code Online (Sandbox Code Playgroud)
...并且接收管道生成(每20秒左右):
WARNING: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
A lot of buffers are being dropped.
Additional debug info:
gstbasesink.c(2739): gst_base_sink_is_too_late …Run Code Online (Sandbox Code Playgroud) 当前状态
在gcc bugtracker中提交的bug(包括简单的测试用例):https://gcc.gnu.org/bugzilla/show_bug.cgi ? id = 66234
我目前正在将一些代码移植到一个新的平台和工具链,其中包括从gcc 4.7.2升级到gcc 4.9.2(或者更具体地说,从2012年到2012年的OSELAS工具链升级 - 我也重现了这一行为在我的主机上与gcc 4.6.4(工程)和gcc 4.8.3(不起作用)).
在构建应用程序期间,我使用一些#pragma message语句来输出builddate和hostname(注意,BUILDTAG并且BUILDHOST还存储为应用程序之后使用的常量):
#define BUILDTAG (__DATE__ " " __TIME__)
#define BUILDHOST BUILT_ON
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
#pragma message "Setting builddate to: " STR(BUILDTAG)
#pragma message "Building on: " STR(BUILDHOST)
Run Code Online (Sandbox Code Playgroud)
旧工具链(gcc 4.7.2/4.6.4)输出以下内容,这正是我想要的:
note: #pragma message: Setting builddate to: ("May 15 2015" " " 10:35:12")
note: #pragma message: Building on: my-host
Run Code Online (Sandbox Code Playgroud)
但是,新的工具链(gcc 4.9.2/4.8.3)给了我:
note: #pragma message: Setting builddate …Run Code Online (Sandbox Code Playgroud) 我想在Linux上添加rt补丁,我拿了3.18.9内核和3.18.9-rt4补丁.我将patch-3.18.9-rt4.tar.gz复制到Linux内核文件夹中.现在我执行了zcat补丁-3.18.9-rt4.tar.gz | patch -p1执行此命令后,它要求修补文件,如下所示
|--- a/arch/sparc/Kconfig
|+++ b/arch/sparc/Kconfig
--------------------------
File to patch:
Run Code Online (Sandbox Code Playgroud)
我想一次性添加所有补丁,我该如何实现?
在VHDL中,process所有步骤都将按顺序执行,但我想知道FPGA如何按顺序执行步骤.我对FPGA中如何生成顺序赋值,函数和类似内容感到非常困惑,所以有人可以对这个主题有所了解吗?
process(d, clk)
begin
if(rising_edge(clk)) then
q <= d;
else
q <= q;
end if;
end process;
Run Code Online (Sandbox Code Playgroud)
这只是一个简单的D-Latch的代码,但是如何在FPGA中实现呢?
我有一条数字输入GPIO线,每当输入发生变化时我都需要中断。在STM32CubeMX我将此引脚设置为一条EXTI线并将中断设置为在上升沿和下降沿触发。
当响应上升沿或下降沿HAL_GPIO_EXTI_Callback()调用该函数时,有没有办法知道是上升沿还是下降沿触发了中断?还是有必要打电话HAL_GPIO_ReadPin()来推断这一点?
回调的原型是:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
Run Code Online (Sandbox Code Playgroud) 在我编写此语句时的编码中,它是模拟的,但不可综合。为什么?现在我该怎么做才能解决这个问题???
IF ((DS0='1' OR DS1='1')and rising_edge(DS0) and rising_edge(DS1) AND DTACK='1' AND BERR='1') THEN
RV0 <= not RV;
else
RV0 <= RV;
Run Code Online (Sandbox Code Playgroud)