Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,7 @@ H.264
FFmpeg-H.264-VDPAU: FFmpeg H.264 VDPAU decoder
FFmpeg-H.264-Vulkan: FFmpeg H.264 Vulkan decoder
FFmpeg-H.264-v4l2m2m: FFmpeg H.264 v4l2m2m decoder
FFmpeg-H.264-v4l2request: FFmpeg H.264 V4L2 Request API decoder
Fluendo-H.264-DXVA2-Gst1.0: Fluendo H.264 DXVA2 decoder for GStreamer 1.0
Fluendo-H.264-HW-lcevchwvah264dec-Gst1.0: Fluendo H.264 HW decoder for GStreamer 1.0
Fluendo-H.264-SW-Gst1.0: Fluendo H.264 SW decoder for GStreamer 1.0
Expand Down Expand Up @@ -367,6 +368,7 @@ AV1
FFmpeg-AV1-VAAPI: FFmpeg AV1 VAAPI decoder
FFmpeg-AV1-VDPAU: FFmpeg AV1 VDPAU decoder
FFmpeg-AV1-Vulkan: FFmpeg AV1 Vulkan decoder
FFmpeg-AV1-v4l2request: FFmpeg AV1 V4L2 Request API decoder
GStreamer-AV1-D3D11-Gst1.0: GStreamer AV1 D3D11 decoder for GStreamer 1.0
GStreamer-AV1-D3D12-Gst1.0: GStreamer AV1 D3D12 decoder for GStreamer 1.0
GStreamer-AV1-V4L2SL-Gst1.0: GStreamer AV1 V4L2SL decoder for GStreamer 1.0
Expand All @@ -390,6 +392,7 @@ H.265
FFmpeg-H.265-VDPAU: FFmpeg H.265 VDPAU decoder
FFmpeg-H.265-Vulkan: FFmpeg H.265 Vulkan decoder
FFmpeg-H.265-v4l2m2m: FFmpeg H.265 v4l2m2m decoder
FFmpeg-H.265-v4l2request: FFmpeg H.265 V4L2 Request API decoder
Fluendo-H.265-DXVA2-Gst1.0: Fluendo H.265 DXVA2 decoder for GStreamer 1.0
Fluendo-H.265-SW-Gst1.0: Fluendo H.265 SW decoder for GStreamer 1.0
Fluendo-H.265-VAAPI-Gst1.0: Fluendo H.265 VAAPI decoder for GStreamer 1.0
Expand Down Expand Up @@ -422,6 +425,7 @@ H.266

MPEG2_VIDEO
FFmpeg-MPEG2_VIDEO: FFmpeg MPEG2 VIDEO SW decoder
FFmpeg-MPEG2_VIDEO-v4l2request: FFmpeg MPEG2 VIDEO V4L2 Request API decoder
Fluendo-MPEG2_VIDEO-DXVA2-Gst1.0: Fluendo MPEG2_VIDEO DXVA2 decoder for GStreamer 1.0
Fluendo-MPEG2_VIDEO-SW-Gst1.0: Fluendo MPEG2 VIDEO SW decoder for GStreamer 1.0
Fluendo-MPEG2_VIDEO-VAAPI-Gst1.0: Fluendo MPEG2_VIDEO VAAPI decoder for GStreamer 1.0
Expand All @@ -443,6 +447,7 @@ VP8
FFmpeg-VP8-CUDA: FFmpeg VP8 CUDA decoder
FFmpeg-VP8-VAAPI: FFmpeg VP8 VAAPI decoder
FFmpeg-VP8-v4l2m2m: FFmpeg VP8 v4l2m2m decoder
FFmpeg-VP8-v4l2request: FFmpeg VP8 V4L2 Request API decoder
GStreamer-VP8-D3D11-Gst1.0: GStreamer VP8 D3D11 decoder for GStreamer 1.0
GStreamer-VP8-Libav-Gst1.0: GStreamer VP8 Libav decoder for GStreamer 1.0
GStreamer-VP8-NVDEC-Gst1.0: GStreamer VP8 NVDEC decoder for GStreamer 1.0
Expand All @@ -462,6 +467,7 @@ VP9
FFmpeg-VP9-VDPAU: FFmpeg VP9 VDPAU decoder
FFmpeg-VP9-Vulkan: FFmpeg VP9 Vulkan decoder
FFmpeg-VP9-v4l2m2m: FFmpeg VP9 v4l2m2m decoder
FFmpeg-VP9-v4l2request: FFmpeg VP9 V4L2 Request API decoder
GStreamer-VP9-D3D11-Gst1.0: GStreamer VP9 D3D11 decoder for GStreamer 1.0
GStreamer-VP9-D3D12-Gst1.0: GStreamer VP9 D3D12 decoder for GStreamer 1.0
GStreamer-VP9-Libav-Gst1.0: GStreamer VP9 Libav decoder for GStreamer 1.0
Expand Down
55 changes: 55 additions & 0 deletions fluster/decoders/ffmpeg.py
Original file line number Diff line number Diff line change
Expand Up @@ -525,3 +525,58 @@ class FFmpegH264QsvDecoder(FFmpegQsvDecoder):

codec = Codec.H264
api = "h264_qsv"


class FFmpegV4L2RequestDecoder(FFmpegDecoder):
"""Generic class for FFmpeg V4L2 Request API decoder"""

hw_acceleration = True
api = "v4l2request"
hw_output_format = "drm_prime"
hw_download = True
hw_download_mapping = {
OutputFormat.YUV420P: "nv12",
OutputFormat.YUV422P: "nv16",
}


@register_decoder
class FFmpegH264V4L2RequestDecoder(FFmpegV4L2RequestDecoder):
"""FFmpeg V4L2 Request API decoder for H.264"""

codec = Codec.H264


@register_decoder
class FFmpegH265V4L2RequestDecoder(FFmpegV4L2RequestDecoder):
"""FFmpeg V4L2 Request API decoder for H.265"""

codec = Codec.H265


@register_decoder
class FFmpegVP8V4L2RequestDecoder(FFmpegV4L2RequestDecoder):
"""FFmpeg V4L2 Request API decoder for VP8"""

codec = Codec.VP8


@register_decoder
class FFmpegVP9V4L2RequestDecoder(FFmpegV4L2RequestDecoder):
"""FFmpeg V4L2 Request API decoder for VP9"""

codec = Codec.VP9


@register_decoder
class FFmpegAV1V4L2RequestDecoder(FFmpegV4L2RequestDecoder):
"""FFmpeg V4L2 Request API decoder for AV1"""

codec = Codec.AV1


@register_decoder
class FFmpegMPEG2V4L2RequestDecoder(FFmpegV4L2RequestDecoder):
"""FFmpeg V4L2 Request API decoder for MPEG2 video"""

codec = Codec.MPEG2_VIDEO