diff options
-rw-r--r-- | src/lib/ffmpeg/swscale.pas | 179 |
1 files changed, 101 insertions, 78 deletions
diff --git a/src/lib/ffmpeg/swscale.pas b/src/lib/ffmpeg/swscale.pas index 309a7340..0d35667c 100644 --- a/src/lib/ffmpeg/swscale.pas +++ b/src/lib/ffmpeg/swscale.pas @@ -79,7 +79,7 @@ function swscale_version(): cuint; {$IFEND} const - {* values for the flags, the stuff on the command line is different *} + (* values for the flags, the stuff on the command line is different *) SWS_FAST_BILINEAR = 1; SWS_BILINEAR = 2; SWS_BICUBIC = 4; @@ -99,10 +99,10 @@ const SWS_PRINT_INFO = $1000; - //the following 3 flags are not completely implemented - //internal chrominace subsampling info + // the following 3 flags are not completely implemented + // internal chrominace subsampling info SWS_FULL_CHR_H_INT = $2000; - //input subsampling info + // input subsampling info SWS_FULL_CHR_H_INP = $4000; SWS_DIRECT_BGR = $8000; SWS_ACCURATE_RND = $40000; @@ -124,7 +124,6 @@ const SWS_CS_SMPTE240M = 7; SWS_CS_DEFAULT = 5; - type // when used for filters they must have an odd number of elements @@ -149,50 +148,50 @@ type {internal structure} end; - -{ - Scales the image slice in \p srcSlice and puts the resulting scaled - slice in the image in \p dst. A slice is a sequence of consecutive - rows in an image. - - @param context the scaling context previously created with - sws_getContext() - @param srcSlice the array containing the pointers to the planes of - the source slice - @param srcStride the array containing the strides for each plane of - the source image - @param srcSliceY the position in the source image of the slice to - process, that is the number (counted starting from - zero) in the image of the first row of the slice - @param srcSliceH the height of the source slice, that is the number - of rows in the slice - @param dst the array containing the pointers to the planes of - the destination image - @param dstStride the array containing the strides for each plane of - the destination image - @return the height of the output slice -} procedure sws_freeContext(swsContext: PSwsContext); cdecl; external sw__scale; -{ -Allocates and returns a SwsContext. You need it to perform -scaling/conversion operations using sws_scale(). - -param srcW the width of the source image -param srcH the height of the source image -param srcFormat the source image format -param dstW the width of the destination image -param dstH the height of the destination image -param dstFormat the destination image format -param flags specify which algorithm and options to use for rescaling -return a pointer to an allocated context, or NULL in case of error -} +(** + * Allocates and returns a SwsContext. You need it to perform + * scaling/conversion operations using sws_scale(). + * + * @param srcW the width of the source image + * @param srcH the height of the source image + * @param srcFormat the source image format + * @param dstW the width of the destination image + * @param dstH the height of the destination image + * @param dstFormat the destination image format + * @param flags specify which algorithm and options to use for rescaling + * @return a pointer to an allocated context, or NULL in case of error + *) function sws_getContext(srcW: cint; srcH: cint; srcFormat: TAVPixelFormat; - dstW: cint; dstH: cint; dstFormat: TAVPixelFormat; - flags: cint; srcFilter: PSwsFilter; - dstFilter: PSwsFilter; param: PCdouble): PSwsContext; + dstW: cint; dstH: cint; dstFormat: TAVPixelFormat; + flags: cint; srcFilter: PSwsFilter; + dstFilter: PSwsFilter; param: PCdouble): PSwsContext; cdecl; external sw__scale; + +(** + * Scales the image slice in srcSlice and puts the resulting scaled + * slice in the image in dst. A slice is a sequence of consecutive + * rows in an image. + * + * @param context the scaling context previously created with + * sws_getContext() + * @param srcSlice the array containing the pointers to the planes of + * the source slice + * @param srcStride the array containing the strides for each plane of + * the source image + * @param srcSliceY the position in the source image of the slice to + * process, that is the number (counted starting from + * zero) in the image of the first row of the slice + * @param srcSliceH the height of the source slice, that is the number + * of rows in the slice + * @param dst the array containing the pointers to the planes of + * the destination image + * @param dstStride the array containing the strides for each plane of + * the destination image + * @return the height of the output slice + *) function sws_scale(context: PSwsContext; srcSlice: PPCuint8Array; srcStride: PCintArray; srcSliceY: cint; srcSliceH: cint; dst: PPCuint8Array; dstStride: PCintArray): cint; cdecl; external sw__scale; @@ -204,54 +203,73 @@ function sws_scale_ordered(context: PSwsContext; src: PPCuint8Array; srcStride: cdecl; external sw__scale; deprecated; {$IFEND} -// param inv_table the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x] -// param fullRange if 1 then the luma range is 0..255 if 0 it is 16..235 -// return -1 if not supported +(** + * @param inv_table the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x] + * @param fullRange if 1 then the luma range is 0..255 if 0 it is 16..235 + * @return -1 if not supported + *) function sws_setColorspaceDetails(c: PSwsContext; inv_table: PQuadCintArray; srcRange: cint; table: PQuadCintArray; dstRange: cint; brightness: cint; contrast: cint; saturation: cint): cint; cdecl; external sw__scale; -// return -1 if not supported +(** + * @return -1 if not supported + *) function sws_getColorspaceDetails(c: PSwsContext; var inv_table: PQuadCintArray; var srcRange: cint; var table: PQuadCintArray; var dstRange: cint; var brightness: cint; var contrast: cint; var saturation: cint): cint; cdecl; external sw__scale; -// Returns a normalized Gaussian curve used to filter stuff -// quality=3 is high quality, lower is lower quality. +(** + * Returns a normalized Gaussian curve used to filter stuff + * quality=3 is high quality, lower is lower quality. + *) function sws_getGaussianVec(variance: cdouble; quality: cdouble): PSwsVector; cdecl; external sw__scale; -// Allocates and returns a vector with \p length coefficients, all -// with the same value \p c. +(** + * Allocates and returns a vector with length coefficients, all + * with the same value c. + *) function sws_getConstVec(c: cdouble; length: cint): PSwsVector; cdecl; external sw__scale; -// Allocates and returns a vector with just one coefficient, with -// value 1.0. +(** + * Allocates and returns a vector with just one coefficient, with + * value 1.0. + *) function sws_getIdentityVec: PSwsVector; cdecl; external sw__scale; -// Scales all the coefficients of \p a by the \p scalar value. +(** + * Scales all the coefficients of a by the scalar value. + *) procedure sws_scaleVec(a: PSwsVector; scalar: cdouble); cdecl; external sw__scale; -// Scales all the coefficients of \p a so that their sum equals \p -// height." +(** + * Scales all the coefficients of a so that their sum equals height. + *) procedure sws_normalizeVec(a: PSwsVector; height: cdouble); cdecl; external sw__scale; + procedure sws_convVec(a: PSwsVector; b: PSwsVector); cdecl; external sw__scale; + procedure sws_addVec(a: PSwsVector; b: PSwsVector); cdecl; external sw__scale; + procedure sws_subVec(a: PSwsVector; b: PSwsVector); cdecl; external sw__scale; + procedure sws_shiftVec(a: PSwsVector; shift: cint); cdecl; external sw__scale; -// Allocates and returns a clone of the vector a, that is a vector -// with the same coefficients as a. +(** + * Allocates and returns a clone of the vector a, that is a vector + * with the same coefficients as a. + *) function sws_cloneVec(a: PSwsVector): PSwsVector; cdecl; external sw__scale; @@ -263,36 +281,41 @@ procedure sws_printVec(a: PSwsVector); {$IFEND} {$IF LIBSWSCALE_VERSION_MINOR >= 7} -// Prints with av_log() a textual representation of the vector a -// if log_level <= av_log_level. +(** + * Prints with av_log() a textual representation of the vector a + * if log_level <= av_log_level. + *) procedure sws_printVec2(a: PSwsVector; - log_ctx: PAVClass; - log_level: cint); // Hint: PAVClass needs to be done in avutil as in log.h + log_ctx: PAVClass; // PAVClass is declared in avcodec.pas + log_level: cint); cdecl; external sw__scale; {$IFEND} procedure sws_freeVec(a: PSwsVector); cdecl; external sw__scale; -function sws_getDefaultFilter(lumaGBlur: cfloat; chromaGBlur: cfloat; lumaSharpen: cfloat; chromaSharpen: cfloat; chromaHShift: cfloat; - chromaVShift: cfloat; verbose: cint): PSwsFilter; +function sws_getDefaultFilter(lumaGBlur: cfloat; chromaGBlur: cfloat; + lumaSharpen: cfloat; chromaSharpen: cfloat; + chromaHShift: cfloat; chromaVShift: cfloat; + verbose: cint): PSwsFilter; cdecl; external sw__scale; + procedure sws_freeFilter(filter: PSwsFilter); cdecl; external sw__scale; -{ -Checks if context can be reused, otherwise reallocates a new -one. - -If context is NULL, just calls sws_getContext() to get a new -context. Otherwise, checks if the parameters are the ones already -saved in context. If that is the case, returns the current -context. Otherwise, frees context and gets a new context with -the new parameters. - -Be warned that srcFilter and dstFilter are not checked, they -are assumed to remain the same. -} +(** + * Checks if context can be reused, otherwise reallocates a new + * one. + * + * If context is NULL, just calls sws_getContext() to get a new + * context. Otherwise, checks if the parameters are the ones already + * saved in context. If that is the case, returns the current + * context. Otherwise, frees context and gets a new context with + * the new parameters. + * + * Be warned that srcFilter and dstFilter are not checked, they + * are assumed to remain the same. + *) function sws_getCachedContext(context: PSwsContext; srcW: cint; srcH: cint; srcFormat: TAVPixelFormat; dstW: cint; dstH: cint; dstFormat: TAVPixelFormat; |