OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5740|回复: 4

F429 视频播放实验改成横屏后视频变成镜像了

[复制链接]

37

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
775
金钱
775
注册时间
2016-9-10
在线时间
311 小时
发表于 2017-4-18 10:36:57 | 显示全部楼层 |阅读模式
20金钱
自己给视频进行转码,下载视频播放实验,视频正常播放,然后想改成横屏玩玩,就把LTDC_Display_Dir的参数改成了1,视频确实是横屏播放了,但是变成了镜像,找了几个底层函数修改,要么不视频显示,要么显示成条状,要怎么修改才能正常显示,有没有人做过?
微信图片_20170418103040.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

37

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
775
金钱
775
注册时间
2016-9-10
在线时间
311 小时
 楼主| 发表于 2017-4-18 10:36:58 | 显示全部楼层
回复

使用道具 举报

37

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
775
金钱
775
注册时间
2016-9-10
在线时间
311 小时
 楼主| 发表于 2017-4-18 14:38:01 | 显示全部楼层
改变坐标只能平移视频
回复

使用道具 举报

17

主题

466

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2164
金钱
2164
注册时间
2013-1-11
在线时间
510 小时
发表于 2017-5-10 17:41:37 | 显示全部楼层
楼主怎么玩的啊!
知识是你最好的财富
回复

使用道具 举报

1

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2014-8-11
在线时间
76 小时
发表于 2017-6-12 20:55:35 | 显示全部楼层
默默莱 发表于 2017-5-10 17:41
楼主怎么玩的啊!

修改h2v2_merged_upsample ();函数中for循环就可以实现了,红色为修改的部分  ->if(lcdltdc.width!=0)//RGB屏
{

                /* Loop for each group of output pixels */
                for (col =0 ; col <cinfo->output_width ; col++)
                {
                        /* Do the chroma part of the calculation */
                        cb = GETJSAMPLE(*inptr1++);
                        cr = GETJSAMPLE(*inptr2++);
                        cred = Crrtab[cr];
                        cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
                        cblue = Cbbtab[cb];
                        /* Fetch 4 Y values and emit 4 pixels */
                        y  = GETJSAMPLE(*inptr00++);
                        outlinebuf[col++ ] = range_limit[y + cblue] >> 3 | (range_limit[y + cgreen] >> 2) << 5 | (range_limit[y + cred] >> 3) << 11;

                        y  = GETJSAMPLE(*inptr00++);
                        //pixel.color.B = range_limit[y + cblue] >> 3;
                        //pixel.color.G = range_limit[y + cgreen] >> 2;
                        //pixel.color.R = range_limit[y + cred] >> 3;

                        outlinebuf[col] = range_limit[y + cblue] >> 3 | (range_limit[y + cgreen] >> 2) << 5 | (range_limit[y + cred] >> 3) << 11;
                }
                LTDC_Color_Fill2(imgoffx,outlinecnt,cinfo->output_width+imgoffx-1,outlinecnt,outlinebuf);//DM2D填充
                outlinecnt++;
                //inptr00 = input_buf[0][in_row_group_ctr*2];
                inptr01 = input_buf[0][in_row_group_ctr*2 + 1];
                inptr1 = input_buf[1][in_row_group_ctr];
                inptr2 = input_buf[2][in_row_group_ctr];

                /* Loop for each group of output pixels */
                for (col =0 ; col <cinfo->output_width  ; col++)
                {
                        /* Do the chroma part of the calculation */
                        cb = GETJSAMPLE(*inptr1++);
                        cr = GETJSAMPLE(*inptr2++);
                        cred = Crrtab[cr];
                        cgreen = (int) RIGHT_SHIFT(Cbgtab[cb] + Crgtab[cr], SCALEBITS);
                        cblue = Cbbtab[cb];
                        /* Fetch 4 Y values and emit 4 pixels */
                        y  = GETJSAMPLE(*inptr01++);
                        //pixel.color.B = range_limit[y + cblue] >> 3;
                        //pixel.color.G = range_limit[y + cgreen] >> 2;
                        //pixel.color.R = range_limit[y + cred] >> 3;

                        outlinebuf[ col++] = range_limit[y + cblue] >> 3 | (range_limit[y + cgreen] >> 2) << 5 | (range_limit[y + cred] >> 3) << 11;

                        y  = GETJSAMPLE(*inptr01++);
                        //pixel.color.B = range_limit[y + cblue] >> 3;
                        //pixel.color.G = range_limit[y + cgreen] >> 2;
                        //pixel.color.R = range_limit[y + cred] >> 3;

                        outlinebuf[col] = range_limit[y + cblue] >> 3 | (range_limit[y + cgreen] >> 2) << 5 | (range_limit[y + cred] >> 3) << 11;
                }
                LTDC_Color_Fill2(imgoffx,outlinecnt,cinfo->output_width+imgoffx-1,outlinecnt,outlinebuf);//DM2D填充
                outlinecnt++;
                /* If image width is odd, do the last output column separately */
                //if (cinfo->output_width & 1)  //RGB屏,不做处理.
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 21:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表