Linux下使用libyuv提高YUV圖像轉換效率

一、環境介紹

操作系統: ubuntu18.04

開發平臺: RK3399

二、出現的問題

使用FFMPEG的sws_scale函數在ARM平臺轉換效率很低,使用libyuv提高轉換效率。

三、下載編譯libyuv

下載地址: https://github.com/lemenkov/libyuv

wbyq@wbyq:~/qt_code/666$ unzip /mnt/hgfs/linux-share-dir/libyuv-master.zip 
wbyq@wbyq:~/qt_code/666$ cd libyuv-master
wbyq@wbyq:~/qt_code/666$ make -f linux.mk

 

四、示例代碼

調用libyuv庫方式:  將libyuv.h包含到工程,直接調用轉換函數即可(轉換函數名稱可看下面2個例子),編譯時指定libyuv.a庫。

 

//YUYV422轉YUV420P

//YUYV422轉YUV420P
uint8_t* i420_image = video0_yuv420p_buff;
uint8_t* i420_image_y_ptr = i420_image;
uint8_t* i420_image_u_ptr = i420_image_y_ptr + (VIDEO_WIDTH * VIDEO_HEIGHT);
uint8_t* i420_image_v_ptr = i420_image_u_ptr + (int)(VIDEO_WIDTH * VIDEO_HEIGHT * 0.25);

libyuv::YUY2ToI420(
		image_buffer[video_buffer.index],VIDEO_WIDTH*2,
		(uint8_t*)i420_image_y_ptr, VIDEO_WIDTH,
		(uint8_t*)i420_image_u_ptr, (VIDEO_WIDTH >> 1),
		(uint8_t*)i420_image_v_ptr, (VIDEO_WIDTH >> 1),
		VIDEO_WIDTH, VIDEO_HEIGHT);

 

YUYV422轉ARGB

libyuv::YUY2ToARGB(image_buffer[video_buffer.index],VIDEO_WIDTH*2,
                          argb_buffer,VIDEO_WIDTH*4,VIDEO_WIDTH,VIDEO_HEIGHT);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章