6 Ven_J

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 5w+

getopt函数

getopt函数        用来解析命令行选项参数 #include <unistd.h> int getopt(int argc, char *const argv[], const char *optstring); extern char *optarg; extern int optind, opterr, optopt;Variable:    i...

2018-11-22 21:55:11

linux内核数据结构之等待队列

Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列项中都包含一个list_head类型的域作为"连接件"。它通过一个双链表和把等待task的头,和等待的进程列表链接起来。从上图

2017-08-11 16:12:13

基于单幅图像的快速去雾算法实现

基于图像复原的去雾方法中,最有代表性的是暗通道去雾算法,但是暗通道去雾算法的处理时间比较长,不能达到实时处理。在阅读了大量文献及其参考文献,找到能够实时处理的去雾算法,是清华大学写的文章:基于单幅图像的快速去雾算法,作者:刘倩,陈茂华,周东华。

2017-08-10 14:58:41

ffplay源码剖析(3.2.4 + sdl2)(3):解码

上一篇讲到ffplay的初始化和解复用,在解复用过程中创建了三个解码线程:音频、视频和字幕解码线程。同时将解复用的数据包分别添加到了音频包队列audioq、视频包队列videoq和字幕包队列subtitleq中。今天要讲的是从这三个包队列中分别进行解码,然后将解码出来的数据帧添加到对应的帧队列。显示线程就是从帧队列中取出数据帧然后进行显示。read_thead函数中用于解码的函数是stream

2017-08-05 20:09:51

图像去雾技术综述

研究图像去雾技术有一段时间,阅读很多文献以及实现了很多算法。因此将个人对图像去雾技术的理解写成这篇文章,避免自己忘记,以及跟广大网友交流学习。1、概述图像去雾的研究算法有很多,但是主要分为两类:基于图像增强的去雾算法和基于图像复原的去雾算法。基于图像增强的去雾算法去除图像的噪声,提高图像的对比度,从而恢复出无雾清晰视频。具有代表性的图像增强去雾算法有: 1. 直方图均衡

2017-08-04 16:55:40

ffplay源码剖析(3.2.4 + sdl2)(2):初始化与解复用

接上一篇继续阅读ffplay源码,前一篇从总体上了解了ffplay的整个框架:解复用,解码,显示播放。这一篇就讲第一个解复用。int main(int argc, char **argv){ int flags; VideoState *is; /* register all codecs, demux and protocols */#if CONFIG_AVD

2017-07-19 17:26:20

FFmpeg中AVPacket和AVFrame关系

最近在研究ffplay的源码,ffplay中有两个队列一个PacketQueue, 一个FrameQueue,对这两个队列之间的关系不是很清楚。于是对这两个结构进行了深入的研究。AVPacket结构用于存储压缩的数据,分别包括有音频压缩数据,视频压缩数据和字幕压缩数据。它通常在解复用操作后存储压缩数据,然后作为输入传给解码器。或者由编码器输出然后传递给复用器。对于视频压缩数据,一个AVPa

2017-07-10 09:23:07

ffplay源码剖析(3.2.4 + sdl2)(1):函数调用流程图

最近在学习ffplay的源码知识,网上关于ffplay的都是老版本的基于sdl1.x版本的,于是自己结合自己的理解分析了一下ffpaly3.2.4(基于sdl2)的源码,并记录下来供自己以后查阅。如果有理解错误,还请指正。一、总体框架:ffmpeg3.2.4版本中的ffplay的函数调用图如下所示:avdevice_register_all()这ffmpeg设备进行初始化与注册

2017-07-05 11:54:28

第六章:高级字符驱动程序操作

1、ioctl​除了读取和写入设备之外,大部分驱动程序还需要另外一种能力,即通过设备驱动程序执行各种类型的硬件控制。在用户空间,ioctl系统调用有如下原型:int ioctl(int fd, unsigned long cmd, .../*char *argp*/);驱动程序的ioctl方法原型与用户空间的版本不一样int (*ioctl)

2017-07-05 09:43:29

第五章:并发与竞态

两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,就成为竞争条件(race condition)。竟态通常作为对资源的共享访问结果而产生的。当两个或多个进程需要访问相同的数据结构(或硬件资源)时,混合的可能性就永远存在。 因此在自己设计驱动程序的时候,第一个要记住的规则是,只要可能,就应该避免资源共享。如果没有并发的访问,也就不会有竟态的产生。 因此,仔细编写的内核代码

2017-07-05 09:43:16

第三章:字符设备驱动

编写驱动程序的第一步就是:定义驱动程序为用户程序提供的功能(机制)1、主设备号和次设备号      对字符设备的访问是通过文件系统内的设备名称进行的。那些名称被称为特殊文件、设备文件、或者简单称之为文件系统树的节点,他们通常位于/dev目录下。    一个字符设备或者块设备都有一个主设备号和次设备号。主设备号和次设备号统称为设备号。主设备号用来区分不同种类的设备

2017-07-05 09:42:10

第二章:构造和运行模块

1、一个简单的hello,world的模块:#include /* 用于指定初始化和清楚函数 */#include /* 包含有可装载模块所需的大量符号和函数定义 */#include static int hello_init(void){ printk(KERN_ALERT "Hello, World\n"); return 0;}

2017-07-05 09:41:42

第一章:设备驱动程序

设备驱动程序是进入linux内核的大门。设备驱动程序的作用在于提供机制,而不是提供策略.需要提供什么功能(机制)和如何使用这些功能(策略)。内核功能的划分:进程管理:复制创建和销毁进程,并处理它们和外部世界之间的连接。内存管理文件系统:linux中每个对象几乎都可以当作文件来看待。设备控制网络功能linux有一个很

2017-07-05 09:40:41

dm-crypt加密

安装 dmsetup和cryptsetup。(apt-get install dmsetup cryptsetup)检查是否已经建立设备映像程式 。(ls -l  /dev/mapper/control)cat /proc/crypto 查看aes模块是否加载,如果没有 modprobe aes。(可以是aes的任意一种)加载dm-crypt模块 modprobe dm-c

2017-07-03 14:24:44

ecryptfs加密

首先安装 ecryptfs-utils。(sudo apt-get install ecryptfs-utils)载入ecryptfs模块。(sudo modprobe ecryptfs)挂载ecryptfs文件系统sudo mount -t ecryptfs real-path ecryptfs-mount-path建议real-path和ecryptfs

2017-07-03 14:24:31

多线程编程

#include int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*fun)(void *), void *arg);/* * 创建线程 * @tid —— 线程id的类型为pthread_t,成功创建后的线程由tid返回。 * @attr —— 指定创建线程的属性,如线程优先级、初试栈大小、是否

2017-07-03 14:23:39

struct inode 和 struct file

1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node    i_hash;struct list_head    i_list;struct list_head

2017-06-26 10:45:20

linux内核链表实现

linux内核链表实现  内核实现的是双向循环链表,提供了链表操作的基本功能。(1)初始化链表头结点#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name)static inli

2017-06-20 11:28:24

dlopen 介绍

dlopen 介绍#include void *dlopen(const char *filename, int flag);char *dlerror(void);void *dlsym(void *handle, const char *symbol);int dlclose(void *handle);打开一个动态链接库,并返回动态链接库的句柄。flag:

2017-06-19 11:25:54

glob和snprintf

glob函数        用于linux文件系统中路径名称的模式匹配。#includeint glob(const char *pattern, int flages, int (*errfunc)(const char* epath, int errno), glob_t *pglob);void globfree(glob_t *pgl

2017-06-16 11:24:31

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 分享达人
    分享达人
    成功上传6个资源即可获取