123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- {
- $Id$
- Copyright (c) 1991, 1992, 1993 International Business Machines Corporation
- Copyright (c) 2002 by Valery Gaynullin
- Copyright (c) 2002-2003 by Yuri Prokushev ([email protected])
- This is Video Acceleration Interface
- This program is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License (LGPL) as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version. This program is
- distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU Library General Public License for more details. You should
- have received a copy of the GNU Library General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- **********************************************************************}
- {
- @abstract(Video Acceleration Interface)
- @author(Valery Gaynullin)
- @author(Yuri Prokushev ([email protected]))
- @created(29 Nov 2002)
- @lastmod(19 Jan 2003)
- This is Video Acceleration Interface.
- Warning: This code is alfa. Future versions of this unit will propably
- not be compatible.
- }
- Unit HWVideo;
- Interface
- Uses
- Os2Def,
- PMWin,
- PMGpi;
- // GRADD function class
- Const
- VA2_FUNCTION_CLASS='Video Acceleration 2';
- Type
- THWVIDEOCAPS=record
- ulLength: Cardinal;
- ulCapsFlags: Cardinal; //flags, describing HW capability
- szlSrcMax: SIZEL; //maximum source size (pixels)
- rctlDstMargin: RECTL; //destination rectangle margins
- fccDstColor: Cardinal; //screen FOURCC
- ulScanAlign: Cardinal; //requered scanline aligment-1
- ulNumColors: Cardinal; //count of supported source FOURCC
- fccColorType: ^Cardinal; //array of supported FOURCC
- ulAttrCount: Cardinal; //count of viewport attributes
- end;
- PHWVIDEOCAPS=^THWVIDEOCAPS;
- //ulCapsFlag defines
- Const
- HWVIDEOCAPS_MINIFY = $00000001; //Chip can perform downscaling
- HWVIDEOCAPS_FILTER = $00000002; //Image filtering present
- HWVIDEOCAPS_NONINTEGER_SCALE = $00000004; //allow scale to noninteger ratio
- HWVIDEOCAPS_COLOR_KEYING = $00000008; //allow color keying
- HWVIDEOCAPS_OVERLAY = $00000010; //overlay-type HW
- HWVIDEOCAPS_SEPARATE_OUT = $00000020; //used separate output connector (like TV out)
- HWVIDEOCAPS_DECODE = $00000040; //support non-RAW data
- HWVIDEOCAPS_NEEDPROTECT = $00000080; //HW need to lock VRAM
- Type
- THWATTRIBUTE=record
- ulLength: Cardinal; //size of structure in bytes
- szAttrDesc: Array[0..64] of Char; //string, describing attribute
- ulAttrType: Cardinal; //type of attribute, check ATTRTYPE_* const
- ulValueSize: Cardinal; //size in bytes of each value member
- ulValueCount: Cardinal; //count of value members
- pValueList: Pointer; //list of supported values
- ulCurrentValue: Cardinal; //current value
- ulDefaultValue: Cardinal; //default value
- ulAttribFlags: Cardinal; //flags to define some additional properties
- end;
- PHWATTRIBUTE=^THWATTRIBUTE;
- //types of attributes.
- // if ATTRTYPE_BOOLEAN, ATTRTYPE_STATICTEXT or ATTRTYPE_BYTE,
- // ulValueCount & ulValueSize undefined,
- // pValueList can be NULL,
- // else this must be actual value of allocated chunk of memory.
- Const
- //attribute of ON/OFF type
- ATTRTYPE_BOOLEAN = 1;
- //attribute can be member of set string type
- ATTRTYPE_AGGREGATE_STRING = 2;
- //attribute have no value - this is static text string
- ATTRTYPE_STATICTEXT = 3;
- //attribute can be any value in 0..255 margins
- ATTRTYPE_BYTE = 4;
- //defines for ulAttribFlags field
- //changing this attribute affect HW capability, so application
- //must re-read Caps after changing value of this attribute
- //application must not assume preserving any capability when this
- //attribute was changed
- ATTRIB_CHANGE_CAPS = 1;
- //some common attribute names
- Const
- ATTRIBUTE_BRIGHTNESS = 'Brightness';
- ATTRIBUTE_CONTRAST = 'Contrast';
- ATTRIBUTE_SATURATION = 'Saturation';
- ATTRIBUTE_HUE = 'Hue';
- ATTRIBUTE_FILTERING = 'Filtering';
- ATTRIBUTE_TVOUT = 'Output to TV';
- ATTRIBUTE_COLORKEY = 'Color Keying';
- Type
- THWVIDEOSETUP=record
- ulLength: Cardinal;
- rctlDstRect: RECTL; //destination screen rectangle
- szlSrcSize: SIZEL; //source image size
- ulSrcPitch: Cardinal; //byte offset between image rows
- fccColor: Cardinal; //image format
- ulKeyColor: Cardinal; //color key
- rctlSrcRect: RECTL;
- end;
- PHWVIDEOSETUP=^THWVIDEOSETUP;
- //return codes
- Const
- //no error
- HWVIDEO_DONE = 0;
- //unspecified error
- HWVIDEO_ERROR = 3;
- //FS session active, accelerator not available
- HWVIDEO_ERROR_BACKGROUND = 4;
- //HW not available
- HWVIDEO_ERROR_NO_HW = 6;
- //incorrect parameter
- HWVIDEO_ERROR_PARAMETER = 7;
- //to low offscreen VRAM to handle setup
- HWVIDEO_ERROR_LOW_VRAM = 8;
- //HW already in use
- HWVIDEO_ERROR_USED = 9;
- //Init HWVideo subsystem
- //check for presence and avilability of accelerated HW, if present and
- //available - lock it for this process.
- Function HWVIDEOInit: Cardinal; cdecl;
- //Get HW capability
- //return filled structure. When called, ulNumColors must be
- //set to actual allocated size of fccColorType array.
- //if call returned with error, then need to check returned
- //ulNumColors, allocate larger space and call again.
- Function HWVIDEOCaps(pCaps: PHWVIDEOCAPS): Cardinal; cdecl;
- //Set HWVideo viewport
- //Check HW capability to handle this setup, allocate buffers.
- //one special case: pSetup==NULL - disable video and free all
- //buffers
- Function HWVIDEOSetup(pSetup: PHWVIDEOSETUP): Cardinal; cdecl;
- //Get HWVideo buffer pointer
- //return linear pointer to overlay buffer and it's physical address
- Function HWVIDEOBeginUpdate(var ppBuffer: Pointer; var pulPhysBuffer: Cardinal): Cardinal; cdecl;
- //Display HWVideo buffer
- //set pending state for last accessed videobuffer, switch
- //buffers on next VSYNC
- Function HWVIDEOEndUpdate: Cardinal; cdecl;
- //Get current HW attributes
- //0<=ulAttribNum<pCaps->ulAttrCount, else error returned.
- Function HWVIDEOGetAttrib(ulAttribNum: Cardinal; pAttrib: PHWATTRIBUTE): Cardinal; cdecl;
- //Set new attribute value
- //0<=ulAttribNum<pCaps.ulAttrCount, else error returned.
- //pAttrib->ulCurrentValue filled with new value
- Function HWVIDEOSetAttrib(ulAttribNum: Cardinal; pAttrib: PHWATTRIBUTE): Cardinal; cdecl;
- //Close HWVideo
- Function HWVIDEOClose: Cardinal; cdecl;
- Implementation
- Function HWVIDEOInit: Cardinal; cdecl;
- external 'hwvideo' name 'HWVIDEOInit';
- Function HWVIDEOCaps(pCaps: PHWVIDEOCAPS): Cardinal; cdecl;
- external 'hwvideo' name 'HWVIDEOCaps';
- Function HWVIDEOSetup(pSetup: PHWVIDEOSETUP): Cardinal; cdecl;
- external 'hwvideo' name 'HWVIDEOSetup';
- Function HWVIDEOBeginUpdate(var ppBuffer: Pointer; var pulPhysBuffer: Cardinal): Cardinal; cdecl;
- external 'hwvideo' name 'HWVIDEOBeginUpdate';
- Function HWVIDEOEndUpdate: Cardinal; cdecl;
- external 'hwvideo' name 'HWVIDEOEndUpdate';
- Function HWVIDEOGetAttrib(ulAttribNum: Cardinal; pAttrib: PHWATTRIBUTE): Cardinal; cdecl;
- external 'hwvideo' name 'HWVIDEOGetAttrib';
- Function HWVIDEOSetAttrib(ulAttribNum: Cardinal; pAttrib: PHWATTRIBUTE): Cardinal; cdecl;
- external 'hwvideo' name 'HWVIDEOSetAttrib';
- Function HWVIDEOClose: Cardinal; cdecl;
- external 'hwvideo' name 'HWVIDEOClose';
- End.
- {
- $Log$
- Revision 1.1 2003-02-12 18:42:58 hajny
- + hwvideo moved to standalone package
- Revision 1.1 2003/02/09 13:49:06 hajny
- + mmtk added
- }
|