sdl的缩放问题
SDL是一种既是开源的,也是跨平台的多媒体开发包,在各种平台上应用很广,经常和FFMPEG等解码器同时使用。对于在windows mobile等缺乏通用播放器的平台来说,是一种很好的选择。
网上很多代码,介绍SDL的用法,主要需要注意的情况有3种:
第一: 绑定播放窗口问题:
char sdl_var[128];
sprintf(sdl_var, "SDL_WINDOWID=0x%lx", m_hWnd );//主窗口句柄
SDL_putenv(sdl_var); char *myvalue = SDL_getenv("SDL_WINDOWID");
这端代码,需要放在播放窗口初始化之前,否则,容易造成全屏。
第二:SDL本身响应窗口菜单的问题
SDL官方提供以下代码响应窗口菜单:
while(1) {
SDL_WaitEvent(&event);
{
case
}
}
但也可以我们在程序里面重新初始化并显示新菜单,就可以不用这种办法,直接用我们自己的程序响应菜单。
第三:关于缩放:
网上很多代码容易误导人。
把SDL_SetVideoMode和SDL_CreateYUVOverlay的参数都设置成一样的,这种办法导致屏幕图象缩放显示不正常,正确的方法 应该是:SDL_SetVideoMode的参数显示新的显示大小,而SDL_CreateYUVOverlay(只需建立一 次,SDL_SetVideoMode更换时,不需要跟着更换)的参数则是图片的原始大小 。
而在SDL_DisplayYUVOverlay中用到的SDL_Rect,大小则和SDL_SetVideoMode一样,也就是新的显示大小。
本文原创,转载请注明出处和作者,谢谢。
sdl的缩放问题的更多相关文章
- SDL绑定播放窗口 及 视频窗口缩放
绑定播放窗口 必须在Sdl.SDL_Init之前执行 Sdl.SDL_putenv 同时SDL_SetVideoMode里播放窗口长宽不能大于绑定窗口的长宽 int i = Sdl.SDL_puten ...
- ffmpeg 和 SDL 的结合使用
FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视 频的完整解决方案.它包含了非常先进的音频/视频编解码库 ...
- Beginning SDL 2.0(1) SDL功能简介
原文链接为 http://wiki.libsdl.org/Introduction. 由于近期整理音视频可视化的技术,发现好久不更新的SDL发布了2.0版本,以前也没有过于关注,这里准备尝试下.了解S ...
- 刺猬大作战(游戏引擎用Free Pascal写成,GUI用C++写成,使用SDL和Qt4)
游戏特性[编辑] 游戏引擎用Free Pascal写成,GUI用C++写成,使用SDL和Qt4[2]. 0.9.12开始支持实时动态缩放游戏画面. 个性化[编辑] 刺猬大作战有着高度定制性 游戏模式: ...
- Ffmpeg和SDL创建线程(转)
Spawning Threads Overview Last time we added audio support by taking advantage of SDL's audio functi ...
- SDL示例一:实现七段数码管的显示
[时间:2017-05] [状态:Open] [关键词:sdl2,数字,七段数码管,图形显示,示例代码] 0 引言 本文是针对我的step-into-sdl2/7LedDigit的原理介绍,有兴趣的可 ...
- Beginning SDL 2.0(3) SDL介绍及BMP渲染
SDL是一个跨平台的多媒体库.为了实现跨平台,SDL提供了一个简单的界面库抽象,比如提供了SDL_Window用于表示窗口句柄,SDL_Surface.SDL_Texture.SDL_Renderer ...
- ffmpeg h264+ts +(sdl)显示方式
网友: 明月惊鹊(357161826) 2014-1-16 10:07:00ffmpeg + sdl一米阳光(740053660) 2014-1-16 10:08:29Simple DirectMed ...
- (转)如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器
原文地址:http://www.dranger.com/ffmpeg/ FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具.FFMPEG几乎为你把所有的繁重工作都做了,比如解码.编码. ...
随机推荐
- VUE-node.js
1.什么是node.js 它是可以运行javascript的服务平台 可以把它当做一门后端程序,只是它的开发语言是Javascript2.Python:自己创建的服务 php ...
- 忽略node.js服务中favicon.icon的请求
场景 一个最简单的node.js的http服务 const http = require('http'); const server = http.createServer(function(req, ...
- windows系统下安装Eclipse for PHP
第一步: 如果机器上没有java运行环境,请先安装 第二步: 下载eclipse,下载地址: http://www.eclipse.org/downloads/ 选择对应版本,本人选择的是64位版 ...
- BZOJ 4517: [Sdoi2016]排列计数 [容斥原理]
4517: [Sdoi2016]排列计数 题意:多组询问,n的全排列中恰好m个不是错排的有多少个 容斥原理强行推♂倒她 $恰好m个不是错排 $ \[ =\ \ge m个不是错排 - \ge m+1个不 ...
- POJ 3537 Crosses and Crosses [Multi-SG]
传送门 我也不知道为什么枚举vis必须加上一个边界才能A 以后还是都加上吧 #include <iostream> #include <cstdio> #include < ...
- Jmeter_实现操作postgresql数据库
[环境] ①Jmeter版本:3.2,JDK:1.8: ②postgresql驱动包postgresql-9.3-1103.jdbc4,将该jar包置于..\apache-jmeter-3.2\lib ...
- php+redis 学习 六 订阅
<?php header('content-type:text/html;chaeset=utf-8'); /** * redis实战 * * 订阅 * * @example php subsc ...
- iOS 开发之 Xcode installation failed invalid argument!
1.运行模拟器的时候 报出:installation failed invalid argument! 原因分析:我把Bundle indentifier 置为空了! http://stackover ...
- PHP读取大文本文件并处理数据的思路
//处理文件 $file = fopen($filename, "r") or exit("Unable to open file!"); $total_lin ...
- Java经典编程题50道之三十
有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. public class Example30 { public static void main(String[] arg ...