亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? video_output.c

?? TI workshop 培訓資料。 是關于如何創建DAVINCI平臺下codec engine
?? C
字號:
/* * video_output.c *//* Standard Linux headers */#include <stdio.h>		// always include stdio.h#include <stdlib.h>		// always include stdlib.h#include <string.h>             // defines memset and memcpy methods#include <fcntl.h>		// defines open, read, write methods#include <unistd.h>		// defines close and sleep methods#include <sys/mman.h>		// defines mmap method#include <sys/ioctl.h>		// defines ioctl method#include <linux/fb.h>		// defines framebuffer driver methods/* Application header files */#include "video_output.h"	// video driver definitions#include "debug.h"		// DBG and ERR macros/* Bits per pixel for video window */#define SCREEN_BPP          16/****************************************************************************** * video_output_setup ******************************************************************************//*  input parameters:                                                         *//*      int *fdByRef      --  File descriptor passed by reference. It is used *//*                            to return the file descriptor of the device     *//*                            opened by this function.                        *//*      char *device      --  Device node for FBDEV driver                    *//*      char **displayBuffersArray -- an array of output buffer pointers.     *//*                            The array must be allocated (i.e not just a     *//*                            pointer with no memory assocaited with it)      *//*                            The array is filled in as a return value with   *//*                            pointers to the buffers mmap'ed by the driver   *//*      int numDisplayBufs -- number of buffers for the driver to mmap        *//*      int *displayWidthByRef -- used as both an input and output value:     *//*                            on input: requested display frame width         *//*                            on output: granted display frame width          *//*      int *displayHeightByRef -- identical to displayWidthByRef,            *//*                            but for height                                  *//*      uint32_t zoomFactor -- zoom factor for display. Accepts:              *//*                            ZOOM_1X, ZOOM_2X, ZOOM4X as defined in          *//*                            video_display.h                                 *//*                                                                            *//*                                                                            *//*  return value:                                                             *//*      int  -- file descriptor of the newly opened display device, or        *//*              VCAP_FAILURE if failure (VCAP_FAILURE must be negative)       *//*                                                                            *//******************************************************************************/int video_output_setup(int *fdByRef, char *device, char **displayBuffersArray, 			int numDisplayBuffers, int *displayWidthByRef, 			int *displayHeightByRef, uint32_t zoomFactor){    int displayFd;			// file descriptor for opened device    struct fb_var_screeninfo varInfo;	// variable display screen information    int frameSize, lineWidth;		// line and frame sizes in bytes    struct Zoom_Params zoom;		// specifies zoom of 1x, 2x or 4x    int i;				// for loop index    /* define a macro to handle the repetitive cleanup required upon failure */    #define failure_procedure()	close(displayFd);			\				*fdByRef = -1;				\				for(i=0; i<numDisplayBuffers; i++){ 	\				    displayBuffersArray[i] = NULL; 	\				}					\				*displayWidthByRef = 0;			\				*displayHeightByRef = 0;		\        			return VOUT_FAILURE    DBG("Initializing display device: %s\n", device);    /* Open the display device */    displayFd = open(device, O_RDWR);    if (displayFd == -1) {        ERR("Failed to open fb device %s\n", device);        failure_procedure();    }    DBG("\tDisplay device opened with file descriptor: %d\n", displayFd);    /* Query driver for current state of variable screen info */    if (ioctl(displayFd, FBIOGET_VSCREENINFO, &varInfo) == -1) {        ERR("Failed FBIOGET_VSCREENINFO on %s\n", device);        failure_procedure();    }    /* Configure display resolution */    /* Driver currently only supports xres_virtual = 720, which sets  */    /*       xres = 720 in this implementation                        */    if( *displayWidthByRef != 720){	ERR("Display driver only currently supports width of 720\n");        failure_procedure();    }    /* Setting xres_virtual = xres assures that a 1-d buffer will     */    /*       properly display.  (Otherwise would require zero filling */    /*       of unused xres_virtual for each line.)                   */    /* Multiple frames are mapped along y-axis as yres_virtual        */    varInfo.xres = *displayWidthByRef;    varInfo.xres_virtual = *displayWidthByRef;    varInfo.yres = *displayHeightByRef;    varInfo.yres_virtual = (*displayHeightByRef) * numDisplayBuffers;    /*  screen bits per pixel *must* be 16 -- DM6446/3 hardware req.  */    varInfo.bits_per_pixel = SCREEN_BPP;    /* Request video display format */    if (ioctl(displayFd, FBIOPUT_VSCREENINFO, &varInfo) == -1) {        ERR("Failed FBIOPUT_VSCREENINFO on file descriptor %d\n", displayFd);        failure_procedure();    }    /* Get allocated video display format */    if (ioctl(displayFd, FBIOGET_VSCREENINFO, &varInfo) == -1) {        ERR("Failed FBIOFET_VSCREENINFO on file descriptor %d\n", displayFd);        failure_procedure();    }    /* Calculate frame size and line width based on granted resolution */    frameSize = varInfo.xres * varInfo.yres * SCREEN_BPP/8;    lineWidth = varInfo.xres * SCREEN_BPP/8;    /* Map the video buffers to user space */    /* xres_virtual = xres guarantees they can all be mapped as one      */    /*     continuous buffer                                             */    displayBuffersArray[0] = (char *) mmap (NULL,                                 frameSize * numDisplayBuffers,                                 PROT_READ | PROT_WRITE,                                 MAP_SHARED,                                 displayFd, 0);    if (displayBuffersArray[0] == MAP_FAILED) {        ERR("Failed mmap on file descriptor %d\n", displayFd);        return VOUT_FAILURE;    }    /*  Set the displayBuffersArray array with offsets from the one        */    /*       continuous memory segment.                                    */    DBG("\tMapped display buffer 0, size %d to location %p\n", frameSize,					displayBuffersArray[0]);    for(i = 1; i< numDisplayBuffers; i++){	displayBuffersArray[i] = displayBuffersArray[i-1] + frameSize;	DBG("\tMapped display buffer %d, size %d to location %p\n", i,					frameSize, displayBuffersArray[i]);    }    /* Set the display zoom factor */    zoom.WindowID = VID1_INDEX;    zoom.Zoom_H = zoomFactor;    zoom.Zoom_V = zoomFactor;    if (ioctl(displayFd, FBIO_SETZOOM, &zoom)) {        ERR("Failed set zoom parameters on file descriptor %d\n", displayFd);        failure_procedure();    }    DBG("\tDisplay set to %dx%d resolution\n",varInfo.xres, varInfo.yres);    switch( zoomFactor )    {	case ZOOM_1X : DBG("\tZoom factor set to 1x\n");		       break;	case ZOOM_2X : DBG("\tZoom factor set to 2x\n");		       break;	case ZOOM_4X : DBG("\tZoom factor set to 4x\n");		       break;	default : DBG("\tUnrecognized zoom factor\n");    }    /*  Set return-by-reference values and return VOUT_SUCCESS        */    /*  (note: displayBuffersArray has already been filled)            */    /* Allocated is not guaranteed to be the same as requested value.  */    /*      return actual allocated value via provided pointers        */    *displayWidthByRef = varInfo.xres;    *displayHeightByRef = varInfo.yres;    /* return file descriptor for newly opened device via supplied pointer */    *fdByRef = displayFd;    /* return the file descriptor of the newly opened device.           */    return VOUT_SUCCESS;}/****************************************************************************** * flip_display_buffers ******************************************************************************//*  input parameters:                                                         *//*      int displayFd   -- file descriptor for the driver as returned by      *//*                         video_output_setup                                   *//*      int displayIdx  -- index of the output buffer to be displayed         *//*                                                                            *//*                                                                            *//*  return value:                                                             *//*      int  --  VOUT_SUCCESS or VOUT_FAILURE as defined in                 *//*               video_display.h                                              *//*                                                                            *//******************************************************************************/int flip_display_buffers(int displayFd, int displayIdx){    struct fb_var_screeninfo vInfo;	// variable info for display screen    /* Get current state of the display screen variable information */    if (ioctl(displayFd, FBIOGET_VSCREENINFO, &vInfo) == -1) {        ERR("Failed FBIOGET_VSCREENINFO\n");        return VOUT_FAILURE;    }    /* modify y offset to select a display screen */    vInfo.yoffset = vInfo.yres * displayIdx;    /* Swap the working buffer for the displayed buffer */    if (ioctl(displayFd, FBIOPAN_DISPLAY, &vInfo) == -1) {        ERR("Failed FBIOPAN_DISPLAY\n");        return VOUT_FAILURE;    }    /* Halt thread until FBIOPAN_DISPLAY is latched at VSYNC */    if (ioctl(displayFd, FBIO_WAITFORVSYNC, &vInfo) == -1) {        ERR("Failed FBIO_WAITFORVSYNC\n");        return VOUT_FAILURE;    }    return VOUT_SUCCESS;}/****************************************************************************** * video_output_cleanup ******************************************************************************//*  input parameters:                                                         *//*      int displayFd   -- file descriptor for the driver as returned by      *//*                         video_output_setup                                   *//*      char *displayBuffersArray -- pointer to the array of driver buffer    *//*                         pointers that was filled by video_output_setup       *//*      int numDisplayBuffers     -- number of buffers in displayBuffersArray *//*                                                                            *//*                                                                            *//*  return value:                                                             *//*      int  --  VOUT_SUCCESS or VOUT_FAILURE as defined in                 *//*               video_display.h                                              *//*                                                                            *//******************************************************************************/void video_output_cleanup(int displayFd, char **displayBuffersArray, 			int numDisplayBuffers){    struct fb_var_screeninfo varInfo;	// variable display screen info    int frameSize;			// display frame size in bytes    /* Get display frame resolution from the variable info */    if (ioctl(displayFd, FBIOGET_VSCREENINFO, &varInfo) == -1) {        ERR("Failed FBIOFET_VSCREENINFO for file descriptor %d\n", displayFd);    }    /* Calculate frame size so we know how much to un-map */    frameSize = varInfo.xres * varInfo.yres * SCREEN_BPP/8;    /* Blank out output buffers */    memset(displayBuffersArray[0], 0, frameSize * numDisplayBuffers);    /* Un-memory-map display buffers from this process */    munmap(displayBuffersArray[0], frameSize * numDisplayBuffers);    DBG("unmapped contiguous display buffer block of\n");    DBG("\tsize %d at location %p\n", (frameSize * numDisplayBuffers), 					displayBuffersArray[0]);    /* Close display device */    close(displayFd);    DBG("Closed video display device (file descriptor %d)\n", displayFd);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频国内一区二区| 美女视频黄免费的久久| av电影天堂一区二区在线观看| 日韩欧美资源站| 青青草国产成人99久久| 欧美高清视频在线高清观看mv色露露十八| 国产精品热久久久久夜色精品三区| 国产一区二区主播在线| 久久夜色精品国产欧美乱极品| 亚洲成在人线在线播放| 欧美日韩国产免费| 蜜桃av噜噜一区| 精品日韩99亚洲| 国产一区二区91| 国产精品久久久久婷婷二区次| av动漫一区二区| 一区二区三区在线视频免费观看| 91女人视频在线观看| 中文字幕在线视频一区| 91久久精品一区二区三| 亚洲成国产人片在线观看| 欧洲一区二区三区免费视频| 亚洲一二三四在线观看| 欧美一区二区三区电影| 国产综合一区二区| 中国av一区二区三区| 在线欧美小视频| 极品少妇一区二区| 久久一区二区三区四区| 色综合天天综合网国产成人综合天| 亚洲人成在线观看一区二区| 欧美日韩久久一区二区| 国产九色精品成人porny| 国产日韩亚洲欧美综合| 日本丶国产丶欧美色综合| 亚洲国产视频a| 久久久五月婷婷| 一本到一区二区三区| 青青草国产精品亚洲专区无| 日本一区二区综合亚洲| 91国产成人在线| 国产一区二区精品久久91| 国产精品妹子av| 欧美丰满嫩嫩电影| fc2成人免费人成在线观看播放 | 99re热视频精品| 亚洲123区在线观看| 久久久综合视频| 99久久综合狠狠综合久久| 丝袜美腿亚洲一区二区图片| 久久久亚洲高清| 欧美人与z0zoxxxx视频| 国产.精品.日韩.另类.中文.在线.播放| 亚洲综合一区二区精品导航| 国产精品久久久久久久久免费相片| 日韩精品在线一区二区| 欧美巨大另类极品videosbest| 北条麻妃国产九九精品视频| 国产麻豆一精品一av一免费| 久久精品国产免费看久久精品| 亚洲大尺度视频在线观看| 亚洲精品乱码久久久久久久久| 中文字幕av一区 二区| 久久伊人中文字幕| 久久综合久久综合久久| 欧美一区二区三区色| 欧美日韩夫妻久久| 欧美视频完全免费看| 在线观看一区二区精品视频| 一本色道综合亚洲| 一本到高清视频免费精品| 91免费看片在线观看| 一本大道久久a久久综合婷婷| 一本久久精品一区二区| 在线观看一区二区视频| 在线精品视频一区二区| 欧美日韩在线综合| 91麻豆精品久久久久蜜臀| 欧美一区二区性放荡片| 日韩欧美精品在线视频| 久久免费精品国产久精品久久久久| 精品国产凹凸成av人导航| 亚洲精品在线电影| 国产午夜精品在线观看| 国产精品视频一二三| 中文字幕一区二区在线观看| 亚洲欧美日韩一区二区| 亚洲一级二级三级| 日本三级亚洲精品| 国产乱人伦偷精品视频免下载| 高清av一区二区| 日本精品视频一区二区| 欧美国产精品劲爆| 国产一二三精品| 国产成人无遮挡在线视频| 国产麻豆精品95视频| 国产成人综合在线| 91视频国产资源| 欧美精品一卡二卡| 久久久亚洲国产美女国产盗摄 | 欧美电影在哪看比较好| 日韩欧美精品三级| 国产精品亲子乱子伦xxxx裸| 亚洲综合在线免费观看| 狂野欧美性猛交blacked| 国产福利精品一区| 日韩欧美中文字幕公布| 久久无码av三级| 日韩国产欧美三级| 美女精品自拍一二三四| 国产黄色成人av| 在线观看一区二区精品视频| 日韩一区二区三区在线观看| 国产精品私人影院| 午夜久久久影院| 国产91高潮流白浆在线麻豆 | 日本麻豆一区二区三区视频| 国产综合色在线| 欧美中文字幕亚洲一区二区va在线 | 99麻豆久久久国产精品免费| 欧美日本一区二区| 国产精品美女久久福利网站| 三级欧美韩日大片在线看| 成年人国产精品| 日韩三级中文字幕| 亚洲精品乱码久久久久久| 狠狠色2019综合网| 亚洲免费av观看| 亚洲福利一区二区| 国产成人精品一区二区三区四区| 欧美日韩国产另类不卡| 国产亚洲人成网站| 全国精品久久少妇| 色播五月激情综合网| 日韩欧美国产麻豆| 亚洲一级二级在线| a级精品国产片在线观看| 制服.丝袜.亚洲.另类.中文| 中文字幕一区日韩精品欧美| 国产乱人伦偷精品视频不卡| 在线不卡的av| 亚洲女子a中天字幕| 国产精品一区二区x88av| 欧美成人午夜电影| 天天操天天干天天综合网| 成人av手机在线观看| 精品久久久久久久久久久久包黑料 | 欧美日韩视频一区二区| 中文字幕不卡在线| 经典三级视频一区| 在线影院国内精品| 国产日韩欧美不卡在线| 奇米色一区二区| 欧美伊人久久大香线蕉综合69| 精品国产一区二区三区av性色| 日本成人在线网站| 欧美男男青年gay1069videost | 久久夜色精品国产欧美乱极品| 午夜a成v人精品| 欧美视频第二页| 亚洲一区二区三区美女| 在线视频你懂得一区二区三区| 中文字幕日本不卡| 成人动漫中文字幕| 国产精品久久久久婷婷二区次| 高清成人在线观看| 国产精品卡一卡二卡三| 91首页免费视频| 夜夜爽夜夜爽精品视频| 久久99精品视频| 日韩欧美国产不卡| 婷婷国产在线综合| 337p亚洲精品色噜噜噜| 日韩国产欧美一区二区三区| 欧美一区二区三区在线观看| 偷偷要91色婷婷| 日韩一二三区视频| 国内成人精品2018免费看| 久久久高清一区二区三区| 福利电影一区二区| 日韩久久一区二区| 欧洲一区二区三区在线| 免费黄网站欧美| 久久精品在线观看| 色哟哟国产精品| 亚洲v日本v欧美v久久精品| 日韩亚洲电影在线| 成人毛片在线观看| 久久精品国产久精国产爱| 国产蜜臀97一区二区三区 | 麻豆免费精品视频| 久久精品视频免费| 色综合网站在线| 日本不卡的三区四区五区| 久久久av毛片精品| 91啪在线观看| 久久99久久99小草精品免视看| 中文字幕av资源一区| 国产精品蜜臀在线观看| 成人午夜免费av|