Android下基於SDL的YUV渲染

2021-09-08 22:32:12 字數 1388 閱讀 3158

本文主要參考我之前整理的文章windows下使用sdl進行yuv渲染。

相對於之前寫的點陣圖渲染部分(渲染主要是增加了yuv載入、texture更新部分。注意本部分的介紹內容是在android點陣圖渲染框架下增加的yuv渲染部分(具體參考android下基於sdl的點陣圖渲染(二)理論篇)。

主要執行流程如下:

初始化sdl window和render

載入yuv資料

建立sdl texture

使用yuv資料更新texture

texture通過render渲染到window上

資源銷毀及釋放

呼叫sdl_quit通知activity退出

實現的**如下:

extern "c" int yuv_main(int argc, char *ar**) 

// load yuv

const char *yuv_path = "/sdcard/test_720x576.yuv";

logi("natvie_sdl %s", yuv_path);

yuv_frame.width = 720;

yuv_frame.height = 576;

if (!load_yuv(yuv_path))

// texture operation

texture_create(yuv_frame.width, yuv_frame.height);

texture_update();

texture_render();

sdl_delay(2000);

// free resources

unload_yuv();

texture_destory();

deinit();

// quit sdl

sdl_quit();

return 0;

}

其中texture_update實現**如下:

static void texture_update()

else // 可能發生pitch > width的情況

h >>= 1;

w >>= 1;

pitch >>= 1;

// for u

src = yuv_frame.data[1];

for (int i = 0; i < h; ++i)

// for v

src = yuv_frame.data[2];

for (int i = 0; i < h; ++i)

}sdl_unlocktexture(texture);

}}

關於texture也可以呼叫sdl_updatetexture。

基於SDL的C 黑白棋

寫了乙個基於sdl的黑白棋遊戲,分享一下。黑白棋,又叫翻轉棋 reversi 奧賽羅棋 othello 蘋果棋或反棋 anti reversi 黑白棋在西方和日本很流行。遊戲通過相互翻轉對方的棋子,最後以棋盤上誰的棋子多來判斷勝負。如果玩家在棋盤上沒有地方可以下子,則該玩家對手可以連下。雙方都沒有棋...

基於Android的SDIO WIFI移植(1)

一 sdio 裝置驅動移植 很不巧核心已經 被 支援了,我就先不費這事了。二 配置核心以支援marvel無線wifi 在這裡我編譯成模組的方式 device drivers network device support wireless lan marvell 8 libertas wlan dri...

SDL2 0在Ubuntu14 04下的安裝及測試

安裝環境 1 系統 ubuntu 14.04 2 方式 編譯源 的方式 安裝步驟 usr local src 目錄下,並在這裡解包 sudo mv tar.gz usr local src 移動原始碼包 可選項 cd usr local src 進入 usr local src 目錄 sudo ta...