NV12剪切区域时的对齐代码

简介: NV12剪切区域时的对齐代码

如果没有对齐,底边有时颜色会有点问题(比如绿色)。


 所以专门写了代码进行对齐。


#define NV12_PACK 2
//如果没有对齐,NV12无法生成JPG,或者底边颜色异常。对齐时要避免剪切区域变小。
int clipNv12Pack(int* pnClipLeft, int* pnClipTop, int* pnClipWidth, int* pnClipHeight)
{
    const int clipLeft  = *pnClipLeft;
    const int clipTop   = *pnClipTop;
    const int clipWidth = *pnClipWidth;
    const int clipHeight= *pnClipHeight;
    if (*pnClipLeft % NV12_PACK != 0)
    {
        *pnClipLeft  = clipLeft/NV12_PACK*NV12_PACK;
        *pnClipWidth = clipWidth+(clipLeft-*pnClipLeft);
    }
    *pnClipWidth  = (*pnClipWidth+NV12_PACK-1)/NV12_PACK*NV12_PACK;
    if (*pnClipTop % NV12_PACK != 0)
    {
        *pnClipTop   = clipTop/NV12_PACK*NV12_PACK;
        *pnClipHeight= clipHeight+(clipTop-*pnClipTop);
    }
    *pnClipHeight = (*pnClipHeight+NV12_PACK-1)/NV12_PACK*NV12_PACK;
    return 0;
}
目录
相关文章
|
传感器 API 开发工具
OpenCV视频读写模块(videoio)
OpenCV视频读写模块(videoio)
OpenCV视频读写模块(videoio)
|
存储 缓存 前端开发
关于Android SurfaceView截屏总结
关于Android SurfaceView截屏总结
1959 0
|
网络安全 开发工具 数据安全/隐私保护
|
11月前
|
负载均衡 Java 网络架构
Spring Cloud原理详解
介绍了Spring Cloud的原理和核心组件,包括服务注册与发现、配置管理、负载均衡、断路器、智能路由、分布式消息传递、分布式追踪和服务熔断等,旨在帮助开发人员快速构建和管理微服务架构中的分布式系统。
448 0
|
安全 Linux 开发者
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
724 1
|
11月前
|
算法 数据挖掘 Shell
「毅硕|生信教程」 micromamba:mamba的C++实现,超越conda
还在为生信软件的安装配置而烦恼?micromamba(micromamba是mamba包管理器的小型版本,采用C++实现,具有mamba的核心功能,且体积更小,可以脱离conda独立运行,更易于部署)帮你解决!
369 1
spdlog 日志库部分源码说明——让你可以自定义的指定自动切换日志时间
spdlog 日志库部分源码说明——让你可以自定义的指定自动切换日志时间
409 7
|
网络协议 JavaScript 前端开发
将websocket封装成一个class,断线可重连
将websocket封装成一个class,断线可重连
420 3
|
C++ 开发者 Unix
面向 C++ 的现代 CMake 教程(四)(5)
面向 C++ 的现代 CMake 教程(四)
178 0
|
存储 算法 编译器
【C++ 函数 基础教程 第四篇】深入C++函数返回值:理解并优化其性能
【C++ 函数 基础教程 第四篇】深入C++函数返回值:理解并优化其性能
826 1