自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

多媒体开发者

博学之,审问之,慎思之,明辨之,笃行之!

  • 博客(197)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 HDR视频技术

视频与图像, 是人类认识自然, 感受自然, 记录自然的两种最为直观的方式, 因此,自从 1839 年第一台照相机被发明出来之后,人类一直致力于更好地,更完善地,更精确地记录自然界的光影。HDR 技术的发明与普及,使得人类前所未有地接近通过人造的显示设备,展示出如同自然界一样的丰富的色彩与丰富的亮度。传统图像存在的问题是:与现实中的色彩相比,传统图像中的颜色数量太少,这就会导致很多自然界中的图像并不能完美地显示在图像上,从而导致色差的出现;

2024-11-09 14:58:17 713 1

原创 个人开发主页

新一代高效视频编码H.265/HEVC原理、标准和实现》、《WebRTC技术详解》《App架构师实践指南》、《代码整洁之道》

2024-10-06 16:06:30 1215 1

原创 【Android视频框架】MediaMuxer

fill:#333;stroke:1;fill:none;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;MediaMuxerOggWriterWebmWriter。

2025-03-30 16:36:19 357

原创 HDR视频技术之十一:HEVCH.265 的 HDR 编码方案

前文我们对 HEVC 的 HDR 编码优化技术做了介绍,侧重编码性能的提升。本章主要阐述 HEVC 中 HDR/WCG 相关的整体编码方案, 包括不同应用场景下的 HEVC 扩展编码技术。

2024-12-23 16:23:39 2090

原创 HDR视频技术之十:MPEG 及 VCEG 的 HDR 编码优化

与传统标准动态范围( SDR)视频相比,高动态范围( HDR)视频由于比特深度的增加提供了更加丰富的亮区细节和暗区细节。最新的显示技术通过清晰地再现 HDR 视频内容使得为用户提供身临其境的观看体验成为可能。面对目前日益增长的 HDR 视频消费需求,研究现有的压缩工具或引入新的技术来高效压缩 HDR 视频变得十分迫切。本文将介绍有关MPEG 及 VCEG 针对 HDR 视频压缩的一些工作。

2024-12-21 19:28:14 1265

原创 HDR视频技术之九:HDR 质量评价技术

HDR 图像具有高亮度和宽色域的特点,因此其主观评测一般采取双刺激法,对不同的片段进行多次评估可以提高其准确性,但因此需要耗费大量的人力和测试成本。工业界提出多种客观评价方法,下一节将对其作详细介绍。Francesco 等人对于各类 FR 方法做了评测[25],其评测标准是与主观测试评分做相似度估计,常用的标准吻合程度通常用 LCC 线性相关系数、 SROCC 秩相关系数、 RMSE均方根误差、 OR 背离率等参数来衡量。其中客观评分要先进行非线性压缩,再与主观评分做拟合。

2024-12-21 16:28:16 1432

原创 HDR视频技术之八:色域映射

在日常生活中,人们会在多种场景和设备上观看图像或视频。由于显示设备的多样性,自然会引发一个问题:给定一幅图像, 如何能够保证人们在这些不同的显示设备上看到的图像是一致的?更进一步, 如何使得不同显示设备上看到的图像, 与这幅图像的原场景是一致的?由于不同显示设备原理、 设计、 颜色标准不尽相同, 想要实现这一目标是非常困难的。如果希望不同的人在不同的显示设备上看到的图像一致,首先需要了解哪些原因造成不一致。不同人视觉特性不同。

2024-12-21 15:05:01 2080

原创 HDR视频技术之七:逆色调映射

HDR 技术说是继 4K 之后视频领域的又一次重大技术突破,不仅提高图像的动态范围,同时也提供了更宽的色域,并提升了画面在高光和暗部的细节信息,带给观看者更加真实的视觉体验。但作为 HDR 产业链的核心,内容短缺的问题仍然是 HDR 普及和成熟的重要限制因素。众多电视厂商将 HDR 技术作为其产品规划中的重要技术,主要是在硬件方面进行提升。而由于 HDR 内容制作对于设备要求较高,对采集、调色、显示等多方面都需要较高的质量要求,内容制作的复杂度和周期长等因素,导致了 HDR 内容的匮乏。

2024-12-14 19:10:10 1176

原创 HDR视频技术之六:色调映射

视频色调映射算法的不同总体上体现在四个方面, 包括: 色调曲线, 处理方式, 算法目标以及时域滤波。同时,由于视频色调映射所需的运算量非常庞大,因此,运算速度也是一个重要的评价指标。色调曲线:这是色调映射算法的核心。大部分色调映射算法,以及后面我们将要介绍的算法,主要使用以下几种函数作为色调曲线:线性函数,指数/对数函数, sigmoid/s-shaped 函数以及基于灰度图的色调曲线。同时, 还要少量色调映射算法在梯度域进行映射。处理方式: 处理方式主要分为两种。

2024-12-07 19:31:08 1836

原创 HDR视频技术之五:HDR生产流程

在介绍 HDR 的生产流程之前,我们先介绍下视频制作与传输的一些基本知识。下图为一个传统的 SDR 视频内容制作的基本流程图。图中包括了制作,后期处理、内容分发及多类型发行等过程,同时包含了实时制作和离线制作,包含了卫星、地面广播、广域网、光盘等常见的内容分发途径, 以及 IPTV、电脑、移动设备等终端显示设备。与 SDR 类似,从 HDR 的拍摄到最终的显示,也包括了拍摄、制作、后期处理、传输、显示等多个环节,是一个端到端的完整系统。

2024-12-07 11:45:52 2019

原创 颜色空间模型YUV格式详解

为了使用人的视角特性以降低数据量,通常把RGB空间表示的彩色图像变换到其他彩色空间。目前采用的彩色空间变换有三种:YIQ, YUV和YCrCb。每一种彩色空间都产生一种亮度分量信号和两种色度分量信号,而每一种变换使用的参数都是为了适应某种类型的显示设备。其中,YIQ适用于NTSC彩色电视制式,YUV适用于PAL和SECAM彩色电视制式,而YCrCb适用于计算机用的显示器。

2024-12-02 14:51:48 1623

原创 HDR视频技术之四:HDR 主要标准

HDR 是 UHD 技术中最重要维度之一,带来新的视觉呈现体验。HDR 技术涉及到采集、加工、传输、呈现等视频流程上的多个环节,需要定义出互联互通的产业标准,以支持规模化应用和部署。本文整理当前 HDR 应用中的一些代表性的国际标准。

2024-11-23 15:28:48 3963

原创 HDR视频技术之三:色度学与颜色空间

HDR 技术的第二个理论基础是色度学。从前面的内容中可以了解到,光学以及人类视觉感知模型为人类提供了解释与分析人类感知亮度的理论基础,但是 HDR 技术不仅仅关注于提升图像与视频的亮度范围,同时也关注于提供更加丰富的色彩。因此,本章将首先介绍人眼与色度学相关的生理特征以及人类对颜色的识别方式,然后介绍颜色空间的概念,最后再回到 HDR,介绍与 HDR 相关的颜色标准。

2024-11-23 11:08:30 1820

原创 HDR视频技术之二:光电转换与 HDR 图像显示

将自然界中的真实场景转换为屏幕上显示出来的图像,往往需要经过两个主要的步骤:第一个是通过摄影设备,将外界的光信息转换为图像信息存储起来,本质上是存储为数字信号;第二个是通过显示设备,将图像信息转换为屏幕输出的光信息。下图展示了从拍摄到现实的电视信号链。在整个过程中,信息流要经过两个重要的非线性映射,才能形成我们在显示设备上看到的图像。其中,相机的非线性映射通常称为光电转换函数( OETF),而显示端的显示器的非线性映射通常称为电光转换函数( EOTF)。通常, OETF 和 EOTF 并不是互逆关系。

2024-11-09 16:23:40 2760 1

原创 HDR视频技术之一:光学与人类视觉感知特性基础

HDR, 即高动态范围是一个光学以及视觉领域的概念, 如果想要清楚地理解什么是HDR, HDR 与 LDR 的差别在哪里, 以及 HDR 技术的理论基础,首先需要对光学以及人类视觉感知系统( Human Visual System, HVS)有基本的了解。

2024-11-09 15:04:08 1267

转载 Linux系统中存在的各种进程间通信机制

前面我们对进程间通信的本质和框架有了基本的了解,下面我们来简单介绍一下Linux中的所有进程间通信机制。我们先来看一下总图。我们先把这张图简介浏览一下。首先从大类上分,进程间通信方法可以分为3类,消息传递式、共享内存式、进程间同步。为啥这里会有进程间同步呢?进程间同步是为了同步两个进程对共享内存的读写,进程间同步也算是在两个进程间传递了信息,所以把进程间同步也放在了进程间通信中。可以看到共享内存式机制比消息传递式机制要少,我们就先介绍共享内存式。

2024-10-04 18:42:05 400

原创 AHandler AMessage ALooper消息机制

普通消息被Post到消息队列,Looper不断的从队列中取出消息并分发给相应的Handler处理。如果是需答复消息的话使用PostAndAwaitResponse,Handler处理完以后通过postReply将消息返回给发送方,发送方通过新建的responsemsg接收。

2024-10-04 16:07:08 1227

原创 多媒体领域格式汇总

目录标题视频文件格式音频文件格式视频编解码格式音频编解码格式字幕格式流媒体协议视频文件格式格式全称阵营ASFAdvanced Systems Format微软AVIAudio/Video Interleaved微软DATdata无FLVflash videoAdobeF4VFlash MP4AdobeJPGJoint Photographic Experts GroupJPEG/ISOTSTransport Str

2024-09-23 21:45:12 884

原创 色彩管理中的Gamma值的理解

对于采集设备,如相机或者扫描仪,Gamma为1.0的时候,图像不存在压缩和释放,直接将原自然高动态亮度1:1输出为高动态显示信号,如果不对图像进行GAMMA校正,整体图像会显得更亮,会失去更多的中间调和暗调,同时图像文件的大小也会更大。如我们熟知的RAW工作流程就是一种线性GAMMA流程。

2024-09-21 18:40:59 2174

转载 QoS和QoE初学者指南

那么究竟什么是 QoS 和 QoE?根据 ITU 的描述,QoS 是指 “电信服务的全部特性,这些特性与该服务是否能够满足用户明确和隐含需求的能力有关”。在这个定义下,QoS 衡量视频传输基础设施的性能,包括第三方或者内部 CDN、跟踪数据(如总体吞吐量、延迟、错误率以及缓存命中率)。相比之下,ITU 对于 QoE 的定义是 “终端用户主观感知到的应用程序或者服务的整体可接受性。它包括完整的端到端系统效应(客户、终端、网络、服务基础设施等),有可能受到用户期望和环境影响”。

2024-09-21 14:41:11 444

原创 VLC播放器介绍

整个VLC是以libvlc和libvlccore以及第三方插件组成,前端是独立的。据悉VLC C源码是黑客级别,本人看了多眼之后,深以为然,包括有:类对象架构,观察者模式,插件管理系统等值得学习的代码。另外一方面,整个代码要消化和理解也是一件不容易的事情。而且由于历史原因,整个VLC代码到处充满了垃圾和无用的代码,估计清理起来也非常麻烦。

2024-09-15 11:56:33 1317

原创 【FFMPEG】FFplay音视频同步分析(下)

首先说明一下,audio_decode_frame() 函数跟解码毫无关系,真正的解码函数是 decoder_decode_frame。audio_decode_frame() 函数的主要作用是从 FrameQueue 队列里面读取 AVFrame ,然后把 is->audio_buf 指向 AVFrame 的 data。如果 AVFrame 的音频信息跟 is->audio_src 不一致,就会进行重采样。

2024-09-09 21:44:18 1438

原创 【FFMPEG】FFplay音视频同步分析(中)

之前在里面的函数开启了线程主要是负责队列里面的AVPacket的,解码出来AVFrame,然后丢给,再从把AVFrame读出来,再插入FrameQueue队列。

2024-09-07 17:36:33 1273

原创 【FFMPEG】FFplay音视频同步分析(上)

ffplay.c里面main()入口函数的流程图如下:上面的流程 分两部分讲,非重点函数 跟 重点函数。**1,**init_dynload(),设置动态库加载规则,这是一个安全函数,在 Windows 系统,默认会从当前目录加载 DLL,这容易被攻击。这个函数就是把当前目录的路径从加载规则里面去掉,里面调的是 SetDllDirectory(“”)。**2,**show_banner(),打印 ffplay 这个软件的 版权,版本之类的信息。可以删掉他,让控制台更简洁。

2024-09-07 17:31:21 1202

原创 【多媒体文件格式】MP4

1个box由两部分组成:box header、box body。box header:box的元数据,比如box type、box size。box body:box的数据部分,实际存储的内容跟box类型有关,比如mdat中body部分存储的媒体数据。box header中,只有type、size是必选字段。当size==0时,存在largesize字段。在部分box中,还存在version、flags字段,这样的box叫做Full Box。

2024-08-24 19:41:39 2853

原创 JNI编程指南:JNI设计概述

本章是JNI设计思想的一个概述,在讲的过程中,如果有必要的话,还会对底层实现技术的原理做说明。本章也可以看作是JNIEnv指针、局部和全局引用、字段和方法ID等这些JNI主要技术的规范。有些地方我们可能还会提到一些技术是怎么样去实现的,但我们不会专注于具体的实现方式,主要还是讨论一些实现策略。

2024-05-27 10:03:31 1035

原创 JNI编程指南:使用JNI时容易出错的地方

本章总结了JNI实际应用中容易出错的一些情况供JNI程序员参考。

2024-05-24 17:42:02 616

原创 JNI编程指南:使用己有的本地库

JNI的一个使用方式就是编写一些本地方法来使用己有的本地库。本章介绍了一种生成一个包含一系列本地函数的类库的经典的方式。本章首先用一对一映射这种(one-to-one mapping)最直接的方式来写封装类.接下来,我们会介绍一种叫做共享stubs(shared stubs)的技术来简化编写封装类的任务。然后,在本章的最后,我们会讨论怎么样使用peer classes来封装本地数据结构。本章介绍的方式都是通过本地方法直接使用一个本地库,这样的话,应用程序调用本地方法时会依赖于本地库。

2024-05-24 15:51:05 902

原创 JNI编程指南:多彩的JNI招数

我们已经讨论了JNI在写本地代码和向本地应用程序中集成JVM时的特征。本章接下来的部分分介绍其它的JNI特征。

2024-05-24 11:35:23 385

原创 JNI编程指南:调用接口

本章讲述如何把一个JVM嵌入到你的本地程序当中去。一个JVM可以看作就是一个本地库。本地程序可以链接这个库,然后通过“调用接口”(invocation interface)来加载JVM。实际上,JDK中标准的启动器也就是一段简单的链接了JVM的C代码。启动器解析命令、加载JVM、并通过“调用接口”(invocation interface)运行JAVA程序。

2024-05-23 21:55:25 955

原创 JNI编程指南:异常

我们通过一些例子来介绍一些JNI异常处理函数。

2024-05-21 16:46:15 1015

原创 JNI编程指南:全局引用和本地引用

JNI提供了一些实例和数组类型(jobject、jclass、jstring、jarray等)作为不透明的引用供本地代码使用。本地代码永远不会直接操作引用指向的VM内部的数据内容。要进行这些操作,必须通过使用JNI操作一个不引用来间接操作数据内容。因为只操作引用,你不必担心特定JVM中对象的存储方式等信息。本章中,我们会详细地讨论这些问题。合理地管理JNI引用是写出高质量的代码的基础。

2024-05-20 19:24:05 1052

原创 JNI编程指南:字段和方法

现在,你知道了如何通过JNI来访问JVM中的基本类型数据和字符串、数组这样的引用类型数据,下一步就是学习怎么样和JVM中任意对象的字段和方法进行交互。比如从本地代码中调用JAVA中的方法,也就是通常说的来自本地方法中的callbacks(回调)。我们从进行字段访问和方法回调时需要的JNI函数开始讲解。本章的稍后部分我们会讨论怎么样通过一些cache(缓存)技术来优化这些操作。在最后,我们还会讨论从本地代码中访问字段和回调方法时的效率问题。

2024-05-20 17:49:08 691

原创 JNI编程指南:基本类型、字符串、数组

对于小字符串来说,Get/SetStringRegion和Get/SetString-UTFRegion这两对函数是最佳选择,因为缓冲区可以被编译器提前分配,而且永远不会产生内存溢出的异常。当你需要处理一个字符串的一部分时,使用这对函数也是不错的,因为它们提供了一个开始索引和子字符串的长度值。另外,复制少量字符串的消耗是非常小的。在使用GetStringCritical时,必须非常小心。

2024-05-20 14:34:03 882

原创 JNI编程指南:简介

JNI是JAVA平台的一个重要特征,使用它我们可以重用以前用C/C++写的大量代码。本书既是一个编程指南也是一个JNI手册。第二章通过一个简单的例子介绍了JNI。它的对象是对JNI不熟悉的初学者。3~10章对JNI的特征进行了系统的介绍。我们会举大量的例子来说明JNI的各个特征,这些特征都是JNI中重要且常用的。11~13章是关于JNI的技术规范。可以把这两章当作一个手册。本书尽量去满足各类读者的需要。指南面向初学者,手册面向有经验的人和自己实现JNI规范的人。

2024-05-20 10:31:25 1113

原创 Git详解之九:Git内部原理

现在你应该对 Git 可以作什么相当了解了,并且在一定程度上也知道了 Git 是如何实现的。本章覆盖了许多 plumbing 命令 ── 这些命令比较底层,且比你在本书其他部分学到的 porcelain 命令要来得简单。从底层了解 Git 的工作原理可以帮助你更好地理解为何 Git 实现了目前的这些功能,也使你能够针对你的工作流写出自己的工具和脚本。Git 作为一套 content-addressable 的文件系统,是一个非常强大的工具,而不仅仅只是一个 VCS 供人使用。

2024-05-16 21:30:44 920

原创 Git详解之七:自定义Git

你已经见识过绝大多数通过自定义 Git 客户端和服务端来来适应自己工作流程和项目内容的方式了。无论你创造出了什么样的工作流程,Git 都能用的顺手。

2024-05-15 11:31:20 1151

原创 Git详解之六:Git工具

你已经看到了很多高级的工具,允许你更加精确地操控你的提交和暂存区。当你碰到问题时,你应该可以很容易找出是哪个分支什么时候由谁引入了它们。如果你想在项目中使用子项目,你也已经学会了一些方法来满足这些需求。到此,你应该能够完成日常里你需要用命令行在 Git 下做的大部分事情,并且感到比较顺手。

2024-05-13 21:43:10 1261

原创 Git详解之五:分布式Git

为了便于项目中的所有开发者分享代码,我们准备好了一台服务器存放远程 Git 仓库。经过前面几章的学习,我们已经学会了一些基本的本地工作流程中所需用到的命令。接下来,我们要学习下如何利用 Git 来组织和完成分布式工作流程。特别是,当作为项目贡献者时,我们该怎么做才能方便维护者采纳更新;或者作为项目维护者时,又该怎样有效管理大量贡献者的提交。

2024-05-10 16:49:24 1147

原创 Git详解之二:Git基础

有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。启动文本编辑器后,会看到上次提交时的说明,编辑它确认没问题后保存退出,就会使用新的提交说明覆盖刚才失误的提交。上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。

2024-05-04 16:04:53 1026

Open Firmware Recommended Practice: Interrupt Mapping Version 0.9

Open Firmware Recommended Practice: Interrupt Mapping Version 0.9

2016-06-28

C#使用GDI+绘图

C#使用GDI+绘图,C#高级编程,包含代码

2013-09-23

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除