Make VLC player support polarized 3D.让VLC播放器支持偏振3D效果。

F280049C_HRPWM_死区时间高精度控制与MEP技术实战解析 本文深入解析了F280049C的HRPWM模块及其基于MEP技术的死区时间高精度控制。通过实测数据与TI官方代码对比,详细阐述了DBREDHR和DBFEDHR寄存器的配置技巧、精度优化方法及常见问题调试,为电源管理和电机控制应用提供了实用的实战指南。 阅读详情

This is the initial patch for VLC player's polarized 3D support.

将这个patch应用到VLC播放器的源代码中,会多出一个--anaglyph-scheme polarized的3d模式,全屏幕播放视频时,可以支持偏振3D效果。

# use "./vlc  --anaglyph-scheme polarized" to start vlc then watch SBS 3d in fullscreen
# brought to you by Joyer(collger AT gmail.com)
diff --git a/modules/video_filter/anaglyph.c b/modules/video_filter/anaglyph.c
index 5e103d4..6968cda 100644
--- a/modules/video_filter/anaglyph.c
+++ b/modules/video_filter/anaglyph.c
@@ -24,7 +24,7 @@
 #ifdef HAVE_CONFIG_H
 #   include "config.h"
 #endif
-
+#include <math.h>
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 
@@ -35,6 +35,7 @@ static int Create(vlc_object_t *);
 static void Destroy(vlc_object_t *);
 static picture_t *Filter(filter_t *, picture_t *);
 static void combine_side_by_side_yuv420(picture_t *, picture_t *, int, int);
+static void combine_side_by_side_yuv420_polarized(picture_t *, picture_t *);
 
 #define SCHEME_TEXT N_("Color scheme")
 #define SCHEME_LONGTEXT N_("Define the glasses' color scheme")
@@ -51,6 +52,7 @@ enum scheme_e
     red_cyan,
     trioscopic,
     magenta_cyan,
+    polarized
 };
 
 static const char *const ppsz_scheme_values[] = {
@@ -59,6 +61,7 @@ static const char *const ppsz_scheme_values[] = {
     "red-cyan",
     "trioscopic",
     "magenta-cyan",
+    "polarized"
     };
 static const char *const ppsz_scheme_descriptions[] = {
     "pure red (left)  pure green (right)",
@@ -66,6 +69,7 @@ static const char *const ppsz_scheme_descriptions[] = {
     "pure red (left)  pure cyan (right)",
     "pure green (left)  pure magenta (right)",
     "magenta (left)  cyan (right)",
+    "polarized lcd"
     };
 
 vlc_module_begin()
@@ -85,7 +89,7 @@ static const char *const ppsz_filter_options[] = {
 
 struct filter_sys_t
 {
-    int left, right;
+    int left, right, polarized;
 };
 
 
@@ -116,6 +120,7 @@ static int Create(vlc_object_t *p_this)
 
     char *psz_scheme = var_CreateGetStringCommand(p_filter,
                                                   FILTER_PREFIX "scheme");
+	p_sys->polarized = 0;
     enum scheme_e scheme = red_cyan;
     if (psz_scheme)
     {
@@ -129,6 +134,8 @@ static int Create(vlc_object_t *p_this)
             scheme = trioscopic;
         else if (!strcmp(psz_scheme, "magenta-cyan"))
             scheme = magenta_cyan;
+        else if (!strcmp(psz_scheme, "polarized"))
+            scheme = polarized;
         else
             msg_Err(p_filter, "Unknown anaglyph color scheme '%s'", psz_scheme);
     }
@@ -156,6 +163,9 @@ static int Create(vlc_object_t *p_this)
             p_sys->left = 0xff00ff;
             p_sys->right = 0x00ffff;
             break;
+	    case polarized:
+			p_sys->polarized = 1;
+			break;
         case unknown:
             msg_Err(p_filter, "Oops");
             break;
@@ -191,8 +201,12 @@ static picture_t *Filter(filter_t *p_filter, picture_t *p_pic)
         case VLC_CODEC_I420:
         case VLC_CODEC_J420:
         case VLC_CODEC_YV12:
-            combine_side_by_side_yuv420(p_pic, p_outpic,
-                                        p_sys->left, p_sys->right);
+			if (p_sys->polarized) {
+				combine_side_by_side_yuv420_polarized(p_pic, p_outpic);
+			} else {
+				combine_side_by_side_yuv420(p_pic, p_outpic,
+											p_sys->left, p_sys->right);
+			}
             break;
 
         default:
@@ -205,6 +219,68 @@ static picture_t *Filter(filter_t *p_filter, picture_t *p_pic)
     return CopyInfoAndRelease(p_outpic, p_pic);
 }
 
+static int blend(int c1, int c2) {
+	return (int)sqrt((c1*c1 + c2*c2)/2);
+}
+
+static void combine_side_by_side_yuv420_polarized(picture_t *p_inpic,
+												  picture_t *p_outpic)
+{
+    uint8_t *y1inl = p_inpic->p[Y_PLANE].p_pixels; /*input line left*/
+    uint8_t *uinl = p_inpic->p[U_PLANE].p_pixels;
+    uint8_t *vinl = p_inpic->p[V_PLANE].p_pixels;
+
+    uint8_t *y1out = p_outpic->p[Y_PLANE].p_pixels;
+    uint8_t *uout = p_outpic->p[U_PLANE].p_pixels;
+    uint8_t *vout = p_outpic->p[V_PLANE].p_pixels;
+
+    const int in_pitch = p_inpic->p[Y_PLANE].i_pitch;
+    const int out_pitch = p_outpic->p[Y_PLANE].i_pitch;
+
+    const int visible_pitch = p_inpic->p[Y_PLANE].i_visible_pitch;
+    const int visible_lines = p_inpic->p[Y_PLANE].i_visible_lines;
+    /*const int uv_visible_pitch = p_inpic->p[U_PLANE].i_visible_pitch;*/
+
+	int cnt,col;
+	int uinc = p_inpic->p[U_PLANE].i_pitch;
+	int vinc = p_inpic->p[V_PLANE].i_pitch;
+	int uoutc = p_outpic->p[U_PLANE].i_pitch;
+	int voutc = p_outpic->p[V_PLANE].i_pitch;
+	for (cnt=0;cnt<visible_lines / 2;cnt++) {
+		for(col=0; col<visible_pitch;col++) {
+			int halfw = visible_pitch / 2;
+			int left_idx = col/2;
+			int right_idx = left_idx + halfw;
+			y1out[col] = blend(y1inl[left_idx], y1inl[left_idx + in_pitch]);
+			y1out[col + out_pitch] = blend(y1inl[right_idx], y1inl[right_idx + in_pitch]);
+		}
+		y1inl += in_pitch * 2;
+		y1out += out_pitch * 2;
+	}
+
+	for (cnt=0;cnt<p_inpic->p[U_PLANE].i_visible_lines / 2;cnt++) {
+		for(col=0; col<uinc;col++) {
+			int halfw = uinc / 2;
+			int left_idx = col/2;
+			int right_idx = left_idx + halfw;
+			uout[col] = blend(uinl[left_idx], uinl[left_idx + uinc]);
+			uout[col + uoutc] = blend(uinl[right_idx], uinl[right_idx + uinc]);
+		}
+
+		for(col=0; col<vinc;col++) {
+			int halfw = vinc / 2;
+			int left_idx = col/2;
+			int right_idx = left_idx + halfw;
+			vout[col] = blend(vinl[left_idx], vinl[left_idx + vinc]);
+			vout[col + voutc] = blend(vinl[right_idx], vinl[right_idx + vinc]);
+		}
+
+		uinl += uinc * 2;
+		vinl += vinc * 2;
+		uout += uinc * 2;
+		vout += vinc * 2;
+	}
+}
 
 static void combine_side_by_side_yuv420(picture_t *p_inpic, picture_t *p_outpic,
                                         int left, int right)


【AI大模型】角色设定:给模型定身份的高效使用方法 摘要: AI大模型角色设定(RolePrompting)是提示词工程的核心优化技巧,通过赋予模型特定职业、领域和风格约束,显著提升输出专业度与适配性。文章系统拆解了角色设定的原理、万能公式(领域+身份+技能+风格+场景)、三级分层写法(基础/进阶/专家),并提供10类高频场景的模板。通过无角色与有角色输出的对比实验(Python代码量化验证),证明角色设定可使模型综合得分提升35%以上,尤其优化场景适配度与风格统一性。该技巧作为高阶提示词(如CoT、Few-Shot)的前置模块,能以零成本实现AI输出的专业 阅读详情

相关推荐

AI Agent技术架构与规模化应用:2025年技术深度解析

2025年,AI Agent(人工智能智能体)迎来了规模化应用的拐点时刻。根据Gartner等权威机构预测,企业软件中整合自主型AI的比例将从2024年的不足1%跃升至2028年的33%。本文深入剖析AI Agent的核心技术架构,从规划模块、记忆模块、工具调用模块到底层实现原理,结合Python和Go语言的实际代码示例,全面阐述AI Agent的技术实现路径。同时,本文探讨多智能体协作系统、企业级部署架构以及未来的技术演进方向,为开发者和技术决策者提供系统性的技术参考。关键词:AI Agent、大语言模型

shao.bing的专栏 1348

让VLC播放器支持SDS 3D视频转换成interlaced 3D视频(红蓝3D)

插件 VLC HSBS to interlaced 3D plugin 经过测试不能使用,2013年作者就弃坑了。 幸运的是,VLC自带此功能。 VLC, since version 2.1.0, is capable of playing 3D side-by-side (SBS) videos using anaglyph technology, viewable with typical paper red-cyan 3D glasses. To enable this filter, go t

FUN 7849

VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

[课程学习] VLSI数字信号处理系统——第九章滤波器和变换中的算法强度缩减

夏风喃喃的博客 1605

基于vlc的unity3d vr视频播放器开发,简述

基于vlc的unity3d vr视频播放器开发,简述

烟囱囱 1万+

避坑指南:Ubuntu 22.04上源码编译Autoware.universe(Humble版)的完整流程与常见错误修复

本文详细介绍了在Ubuntu 22.04上源码编译Autoware.universe(Humble版)的完整流程与常见错误修复方法。从环境准备、依赖安装到编译优化,提供了实用的避坑指南和解决方案,帮助开发者高效完成安装并避免常见问题。特别针对源码安装过程中的疑难杂症给出了具体修复建议。

weixin_33712987的博客 383

Office LTSC 2021/2024专业部署:ODT+config.xml标准化实战

Office部署本质上是企业终端软件生命周期管理的关键环节,其核心原理在于通过声明式配置驱动安装、激活与组件裁剪。Office Deployment Tool(ODT)作为微软官方命令行引擎,配合config.xml这一DSL契约文件,实现可版本控制、可审计、可回滚的自动化交付。该方案技术价值突出体现在稳定性保障(如LTSC长期支持通道)、合规性强化(不绕过授权机制)及运维提效(批量部署、离线支持)。典型应用场景覆盖教育机房批量装机、政企终端标准化、医疗HIS工作站部署等对功能冻结与系统确定性要求严苛的环境

diaocuiguo2493的博客 561

基于vlc的unity3d vr视频播放器开发,360度全景视频

最早开始是有全景图片,比较早的应用场景在照片拍摄,地图展示上。数据采集需要一台全景摄像机,放到汽车的顶部。开动汽车,慢速驾驶,就可以采集周边建筑的全景图片。数据的成本相对3d建模会低很多。广泛用在gis导航,实地查看等情景上。 来到了vr时代, 通过全景摄像机拍摄360度视频,制作为短片或者视频。在头盔里面播放,用户会拥有完全的沉浸影片的感觉。要在unit3d中实现,思路是:1、新建模型球,

烟囱囱 9707

告别机床‘卡顿’!用C语言在STM32上实现连续小线段速度前瞻(附开源代码)

本文详细介绍了如何在STM32上使用C语言实现工业级连续小线段速度前瞻控制器,解决机床运动控制中的卡顿问题。通过轻量级算法框架设计和混合精度计算策略,显著提升加工效率和表面质量。文章包含开源代码和实战案例,帮助开发者快速掌握速度前瞻规划算法在嵌入式系统中的应用。

weixin_42571738的博客 187

最强偏振3D播放器TriDef 3D安装+全格式播放配置

最强偏振3D播放器TriDef 3D安装+全格式播放配置(图文详细指南) 如果你和我一样,现在已经使用上了偏振3D的显示器,如:LG D2341P 23寸、AOC e2352Pz 23寸等。那么请你注意,无论是Stereoscopic Player还是CyberLink PowerDVD 11  3D播放器,你都会遇到不能很好使用的问题。Stereoscopic Player暂无法正常用偏振

痞子龙3D编程 2万+

AI Agent开发大全第一课-AI是什么以及如何使用AI

近年来,人工智能的迅猛发展引发了广泛的关注,尤其是“大模型”这一概念越来越深入人心。大模型,顾名思义,通常指的是那些拥有大量参数、能够处理复杂任务的机器学习模型。与传统小模型相比,大模型在数据处理、信息理解和生成等方面表现更加出色。为了理解为什么现在的AI被称为大模型,我们需要深入探讨几个关键因素。立角色是指在提示词中清晰地界定交互双方的身份。明确用户希望模型扮演的角色,可以帮助模型更准确地理解上下文和用户需求。

打造全国最全的AI Agent开发知识领域的博客 1406

论文阅读 AIED 2024 Coding with AI: How Are Tools Like ChatGPT Being Used by Students in Foundational Pro

该论文题为《Coding with AI: How Are Tools Like ChatGPT Being Used by Students in Foundational Programming Courses》,由美国犹他州立大学的 Aashish Ghimire 与 John Edwards 共同撰写,发表于人工智能与教育领域顶级会议。

CSPhD-winston的博客 309

VLC播放器使用技巧

VLC播放器使用技巧

weixin_44357071的博客 1万+

基于STM32的浴室环境智能控制系统设计

摘要:本文设计了一款基于STM32F103的智能卫浴系统,通过多传感器协同检测浴室环境参数。系统采用DS18B20检测环境与卫浴温度,DHT11监测湿度,MQ-135检测空气质量,光敏电阻测量光照强度,D203S人体热释电模块检测人员存在。当检测到异常参数时,系统自动启动相应调节功能:温度异常时控制加热/制冷继电器,湿度过高时启动通风除湿,空气质量差时进行换气,光照不足且有人时自动开灯。系统支持按键、蓝牙APP和语音三种控制方式,可手动设置参数阈值、切换防雾模式、控制音乐播放等功能。实验结果表明,该系统能有

3254968421的博客 485

VLC for Android 360度视频和3D音频:沉浸式体验完全指南

VLC for Android 是一款功能强大的媒体播放器,不仅支持几乎所有常见的音视频格式,还提供了对360度视频和3D音频的出色支持,让你在移动设备上也能享受沉浸式的媒体体验。本文将详细介绍如何在VLC for Android中开启和优化360度视频与3D音频播放,帮助你轻松打造私人沉浸式影院。 ## 为什么选择VLC for Android观看360度视频? VLC for Androi

gitblog_00785的博客 594

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VLC可用的模块列表!

visual                 可视化过滤器   projectm               libprojectM 特效   goom                   Goom 效果   glspectrum             3D OpenGL spectrum visualization   wall                   显示墙滤镜   p

面朝阳光,心向大海 的专栏 4327

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

最强偏振 3D 播放器

TriDef3D是一款3D转换播放器,可将2D影片、游戏和图片转换为立体3D效果,兼容多种3D显示设备(快门、偏光等)。它支持主流3D格式和DirectX 9/10/11游戏,适配AMD/NVIDIA显卡,但不支持VR设备。该软件预装在部分电脑中,支持37种语言。

u014771868的博客 948

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VLC详细的使用说明以及配置…

原文地址:VLC详细的使用说明以及配置说明综合示范实例精通VLC开发作者:向前冲vlc的全名是Video Lan Client,是一个开源的、跨平台的视频播放器。VLC支持大量的音视频传输、封装和编码格式,完整的功能特性列表可以在这里获得http://www.videolan.org/vlc/features.html,下面给出一个简要的不完整的列表: 操作系统:Windows、WinCE、Li

shixifengkuang的专栏 2万+

[乐意黎原创] 左右格式的3D电影怎么播放

播放左右分屏显示的影片时,此时影片是属于3D格式,用播放器QQ影音打来影片, 然后按ALT+D ,再选择3D模式.

打杂人-aerchi 3万+

立体感的3D图像(包含左右眼)生成Red-Cyan分析图

现在在作3D的东西,得到左右两个视角的图,但不知道怎么来判断效果,不知道哪个结果更好,怎么办?现在整理了些方法,备份在此,供大家分享和讨论。 1.Red-Cyan anaglyph       没有眼镜也没有关系,看视觉的一致性,视觉不一致,会带来retinal rivalry,我是这么理解的吧,如果object A在左视角出现,不在右视角出现,或者虽然都出现,但是二者形状改变等,左右眼融合得

vine_branches的专栏 7406

不用去电影院 3D电影格式/播放全攻略

在立体3D应用中,3D电影是目前最为主流、普及程度最高的娱乐方式。立体3D做为一种正在发展中的技术,尚未统一的标准常常使得用户感到迷惑,究竟哪种格式更好?对设备的要求是什么?本文将针对3D电影的格式、设备要求等方面进行一次全面说明,解开种种疑惑。 立体3D是利用人们两眼视觉

jgdu1981的专栏 1万+

python direct_如何在python中将vlc(direct3D输出)改为普通vlc帧

下面的代码可以完美地从目录中播放播放列表。但是,当我运行代码vlc(direct3D输出)时,弹出的不是普通的vlc播放器。我需要一个vlc播放器帧来控制视频。此外,此代码播放视频,当它传递到第二个视频时,vlc(direct3D输出)帧关闭并打开。不过,我需要看到视频在一个vlc播放器帧一个接一个。我怎样才能解决我的问题?子进程打开正常的vlc帧,但我不知道如何对代码实现子进程。import d...

weixin_42552261的博客 457

VLC Media Player 初始设置推荐

偏好设置 打开视频时窗口经常跑到屏幕外边了,将“缩放至视频界面大小”去掉就可以保持上一次的窗口大小 如果不喜欢每次播放视频都在屏幕上显示挡视角的文件名,就可以去掉该选项 自定义界面 尝试拖动扩展占位符使得下面的按钮居中 效果如下 ...

Doge的技术小屋 8855

Daydream播放3D视频(视频左右分屏3D效果)

需求分析:          因为VR项目需求,要实现3D视频的播放,即左右分屏视频播放。如下图所示类型视频。 使用GoogleVRForUnity插件实现VR功能效果。项目刚开始使用的是0.8的老版本插件,可以轻松实现3D视频的播放,但升级GoogleVRForUnity插件到1.10接入Daydream后,发现3D视频播放3D效果没有了。   解决方案: 一、未接入Daydr

Flyer 2万+

VLC-3.0全部详细参数

用法: vlc [选项] [流] ...您可以在命令行中指定多个流。它们将被加入播放列表队列。指定的首个项目将被首先播放。选项风格:  --选项  用于设置程序执行期间的全局选项。   -选项  单字母版本的全局 --选项。   :选项  仅对此选项之前的单条流生效,            且优先级高于先前的设置。流媒体 MRL 语法:  [[协议][/分流]://]URL[#[标题][:章节][...

单眼皮的老虎的专栏 1万+

apt-get依赖库版本过高问题的解决(如何处理libqt4-dev在ubuntu的安装问题)

结果今天装libqt4-dev时遇到的问题,用apt-get降级的方式来解决。

Joyer的日志 4万+

丢掉python -m SimpleHTTPServer,一行命令用http分享目录(单行web服务器)

好久没更新博客,还是要备忘一些实用工作技巧:

Joyer的日志 2万+
上一篇: 丢掉python -m SimpleHTTPServer,一行命令用http分享目录(单行web服务器)
下一篇: 到了2018年,还有学习Emacs的必要吗?
JoyerHuang_悦
博客等级 码龄23年 101粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值