SDL顯示YUV圖像數(shù)據(jù)
1.YUV簡介
? YUV,分為三個(gè)分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V”表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的顏色。
與我們熟知的RGB類似,YUV也是一種顏色編碼方法,主要用于電視系統(tǒng)以及模擬視頻領(lǐng)域,它將亮度信息(Y)與色彩信息(UV)分離,沒有UV信息一樣可以顯示完整的圖像,只不過是黑白的,這樣的設(shè)計(jì)很好地解決了彩色電視機(jī)與黑白電視的兼容問題。并且,YUV不像RGB那樣要求三個(gè)獨(dú)立的視頻信號(hào)同時(shí)傳輸,所以用YUV方式傳送占用極少的頻寬。
YUV碼流的存儲(chǔ)格式其實(shí)與其采樣的方式密切相關(guān),主流的采樣方式有三種,YUV4:4:4,YUV4:2:2,YUV4:2:0
2.ffmpeg將mp4轉(zhuǎn)yuv格式
ffmpeg -i test.mp4 -s 960x540 -pix_fmt yuv420p yuv420960_540.yuv
3.SDL顯示示例
#include
#include
#include
#include
typedef enum
{
false,
true,
}bool;
int main(int argc,char *argv[])
{
FILE *fp=fopen("yuv420960_540.yuv","rb");
if(fp==NULL)
{
printf("文件打開失敗n");
return 0;
}
//yuv420保存格式:y占2份,uv各占1份,y表示亮度,uv表示顏色
char *p=malloc(960*540*3);
SDL_Init(SDL_INIT_VIDEO);
/*創(chuàng)建窗口*/
SDL_Window *window=SDL_CreateWindow("SDL_VIDEO", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,800,480,SDL_WINDOW_SHOWN);
/*創(chuàng)建渲染器*/
SDL_Renderer *render=SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);
/*清空渲染器*/
SDL_RenderClear(render);
/*創(chuàng)建紋理*/
SDL_Texture *sdltext=SDL_CreateTexture(render,SDL_PIXELFORMAT_IYUV,SDL_TEXTUREACCESS_STREAMING,960,540);
bool quit=true;
SDL_Event event;
while(quit)
{
SDL_PollEvent(&event);/*事件監(jiān)測(cè)*/
if(event.type==SDL_QUIT)/*退出事件*/
{
quit=false;
}
fread(p,1,960*540*3/2,fp);/*讀取一幀數(shù)據(jù)*/
SDL_UpdateTexture(sdltext,NULL,p, 960);
SDL_RenderCopy(render, sdltext, NULL, NULL); // 拷貝紋理到渲染器
SDL_RenderPresent(render); // 渲染
}
}
3 Makefile文件
CFLAGS =-I/home/wbyq/src_pack/SDL2-2.0.14/_install/include -I/home/wbyq/src_pack/SDL2-2.0.14/_install/include/SDL2 -L/home/wbyq/src_pack/SDL2-2.0.14/_install/lib
CFLAGS +=-L/home/wbyq/src_pack/SDL2_image-2.0.5/_install/lib -I/home/wbyq/src_pack/SDL2_image-2.0.5/_install/include -I/home/wbyq/src_pack/SDL2_image-2.0.5/_install/include/SDL2
CFLAGS+=-lSDL2 -lpthread -lm -ldl -lSDL2_image
app:
gcc sdl_test.c $(CFLAGS)
4 運(yùn)行效果
-
圖像數(shù)據(jù)
+關(guān)注
關(guān)注
0文章
52瀏覽量
11276 -
SDL
+關(guān)注
關(guān)注
0文章
18瀏覽量
7395 -
YUV
+關(guān)注
關(guān)注
0文章
11瀏覽量
2878
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論