首页 文章
  • 4 votes
     answers
     views

    一种有效的方式来实时缓冲高清视频而不会占用大量内存

    我正在编写一个程序,涉及使用OpenCV从网络摄像机实时处理视频 . 我希望能够(在处理过程中的任何时间)捕获先前的图像(例如,说十秒)并保存到视频文件中 . 我目前正在使用 queue 作为缓冲区(以推送'cv::Mat'数据),但这显然效率不高,因为几秒钟的图像很快就耗尽了所有的PC内存 . 我尝试使用'cv::imencode'压缩图像,但使用PNG没有太大区别,我需要一个使用 hard-d...
  • 0 votes
     answers
     views

    avformat_write_header在ffmepg中无法正常工作

    我正在使用FFMPEG进行mp4文件创建项目,我试图基于FFMPEG muxing转换视频数据包的流信息,重新转换代码,但转换成文件后报头被损坏 . / 此代码使用设置流信息 / AVFormatContext *input_context,*output_context; AVDictionary *opt; AVStream *out_stream; AVCodecCont...
  • 4 votes
     answers
     views

    pthread_join()是否允许在调用线程上继续执行?

    edit: 我错误地假设线程开始在 pthread_join 上运行,当它们真正开始在 pthread_create 上运行时 . 我'm learning to use Posix threads, and I'读过:pthread_join() - wait for thread termination 因此,在代码示例中,在两个启动线程结束之前,不会到达main的exit(0) .但是在第...
  • 0 votes
     answers
     views

    BullsEye的代码覆盖率测试

    我使用Bullseye进行代码覆盖测试和一些C代码 . 我成功地用Bullseye检测了我的c代码 . 然后我试着拆开它,看看那里有什么 . 我期待在 every control transfer location 插入一些探针功能 . 如 for , if , while 等 . 但令我惊讶的是,我只看到 a single probe at the the beginning of each o...
  • 182 votes
     answers
     views

    为什么GCC为几乎相同的C代码生成如此完全不同的程序集?

    在编写优化的 ftol 函数时,我在 GCC 4.6.1 中发现了一些非常奇怪的行为 . 让我先向您展示代码(为清楚起见,我标记了差异): fast_trunc_one,C: int fast_trunc_one(int i) { int mantissa, exponent, sign, r; mantissa = (i & 0x07fffff) | 0x800000;...
  • 156 votes
     answers
     views

    警告:隐式声明函数

    我的编译器(GCC)给了我警告: 警告:隐式声明函数 请帮我理解为什么会这样 .
  • 1 votes
     answers
     views

    如何直接从共享库初始化llvm覆盖?

    我正在测试一个C / C共享库,我用 -fprofile-arcs -ftest-coverage -pg 标志编译了库,并用 -fprofile-arcs -ftest-coverage 标志链接 . 我正在加载,并通过ctypes python例程在Python中测试共享库 . 因为我的python二进制文件没有与 -fprofile-arcs -ftest-coverage 标志链接,所以不...
  • 1 votes
     answers
     views

    如何将Bullseye代码覆盖率添加到使用gcc编译的代码中

    如何将Bullseye代码覆盖率添加到使用gcc编译的代码中? 请参阅下面的答案 .
  • 2 votes
     answers
     views

    在linux上安装FTDI设备驱动程序[关闭]

    我试图在ubuntu 10.04上安装FTDI的虚拟COM驱动程序(http://www.ftdichip.com/Drivers/VCP/Linux/ftdi_sio.tar.gz) . 我下载了文件并尝试编译它 . 但它显示如下错误: 谁能告诉我原因?我安装了linux内核开发包 以下是make的输出 . 由于尺寸限制,我删除了一些零件 sudo make gcc -Wall -D__KERN...
  • 8 votes
     answers
     views

    内核模块Init和Exit函数的调用顺序错误

    我'm making a very simple hello world kernel module and getting some crazy behavior. This worked until I upgraded to kernel 3.3.8 and now it... Well, it'在退出时调用 init 函数,在初始化时调用 exit 函数 . 我确保我的名字是正确的 // ...
  • 0 votes
     answers
     views

    Makefile中的objs会破坏内核模块

    我正在尝试为显示器编写内核模块,但我正在努力学习基础知识 . 如果我尝试分离源文件并通过-objs在Makefile中定义它,内核模块将被编译,加载,但不会做任何事情 . 码: driver.c #define LINUX #include <linux/module.h> #include <linux/kernel.h> #include "display....
  • 3 votes
     answers
     views

    为Linux内核编写内置对象?

    无论我在哪里搜索Linux内核开发,我都会得到创建Linux内核模块的答案 . 例 /* * hello−1.c − The simplest kernel module. */ #include <linux/module.h> /* Needed by all modules */ #include <linux/kernel.h> /* Needed for KERN...
  • 1 votes
     answers
     views

    构建linux内核模块

    我是一个Windows驱动程序员,是Linux内核开发的新手 . 我已经安装了linux内核头文件 . 我在linux内核中尝试我的helloworld模块 . #include <linux/init.h> #include <linux/module.h> /*MODULE_LICENSE("Dual BSD/GPL");*/ static int ...
  • 0 votes
     answers
     views

    加载简单内核模块时可疑的返回码

    我写了一个简单的hello world内核模块,如下所示: #include <linux/init.h> #include <linux/module.h> static void hello_init(void){ printk(KERN_ALERT "TEST: Hello world kernel \n"); return 0;...
  • 1 votes
     answers
     views

    如何查看对内核模块所做的更改

    我是Linux内核的新手,我在我的Linux机器上运行Module并且可以使用lsmod命令查看它 . 现在我对这个moudule进行了一些更改(添加了一些printk),重新编译它并得到.ko . 现在我做了rmmod到删除此模块(其他一些模块也使用此模块)并执行insmod xxx.ko并重新启动系统 . 现在我在哪里看到使用printk添加的语句,我试图看到使用 dmesg grep | “...
  • 1 votes
     answers
     views

    可装入的内核模块无法在不同的计算机上正确编译

    我正在尝试为ARM架构制作可加载的内核模块 . 例如,我做了简单的hello.c #include <linux/module.h> /* Needed by all modules */ #include <linux/kernel.h> /* Needed for KERN_INFO */ static int __init hello_sta...
  • 30 votes
     answers
     views

    如何打印浮点数的EXACT值?

    首先,这不是浮点新手问题 . 我知道浮点运算的结果(更不用说超越函数)通常不能准确表示,并且大多数终止小数不能完全表示为二进制浮点数 . 也就是说,每个可能的浮点值完全对应于二元有理数(有理数 p/q ,其中 q 是2的幂),而后者又具有精确的十进制表示 . 我的问题是:你如何有效地找到这个精确的十进制表示? sprintf 和类似的函数通常只指定多个有效数字来唯一确定原始浮点值;他们没有使用,...
  • 4 votes
     answers
     views

    C SDL2-是否可以消除一些抽象层?

    我一直在努力学习如何将SDL库与C(而不是C)一起使用,并且最近发现我遇到的所有错误的原因是我正在查看SDL1教程,而不是SDL2教程 . 我已经发现SDL2在SDL1上实现了许多抽象层(据我所知),这似乎是不可能绕过的 . 具体来说,在SDL1中,在屏幕上绘制一组像素是通过以下方式完成的: 定义曲面 - 找到像素的rgb值 - 在曲面上绘制像素 - 在屏幕上绘制曲面 在SDL2中,它似乎完成了:...
  • 2 votes
     answers
     views

    SDL_SetVideoMode Desired vs. Obtained

    我正在用C语言编写使用SDL进行图形处理的程序 . 我的程序已针对以每像素32位模式写入视频进行了优化 . 我只是沿着每条扫描线写下蓝色,绿色,红色,跳过,蓝色,绿色,红色,跳过,蓝色,绿色,红色,跳过(跳过32 bpp格式的额外字节) . 这有可能失败吗? SDL能否否认我32 bpp并给我别的东西?不同颜色的字节偏移量会以不同的顺序结束并搞砸我的程序吗?
  • 1 votes
     answers
     views

    将UINT32颜色格式从AaBbGgRr转换为AaRrGgBb

    我试图将AINTBbGgRr中的UINT32颜色格式转换为c中的AaRrGgBb . Aa = Alpha,Bb =蓝色,Gg =绿色Rr =红色 . 通过转换,我的意思是切换Bb和Rr的值 . 有人知道如何实现这一目标吗?
  • 128 votes
     answers
     views

    是否要求短路逻辑运营商?和评估顺序?

    ANSI标准是否要求逻辑运算符在C或C中短路? 我很困惑,因为我记得K&R的书说你的代码不应该依赖于这些操作被短路,因为它们可能没有 . 有人可以指出标准中的哪个位置逻辑操作始终是短路的吗?我最感兴趣的是C,C的答案也很棒 . 我还记得读(不记得在哪里)评估顺序没有严格定义,所以你的代码不应该依赖或假设表达式中的函数将按特定的顺序执行:在语句的末尾所有引用的函数将被调用,但编译器可以自由选择最有效...
  • 30 votes
     answers
     views

    为什么C没有逻辑赋值运算符?

    我需要编写表单的声明 a = a || expr; 其中应评估 expr ,并将结果分配给 a iff a 未设置 . 这取决于逻辑OR的短路能力 . 当然,写上述内容的时间更短 a ||= expr; 但是(令我惊讶的是)C没有逻辑赋值运算符 . 所以我的问题是双重的 . 首先,是否有一种更短的方式来编写标准C中的第一个语句(三元运算符更糟糕 - a = a ? a : expr 要...
  • 0 votes
     answers
     views

    逻辑运算符

    我遇到了一个答案,我似乎无法弄清楚为什么它是正确的 . 因此有两个int变量x和y,它们分别代表0x66和0x39 . 问题是基于表达式的结果值是什么 . x && y is apparently 0x01 (1) x || y is 1 !x || !y is 0 x && ~y is 1 从我的想法来看,我认为只要一个论证不是零就认为是真的 . 因此只要x和y...
  • 1 votes
     answers
     views

    Makefile,更好地理解规则

    阅读official documentation 先决条件是用作创建目标的输入的文件 . 目标通常取决于几个文件 . 如果我的源文件已经包含 Headers ,我应该在规则中列出 Headers 吗? src.c #include <stdio.h> #include "myheader.h" int main() { printMessage(); ...
  • 54 votes
     answers
     views

    通过命令行附加到GNU make变量

    我正在使用GNU-make Makefile来构建一个包含多个目标的C项目( all , clean 和一些项目特定目标) . 在调试过程中,我想在没有永久编辑Makefile的情况下将一些标志附加到单个构建中(例如添加调试符号或设置预处理器标志) . 在过去,我做了如下(使用调试符号示例): make target CFLAGS+=-g 不幸的是,这并没有附加到 CFLAGS 变量,而是清除它...
  • 126 votes
     answers
     views

    为什么声明一个只包含C中数组的结构?

    我遇到了一些包含以下内容的代码: struct ABC { unsigned long array[MAX]; } abc; 何时使用这样的声明是有意义的?
  • 1 votes
     answers
     views

    在C中分配数组和结构[重复]

    可能重复:为什么C支持在结构中成员分配数组,但一般不支持? 在C语言中, struct 可以由 immediate assignment 复制,但 array 不能 . int a[2] = {1, 2}; int a2[2] = a; /*illegal*/ int *p = a; /*assigned by reference*/ struct S {int i; int j;}; st...
  • -3 votes
     answers
     views

    C,结构指针的赋值改变了赋值右侧的内容

    我有以下结构: typedef struct{ char *name; int size; void *data; } Struct1; typedef struct st2{ char *name; struct st2 **Struct2array; Struct1 **Struct1array; int Struct1_n; i...
  • 2 votes
     answers
     views

    设置接受套接字的缓冲区大小

    在Linux下设置accept()'d套接字的缓冲区(即SO_RCVBUF,SO_SNDBUF)大小的正确方法是什么? 显而易见的答案是在新创建的套接字上调用setsockopt(),但tcp手册页指出: 在单个连接上,必须在listen(2)或connect(2)调用之前设置套接字缓冲区大小才能使其生效 . 有关更多信息,请参阅socket(7) . 这是有意义的,因为缓冲区可能在创建时分配...
  • 79 votes
     answers
     views

    在Linux内核模块中读/写文件

    我知道所有关于为什么不应该从内核读/写文件的讨论,而是如何使用/ proc或netlink来做到这一点 . 无论如何我想读/写 . 我也读过Driving Me Nuts - Things You Never Should Do in the Kernel . 但是,问题是2.6.30不导出 sys_read() . 相反,它包含在 SYSCALL_DEFINE3 中 . 因此,如果我在我的模块...

热门问题