11from enum import IntEnum
22
33import cython
4- import cython .cimports .libav as lib
54from cython .cimports .av .error import err_check
65from cython .cimports .av .video .format import VideoFormat
76from cython .cimports .av .video .frame import alloc_video_frame
87
98
109class Interpolation (IntEnum ):
11- FAST_BILINEAR : "Fast bilinear" = lib . SWS_FAST_BILINEAR
12- BILINEAR : "Bilinear" = lib . SWS_BILINEAR
13- BICUBIC : "Bicubic" = lib . SWS_BICUBIC
14- X : "Experimental" = lib . SWS_X
15- POINT : "Nearest neighbor / point" = lib . SWS_POINT
16- AREA : "Area averaging" = lib . SWS_AREA
17- BICUBLIN : "Luma bicubic / chroma bilinear" = lib . SWS_BICUBLIN
18- GAUSS : "Gaussian" = lib . SWS_GAUSS
19- SINC : "Sinc" = lib . SWS_SINC
20- LANCZOS : "Bicubic spline" = lib . SWS_LANCZOS
10+ FAST_BILINEAR : "Fast bilinear" = SWS_FAST_BILINEAR
11+ BILINEAR : "Bilinear" = SWS_BILINEAR
12+ BICUBIC : "Bicubic" = SWS_BICUBIC
13+ X : "Experimental" = SWS_X
14+ POINT : "Nearest neighbor / point" = SWS_POINT
15+ AREA : "Area averaging" = SWS_AREA
16+ BICUBLIN : "Luma bicubic / chroma bilinear" = SWS_BICUBLIN
17+ GAUSS : "Gaussian" = SWS_GAUSS
18+ SINC : "Sinc" = SWS_SINC
19+ LANCZOS : "Bicubic spline" = SWS_LANCZOS
2120
2221
2322class Colorspace (IntEnum ):
24- ITU709 = lib . SWS_CS_ITU709
25- FCC = lib . SWS_CS_FCC
26- ITU601 = lib . SWS_CS_ITU601
27- ITU624 = lib . SWS_CS_ITU624
28- SMPTE170M = lib . SWS_CS_SMPTE170M
29- SMPTE240M = lib . SWS_CS_SMPTE240M
30- DEFAULT = lib . SWS_CS_DEFAULT
23+ ITU709 = SWS_CS_ITU709
24+ FCC = SWS_CS_FCC
25+ ITU601 = SWS_CS_ITU601
26+ ITU624 = SWS_CS_ITU624
27+ SMPTE170M = SWS_CS_SMPTE170M
28+ SMPTE240M = SWS_CS_SMPTE240M
29+ DEFAULT = SWS_CS_DEFAULT
3130 # Lowercase for b/c.
32- itu709 = lib . SWS_CS_ITU709
33- fcc = lib . SWS_CS_FCC
34- itu601 = lib . SWS_CS_ITU601
35- itu624 = lib . SWS_CS_ITU624
36- smpte170m = lib . SWS_CS_SMPTE170M
37- smpte240m = lib . SWS_CS_SMPTE240M
38- default = lib . SWS_CS_DEFAULT
31+ itu709 = SWS_CS_ITU709
32+ fcc = SWS_CS_FCC
33+ itu601 = SWS_CS_ITU601
34+ itu624 = SWS_CS_ITU624
35+ smpte170m = SWS_CS_SMPTE170M
36+ smpte240m = SWS_CS_SMPTE240M
37+ default = SWS_CS_DEFAULT
3938
4039
4140class ColorRange (IntEnum ):
@@ -65,10 +64,10 @@ def _resolve_enum_value(value, enum_class, default):
6564_SWS_CS_TO_AVCOL_SPC = cython .declare (
6665 dict ,
6766 {
68- lib . SWS_CS_ITU709 : lib .AVCOL_SPC_BT709 ,
69- lib . SWS_CS_FCC : lib .AVCOL_SPC_FCC ,
70- lib . SWS_CS_ITU601 : lib .AVCOL_SPC_SMPTE170M ,
71- lib . SWS_CS_SMPTE240M : lib .AVCOL_SPC_SMPTE240M ,
67+ SWS_CS_ITU709 : lib .AVCOL_SPC_BT709 ,
68+ SWS_CS_FCC : lib .AVCOL_SPC_FCC ,
69+ SWS_CS_ITU601 : lib .AVCOL_SPC_SMPTE170M ,
70+ SWS_CS_SMPTE240M : lib .AVCOL_SPC_SMPTE240M ,
7271 },
7372)
7473
@@ -84,7 +83,7 @@ class VideoReformatter:
8483
8584 def __dealloc__ (self ):
8685 with cython .nogil :
87- lib . sws_freeContext (self .ptr )
86+ sws_freeContext (self .ptr )
8887
8988 def reformat (
9089 self ,
@@ -212,7 +211,7 @@ def _reformat(
212211 return frame
213212
214213 with cython .nogil :
215- self .ptr = lib . sws_getCachedContext (
214+ self .ptr = sws_getCachedContext (
216215 self .ptr ,
217216 frame .ptr .width ,
218217 frame .ptr .height ,
@@ -239,7 +238,7 @@ def _reformat(
239238
240239 if src_colorspace != dst_colorspace or src_color_range != dst_color_range :
241240 with cython .nogil :
242- ret = lib . sws_getColorspaceDetails (
241+ ret = sws_getColorspaceDetails (
243242 self .ptr ,
244243 cython .address (inv_tbl ),
245244 cython .address (src_colorspace_range ),
@@ -254,16 +253,14 @@ def _reformat(
254253 with cython .nogil :
255254 # Grab the coefficients for the requested transforms.
256255 # The inv_table brings us to linear, and `tbl` to the new space.
257- if src_colorspace != lib . SWS_CS_DEFAULT :
256+ if src_colorspace != SWS_CS_DEFAULT :
258257 inv_tbl = cython .cast (
259- cython .p_int , lib .sws_getCoefficients (src_colorspace )
260- )
261- if dst_colorspace != lib .SWS_CS_DEFAULT :
262- tbl = cython .cast (
263- cython .p_int , lib .sws_getCoefficients (dst_colorspace )
258+ cython .p_int , sws_getCoefficients (src_colorspace )
264259 )
260+ if dst_colorspace != SWS_CS_DEFAULT :
261+ tbl = cython .cast (cython .p_int , sws_getCoefficients (dst_colorspace ))
265262
266- ret = lib . sws_setColorspaceDetails (
263+ ret = sws_setColorspaceDetails (
267264 self .ptr ,
268265 inv_tbl ,
269266 src_color_range ,
@@ -290,7 +287,7 @@ def _reformat(
290287 )
291288
292289 with cython .nogil :
293- lib . sws_scale (
290+ sws_scale (
294291 self .ptr ,
295292 cython .cast ("const unsigned char *const *" , frame .ptr .data ),
296293 cython .cast ("const int *" , frame .ptr .linesize ),
0 commit comments