博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ffmpeg YUV420P视频帧旋转
阅读量:2345 次
发布时间:2019-05-10

本文共 2794 字,大约阅读时间需要 9 分钟。

//逆时针旋转90 度-(void)frame_rotate_90WithSorrce:(AVFrame *)src des:(AVFrame*)des{    int n = 0;    int hw = src->width>>1;    int hh = src->height>>1;    int size = src->width * src->height;    int hsize = size>>2;    int pos = 0;    //copy y    for(int j = 0; j < src->width;j++)    {        pos = size;        for(int i = src->height - 1; i >= 0; i--)        {   pos-=src->width;            des->data[0][n++] = src->data[0][pos + j];        }    }    //copy uv    n = 0;    for(int j = 0;j < hw;j++)    {   pos= hsize;        for(int i = hh - 1;i >= 0;i--)        {            pos-=hw;            des->data[1][n] = src->data[1][ pos + j];            des->data[2][n] = src->data[2][ pos + j];            n++;        }    }    des->linesize[0] = src->height;    des->linesize[1] = src->height>>1;    des->linesize[2] = src->height>>1;    des->height = src->width;    des->width = src->height;}//逆时针旋转180度-(void)frame_rotate_180WithSorrce:(AVFrame *)src des:(AVFrame*)des{    int n = 0,i= 0,j = 0;    int hw = src->width>>1;    int hh = src->height>>1;    int pos= src->width * src->height;    for (i = 0; i < src->height; i++)    {        pos-= src->width;        for (int j = 0; j < src->width; j++) {            des->data[0][n++] = src->data[0][pos + j];        }    }    n = 0;    pos = src->width * src->height>>2;    for (i = 0; i < hh;i++) {        pos-= hw;        for (int j = 0; j < hw;j++) {            des->data[1][n] = src->data[1][ pos + j];            des->data[2][n] = src->data[2][ pos + j];            n++;        }    }    des->linesize[0] = src->width;    des->linesize[1] = src->width>>1;    des->linesize[2] = src->width>>1;    des->width = src->width;    des->height = src->height;    des->format = src->format;    des->pts = src->pts;    des->pkt_pts = src->pkt_pts;    des->pkt_dts = src->pkt_dts;    des->key_frame = src->key_frame;}//逆时针旋转270度-(void)frame_rotate_270WithSorrce:(AVFrame *)src des:(AVFrame*)des{    int n = 0,i= 0,j = 0;    int hw = src->width>>1;    int hh = src->height>>1;    int pos = 0;    for(i = src->width-1;i >= 0;i--)    {        pos = 0;        for(j= 0;j < src->height;j++)        {            des->data[0][n++]= src->data[0][pos+i];            pos += src->width;        }    }    n = 0;    for (i = hw-1; i >= 0;i--) {
pos= 0; for (j = 0; j < hh;j++) { des->data[1][n]= src->data[1][pos+i]; des->data[2][n]= src->data[2][pos+i]; pos += hw; n++; } } des->linesize[0] = src->height; des->linesize[1] = src->height>>1; des->linesize[2] = src->height>>1; des->width = src->height; des->height = src->width; des->format = src->format; des->pts = src->pts; des->pkt_pts = src->pkt_pts; des->pkt_dts = src->pkt_dts; des->key_frame = src->key_frame;}

转载地址:http://lqnvb.baihongyu.com/

你可能感兴趣的文章
nginx和apache服务器下配置数据库信息
查看>>
Linux下Wiki服务器的搭建
查看>>
Linux下如何搭建WEB服务器教程
查看>>
DNS主从服务器的搭建
查看>>
tailf /var/log/message 报告/var/empty/sshd must be owned by root and not group or world-writable
查看>>
Linux下的 curl命令详解
查看>>
shell中调用mysql 原格式输出到文件里面
查看>>
Select 语句
查看>>
Perl命令行用法解析
查看>>
五大常用Perl命令行参数应用介绍
查看>>
关于redis
查看>>
关于redis
查看>>
多硬盘分区管理fdisk
查看>>
给KVM虚拟机增加硬盘
查看>>
kvm虚拟机增加磁盘
查看>>
详细介绍mysql-bin.000001文件的来源及处理方法
查看>>
python getopt使用
查看>>
Samba服务器的配置
查看>>
配置虚拟主机
查看>>
Mysql+apache+php平台的搭建
查看>>