小编Ral*_*alf的帖子

Visual C++与QT Creator

我通常用Java和C#编写代码,但有一个项目我必须使用C++.我的问题是使用QT Creator而不是Visual Studio Express或其他方式对我有什么优缺点,我知道有类似的问题,但它们可以追溯到至少2年前.

我必须注意,我只是为Windows编写系统,我不打算将其设置为多平台.

c++ qt visual-studio-2010 qt-creator

11
推荐指数
2
解决办法
1万
查看次数

h264 RTP时间戳

我对h264 RTP数据包的时间戳感到困惑.我知道我在SIP SDP中定义的视频挂钟率是90KHz.我的编码器的帧速率不是30 FPS,它是可变的.它的速度从15 FPS到30 FPS不等.所以,我不能使用任何固定的时间戳.

任何人都可以告诉我以下编码数据包的时间戳.
经过0毫秒编码的RTP时间戳= 0(让开始时间戳0)
经过50毫秒编码的RTP时间戳=?
经过40毫秒编码的RTP时间戳=?
经过33毫秒编码的RTP时间戳=?

编码帧速率可变时的公式是什么?

先感谢您.

video rtp h.264 x264 rfc3984

7
推荐指数
2
解决办法
2万
查看次数

更好的提升asio deadline_timer的例子

我是一个更好的例子 boost::asio::deadline_timer

给出的示例将始终超时并调用该close方法.我试着调用cancel()一个计时器,但这导致传入的函数async_wait立即被调用.

在异步tcp客户端中使用计时器的正确方法是什么?

c++ timer boost-asio

6
推荐指数
1
解决办法
7004
查看次数

SIMD:为什么SSE RGB到YUV颜色转换的速度与c ++实现速度相同?

我刚刚尝试优化RGB到YUV420转换器.使用查找表产生了速度增加,使用定点算法也是如此.但是我期待使用SSE指令获得真正的收益.我的第一次尝试导致代码变慢,并且在链接所有操作之后,它与原始代码的速度大致相同.我的实施中是否有问题,或者SSE指令是否不适合手头的任务?

原始代码的一部分如下:

#define RRGB24YUVCI2_00   0.299
#define RRGB24YUVCI2_01   0.587
#define RRGB24YUVCI2_02   0.114
#define RRGB24YUVCI2_10  -0.147
#define RRGB24YUVCI2_11  -0.289
#define RRGB24YUVCI2_12   0.436
#define RRGB24YUVCI2_20   0.615
#define RRGB24YUVCI2_21  -0.515
#define RRGB24YUVCI2_22  -0.100

void RealRGB24toYUV420Converter::Convert(void* pRgb, void* pY, void* pU, void* pV)
{
  yuvType* py = (yuvType *)pY;
  yuvType* pu = (yuvType *)pU;
  yuvType* pv = (yuvType *)pV;
  unsigned char* src = (unsigned char *)pRgb;

  /// Y have range 0..255, U & V have range -128..127.
  double u,v;
  double r,g,b;

  /// Step in 2x2 …
Run Code Online (Sandbox Code Playgroud)

c++ optimization rgb yuv sse2

6
推荐指数
1
解决办法
5263
查看次数

Android上的Live555

我正在尝试使用内置的Videoview/MediaPlayer在我的Android应用程序中播放RTSP视频流,但是在不同的ROM或不同的网络状态(UDP数据包被阻止)上总会出现各种问题,这真的很烦人所以我想要使用live555源和GLES和ffmpeg实现我自己的rtsp客户端.我可以弄清楚如何使用ffmpeg和GLES来显示视频,但我不熟悉live555.

Android上有live555的编译版本吗?或者我怎么能自己做?

谢谢.

android rtp rtsp video-streaming live555

5
推荐指数
1
解决办法
1万
查看次数

udp打孔器和端口限制锥NAT

我想了解当端口限制锥NAT后面的两台主机分别建立连接时,udp打孔的工作原理。

据我了解,它分为几个阶段,涉及三个主机。

主机A和主机B在端口受限锥形NAT的后面。

主机C是可以从主机A和B接收数据包的服务器。

  1. A向C发送数据包。
  2. C从A接收数据包并确定A的外部地址:端口对
  3. B向C发送数据包。
  4. C从B接收数据包并确定B的外部地址:端口对
  5. C将外部地址:B的端口发送到A
  6. C将外部地址:A的端口发送到B
  7. A将数据包_1发送到B的外部地址
  8. B将数据包_2发送到A的外部地址

问题是:

受限锥NAT后面的A如何从也位于受限锥NAT后面的B接收数据包?

端口受限锥形NAT不允许接收源地址:端口对与它发送的目标地址:端口对不匹配的数据包。为什么在A和B之间发送的其他数据包到达A和B?

是否因为端口受限锥NAT将packet_2视为来自B的响应?

因此,数据包_1将丢失,但数据包_2到达B。我是对的吗?

先感谢您。

udp nat hole-punching

5
推荐指数
1
解决办法
3084
查看次数

使用 boost 的特定于源的多播

如何使用 boost 加入特定于源的多播 (ssm) 组?

我已成功加入任何来源的多播组使用

set_option( ip::multicast::join_group( mcAddr.to_v4(), ifAddr.to_v4( )));

但我不知道如何设置 ssm ( IP_ADD_SOURCE_MEMBERSHIP)。

我该怎么做?谢谢你。

c++ boost udp multicast boost-asio

5
推荐指数
1
解决办法
1252
查看次数

作为Teamcity构建的一部分运行boost单元测试控制台应用程序

在我们的应用程序中,有许多单元测试控制台应用程序已使用boost单元测试框架编写.这些测试应用程序是Visual Studio解决方案的一部分(我们使用的是VS2008 Professional).

是否可以将这些作为Teamcity构建的一部分运行?

到目前为止,我已经配置了Teamcity来检查来自subversion的最新源代码并构建它.现在我想将这些控制台应用程序作为最终构建步骤运行.我很感激有关如何解决这个问题的任何建议.

c++ testing teamcity boost unit-testing

3
推荐指数
1
解决办法
2698
查看次数

VS2010 默认基本运行时检查

VS2010 C/C++ Win32 项目中参数“Basic Runtime Checks = Default”的默认操作是什么。这可以在 C/C++ - 代码生成属性页中找到。提前致谢。最大限度

visual-studio-2010 visual-c++

3
推荐指数
1
解决办法
2220
查看次数

提升Asio - ubuntu

我已经安装了libboost-dev和libboost-asio-dev等.

在ubuntu 11.04和11.10中遇到了与asio相同的问题,例如:

'connect'不是'boost :: asio'的成员

它是一个来自例子的sync_client.

其他提升的libs似乎工作正常.有没有什么特别的方法可以使用ASIO?

c++ boost boost-asio

1
推荐指数
1
解决办法
4514
查看次数

Windows提升asio:在async_cend_to上的async_receive_from中为10061

我有一个相当大的应用程序,可以在Linux上按需运行.我最近使用VC2012在Windows 7上编译并使用了增强asio 1.52并遇到了一个奇怪的问题:

在同一个UDP套接字上async_receive_from跟随一个后async_send_to导致使用boost::system::error_code10061 调用读取完成处理程序:

无法建立连接,因为目标计算机主动拒绝它

如果发送目标是本地主机上的另一个端口.如果数据包被发送到另一台机器,则不会调用读取完成处理程序.在读取完成处理程序之后,将调用写入完成处理程序而不会出现错误.

以下代码复制了该问题:

#include <iostream>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>

using namespace std;
using namespace boost::asio;

void read_completion_handler(const boost::system::error_code& ec, std::size_t bytes_received)
{
  if (!ec)
    cout << "Received " << bytes_received << " successfully" << endl;
  else
    cout << "Error: " << ec.message() << endl;
}

void write_completion_handler(const boost::system::error_code& ec, std::size_t bytes_transferred)
{
  if (!ec)
    cout << "Wrote " << bytes_transferred << " successfully" << endl;
  else …
Run Code Online (Sandbox Code Playgroud)

windows udp network-programming boost-asio

1
推荐指数
1
解决办法
2426
查看次数