国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
FVID的使用-FVID_control FVID_create
字號:

 FVID模塊為DSP/BIOS程序提供API函數(shù),以實現(xiàn)幀圖像的獲取和顯示。FVID模塊提供的設(shè)備驅(qū)動API函數(shù)不同于其他的設(shè)備驅(qū)動,因為它掌握數(shù)據(jù)緩沖區(qū)的所有權(quán),應(yīng)用程序按需求來分配緩沖區(qū)。對于大多數(shù)的DSP/BIOS設(shè)備驅(qū)動,最初都是由應(yīng)用程序來控制數(shù)據(jù)緩沖區(qū),并傳遞這些緩沖區(qū)的地址到設(shè)備驅(qū)動以實現(xiàn)數(shù)據(jù)的輸入輸出。FVID模塊和視頻捕獲顯示驅(qū)動與此不同,是山設(shè)備驅(qū)動來直接控制數(shù)據(jù)緩沖區(qū),這是因為視頻采集/顯示系統(tǒng)通常需要有較大的、復(fù)雜的緩沖區(qū),而且對數(shù)據(jù)讀取速度的要求要遠高于對緩沖區(qū)分配的靈活性和機動性的要求。設(shè)備驅(qū)動根據(jù)FVID通道的配置參數(shù)計算緩沖區(qū)的大小并分配緩沖區(qū),而且至少要為每個FVID通道分配3個緩沖區(qū),以確保視頻圖像的捕獲和顯示的連續(xù)性。

Fvid對gio的封裝:
從fvid.h中我們可以清晰的看出fvid即為gio的一種擴展封裝。
#define FVID_alloc(gioChan, bufp)
GIO_submit(gioChan, FVID_ALLOC, bufp, NULL, NULL);

Fvid的屬性結(jié)構(gòu):
typedef struct FVID_Attrs {
Uns timeout;
} FVID_Attrs;
Fvid的屬性,指定fvid函數(shù)(即相當(dāng)于gio相關(guān)函數(shù))等待時間。若函數(shù)不能立即返回將會導(dǎo)致進程被掛起。如果指定為非0, FVID_alloc, FVID_free and FVID_exchange 只能在 DSP/BIOS task (TSK)使用。因swi和hwi不可能因此掛起。

Fvid信息:
typedef struct FVID_Frame {
QUE_Elem queElement; /* for queuing */
union {
FVID_Iframe iFrm; /* y/c frame buffer */
FVID_Pframe pFrm; /* y/c frame buffer */
FVID_RawIFrame riFrm; /* raw frame buffer */
FVID_RawPFrame rpFrm; /* raw frame buffer */
} frame;
} FVID_Frame;
typedef struct FVID_Iframe{
Char* y1;
Char* cb1;
Char* cr1;
Char* y2;
Char* cb2;
Char* cr2;
}FVID_Iframe;

/* progressive frame */
typedef struct FVID_Pframe {
Char* y;
Char* cb;
Char* cr;
} FVID_Pframe;
typedef struct FVID_RawIFrame{
Char* buf1;
Char* buf2;
} FVID_RawIFrame;
typedef struct FVID_RawPFrame{
Char* buf;
} FVID_RawPFrame;
QUE_Elem為該gio使用的隊列,第二個成員為一指向緩沖區(qū)的指針。為聯(lián)合體,即實例化結(jié)構(gòu)對象第二個成員為指向該種聯(lián)合體成員之一。該程序為iframe。

FVID_control

FVID_control作用:發(fā)送一個控制命令到mini_driver

語法: status = FVID_control (fvidChan, cmd, args);

參數(shù): FVID_Handle fvidChan            /* handle to an instance of the device */
              Int cmd                         /* control command */
              Ptr args                        /* pointer to control command arguments */
              Return Value Int status /* returns IOM_COMPLETED if successful */

參數(shù)說明:fvidChan 是FVID_create()創(chuàng)建的指向通道的句柄.
                 cmd有兩個值:IOM_ABORT----作用是中止所以的未定的I/O工作
                             IOM_FLUSH----作用是所以采集口的工作被丟棄,所以顯示I/O的工作正常進行.

The args argument is a pointer to the argument or structure of arguments that
are specific to the command being passed.

返回值:如果調(diào)用成功,FVID_control返回IOM_COMPLETED .如果有錯誤產(chǎn)生,這個調(diào)用會返回一個負值.

Example:
/* abort all pending video driver I/O jobs */
FVID_control(fvidChan, IOM_ABORT, NULL);

 

FVID_create()

      FVID_create()函數(shù)的作用:分配并初始化FVID通道對象;

語法:fvidChan = FVID_create (name, mode, *status, optArgs, *attrs);

Parameters

String name                  /* handle to an instance of the device */
Int mode                     /* pointer to buffer allocated by driver */
Int *status                  /* pointer to size of buffer pointed to by */
Ptr optArgs                  /* */
FVID_Attrs *attrs            /* */

其中:name是設(shè)備實例的句柄,是一個字符串

mode 是選擇的模式,只有兩個值:IOM_INPUT 設(shè)置采集模式,IOM_OUTPUT設(shè)置顯示模式.

status是The status argument is an out parameter that this function fills with a pointer to
the status that was returned by the mini-driver.

attrs 是指向FVID_Attrs結(jié)構(gòu)的指針:
FVID_Attrs的定義如下:typedef struct FVID_Attrs {
                                                        Uns timeout;
                                                       } FVID_Attrs;

timeout成員用來指定旗語同步,它的值可以是:

  1. SYS_FOREVER:會讓FVID_alloc, FVID_free and FVID_exchange的調(diào)用不確定的等待到這個調(diào)用完成.
  2. 數(shù)字的timeout值會讓這些APIs阻塞一段指定的時間(以系統(tǒng)時鐘).
  3. 0值會讓APIs不阻塞,他們會立刻返回,這種情況下,應(yīng)用程序會檢查返回的status值來保證調(diào)用已經(jīng)成功
    完成.

備注:FVID_alloc, FVID_free and FVID_exchange 的調(diào)用只能在 DSP/BIOS task (TSK).

  • FVID_create的返回值:

如果通道成功的打開了,那么FVID_create返回一個指向通道的句柄.這個句柄可以用來讓后來的模塊調(diào)用這個通道.

Example /* Initialize the attributes */
FVID_ATTRS dispAttrs = FVID_ATTRS;
/* Create an instance to a video display device */ chan-
Handle = FVID_create(“\display0”, IOM_INPUT, NULL, NULL,

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
經(jīng)典程序100例(71-80)
萬字整理 | 深入理解工作隊列
Linux之DMA API -- 通用設(shè)備的動態(tài)DMA映射--轉(zhuǎn)
MPlan.rar OutStruct.h
指向結(jié)構(gòu)體的指針
C 復(fù)習(xí)之STL(一)—— erase和remove特異行為
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服