<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Yitzhan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Yitzhan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Yitzhan]]></copyright><item><title><![CDATA[QT-c++使用FFMpeg库实现音视频同步的方法]]></title><link>https://blog.youkuaiyun.com/Yitzhan/article/details/147105475</link><guid>https://blog.youkuaiyun.com/Yitzhan/article/details/147105475</guid><author>Yitzhan</author><pubDate>Fri, 11 Apr 2025 09:15:00 +0800</pubDate><description><![CDATA[使用SwrContext进行音频重采样，将解码后的音频数据转换为适合播放的格式。时间戳计算：FFMpeg中的时间戳是以时间基（AVRational）为单位的，需要使用av_q2d函数将其转换为秒。线程安全：在实际应用中，音频和视频的解码和播放可能需要在不同的线程中进行，以避免阻塞主线程。错误处理：FFMpeg的函数调用可能会返回错误码，需要进行适当的错误处理，确保程序的健壮性。的方式，即以音频的播放时间为基准来调整视频的播放。以音频的播放时间为基准，调整视频帧的显示时间。// 查找音频和视频解码器。]]></description><category></category></item><item><title><![CDATA[基于QT ffmpeg多媒体播放器项目(一)]]></title><link>https://blog.youkuaiyun.com/Yitzhan/article/details/147104911</link><guid>https://blog.youkuaiyun.com/Yitzhan/article/details/147104911</guid><author>Yitzhan</author><pubDate>Thu, 10 Apr 2025 09:15:00 +0800</pubDate><description><![CDATA[FFmpeg 是一个开源的多媒体处理库，广泛用于音视频的编码、解码、转码、处理和流媒体传输等任务。创建一个新的视频流，并设置其参数。通常需要设置视频的宽、高、帧率、比特率等参数。在使用 FFmpeg 库之前，需要先初始化相关的模块。avformat_alloc_output_context2 函数。avcodec_parameters_to_context 函数。遍历 formatContext 中的流列表，找到视频流。从解码后的帧中读取数据并进行编码。从找到的视频流中获取编解码器参数。]]></description><category></category></item><item><title><![CDATA[ioremap，中断，上半部&下半部(tasklet, workqueue, jiffies)]]></title><link>https://blog.youkuaiyun.com/Yitzhan/article/details/146129938</link><guid>https://blog.youkuaiyun.com/Yitzhan/article/details/146129938</guid><author>Yitzhan</author><pubDate>Sun, 09 Mar 2025 16:00:00 +0800</pubDate><description><![CDATA[timer_setup() 是一个存在于 Linux 内核中的函数，通常用于设置内核定时器。当驱动程序需要访问硬件设备的寄存器时，通常会使用 ioremap 将寄存器所在的物理地址映射到内核虚拟地址空间，然后通过虚拟地址进行读写操作。中断：通过 request_irq 申请中断，并在 struct irqaction 中注册中断处理程序。：一个指向设备特定数据的指针，通常用于区分多个设备共享同一个中断的情况。缓存一致性: 对于一些硬件设备，可能需要禁用缓存或使用特定的内存类型，以确保数据的一致性。]]></description><category></category></item><item><title><![CDATA[内核设备字符框架]]></title><link>https://blog.youkuaiyun.com/Yitzhan/article/details/146130212</link><guid>https://blog.youkuaiyun.com/Yitzhan/article/details/146130212</guid><author>Yitzhan</author><pubDate>Sun, 09 Mar 2025 12:13:54 +0800</pubDate><description><![CDATA[define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS))  // 获取主设备号。以下是一个简单的字符设备驱动程序示例，展示了如何注册和注销设备号、创建和添加字符设备，并在读写操作中进行用户空间和内核空间的数据拷贝。这个示例代码展示了如何创建一个简单的字符设备驱动程序，包括设备号的注册和注销、字符设备的创建和添加、以及读写操作中的数据拷贝。这将在 /dev 下创建一个名为 haha0 的字符设备文件，主设备号为250，次设备号为0。]]></description><category></category></item><item><title><![CDATA[内存映射，平台设备框架，平台设备和驱动分开， 平台设备添加资源]]></title><link>https://blog.youkuaiyun.com/Yitzhan/article/details/146129969</link><guid>https://blog.youkuaiyun.com/Yitzhan/article/details/146129969</guid><author>Yitzhan</author><pubDate>Sun, 09 Mar 2025 12:01:52 +0800</pubDate><description><![CDATA[平台设备：通过 platform_device_register 注册，platform_device_unregister 注销。平台驱动：通过 platform_driver_register 注册，platform_driver_unregister 注销。平台设备框架是嵌入式 Linux 系统中管理片上设备和外设的重要机制，通过它，设备和驱动可以独立开发，并通过总线进行自动匹配。平台设备框架提供了一种抽象层，使得设备驱动程序可以与设备独立开发，并通过总线（平台总线）进行匹配和交互。]]></description><category></category></item><item><title><![CDATA[阻塞、非阻塞、poll机制、异步详解]]></title><link>https://blog.youkuaiyun.com/Yitzhan/article/details/146129691</link><guid>https://blog.youkuaiyun.com/Yitzhan/article/details/146129691</guid><author>Yitzhan</author><pubDate>Sun, 09 Mar 2025 11:51:24 +0800</pubDate><description><![CDATA[4.wake_up可以唤醒TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE，因为TASK_NORMAL == TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE。这个函数在处理文件描述符的异步 I/O 时非常有用，它可以将文件描述符加入或移出异步通知队列。，wait_event设置状态为TASK_UNINTERRUPTIBLE，而wait_event_interruptible设置状态为TASK_INTERRUPTIBLE。]]></description><category></category></item></channel></rss>