34 lines
1.0 KiB
Cython
34 lines
1.0 KiB
Cython
cimport libav as lib
|
|
|
|
from av.codec.context cimport CodecContext
|
|
from av.video.format cimport VideoFormat
|
|
from av.video.frame cimport VideoFrame
|
|
from av.video.reformatter cimport VideoReformatter
|
|
|
|
|
|
# The get_format callback in AVCodecContext is called by the decoder to pick a format out of a list.
|
|
# When we want accelerated decoding, we need to figure out ahead of time what the format should be,
|
|
# and find a way to pass that into our callback so we can return it to the decoder. We use the 'opaque'
|
|
# user data field in AVCodecContext for that. This is the struct we store a pointer to in that field.
|
|
cdef struct AVCodecPrivateData:
|
|
lib.AVPixelFormat hardware_pix_fmt
|
|
bint allow_software_fallback
|
|
|
|
|
|
cdef class VideoCodecContext(CodecContext):
|
|
|
|
cdef AVCodecPrivateData _private_data
|
|
|
|
cdef VideoFormat _format
|
|
cdef _build_format(self)
|
|
|
|
cdef int last_w
|
|
cdef int last_h
|
|
cdef readonly VideoReformatter reformatter
|
|
|
|
# For encoding.
|
|
cdef readonly int encoded_frame_count
|
|
|
|
# For decoding.
|
|
cdef VideoFrame next_frame
|