control_values_codecs.go 4.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package v4l2
  2. /*
  3. #cgo linux CFLAGS: -I ${SRCDIR}/../include/
  4. #include <linux/videodev2.h>
  5. #include <linux/v4l2-controls.h>
  6. */
  7. import "C"
  8. // MPEGStreamType represents v4l2_mpeg_stream_type
  9. // See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L237
  10. type MPEGStreamType = uint32
  11. const (
  12. MPEGStreamTypeMPEG2ProgramStream MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG2_PS
  13. MPEGStreamTypeMPEG2TransportStream MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG2_TS
  14. MPEGStreamTypeMPEG1SystemStream MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG1_SS
  15. MPEGStreamTypeMPEG2DVD MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG2_DVD
  16. MPEGStreamTypeMPEG1VCD MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG1_VCD
  17. MPEGStreamTypeMPEG2SVCD MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD
  18. )
  19. type MPEGVideoEncoding = uint32
  20. const (
  21. MPEGVideoEncodingMPEG1 MPEGVideoEncoding = C.V4L2_MPEG_VIDEO_ENCODING_MPEG_1
  22. MPEGVideoEncodingMPEG2 MPEGVideoEncoding = C.V4L2_MPEG_VIDEO_ENCODING_MPEG_2
  23. MPEGVideoEncodingMPEG4AVC MPEGVideoEncoding = C.V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC
  24. )
  25. type MPEGVideoAspect = uint32
  26. const (
  27. MPEGVideoAspect1x1 MPEGVideoAspect = C.V4L2_MPEG_VIDEO_ASPECT_1x1
  28. MPEGVideoAspect4x3 MPEGVideoAspect = C.V4L2_MPEG_VIDEO_ASPECT_4x3
  29. MPEGVideoAspect16x9 MPEGVideoAspect = C.V4L2_MPEG_VIDEO_ASPECT_16x9
  30. MPEGVideoAspect221x100 MPEGVideoAspect = C.V4L2_MPEG_VIDEO_ASPECT_221x100
  31. )
  32. type MPEGVideoBitrateMode = uint32
  33. const (
  34. MPEGVideoBitrateModeVBR = C.V4L2_MPEG_VIDEO_BITRATE_MODE_VBR
  35. MPEGVideoBitrateModeCBR = C.V4L2_MPEG_VIDEO_BITRATE_MODE_CBR
  36. MPEGVideoBitrateModeCQ = C.V4L2_MPEG_VIDEO_BITRATE_MODE_CQ
  37. )
  38. // Codec control values
  39. // See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-codec.html
  40. // See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L228
  41. const (
  42. CtrlCodecClass CtrlID = C.V4L2_CID_CODEC_CLASS
  43. CtrlMPEGStreamType MPEGStreamType = C.V4L2_CID_MPEG_STREAM_TYPE
  44. CtrlMPEGStreamPIDPMT CtrlID = C.V4L2_CID_MPEG_STREAM_PID_PMT
  45. CtrlMPEGStreamPIDAudio CtrlID = C.V4L2_CID_MPEG_STREAM_PID_AUDIO
  46. CtrlMPEGStreamPIDVideo CtrlID = C.V4L2_CID_MPEG_STREAM_PID_VIDEO
  47. CtrlMPEGStreamPIDPCR CtrlID = C.V4L2_CID_MPEG_STREAM_PID_PCR
  48. CtrlMPEGStreamPIDPESAudio CtrlID = C.V4L2_CID_MPEG_STREAM_PES_ID_AUDIO
  49. CtrlMPEGStreamPESVideo CtrlID = C.V4L2_CID_MPEG_STREAM_PES_ID_VIDEO
  50. CtrlMEPGStreamVBIFormat CtrlID = C.V4L2_CID_MPEG_STREAM_VBI_FMT
  51. CtrlMPEGVideoEncoding MPEGVideoEncoding = C.V4L2_CID_MPEG_VIDEO_ENCODING
  52. CtrlMPEGVideoAspect MPEGVideoAspect = C.V4L2_CID_MPEG_VIDEO_ASPECT
  53. CtrlMPEGVideoBFrames CtrlID = C.V4L2_CID_MPEG_VIDEO_B_FRAMES
  54. CtrlMPEGVideoGOPSize CtrlID = C.V4L2_CID_MPEG_VIDEO_GOP_SIZE
  55. CtrlMPEGVideoGOPClosure CtrlID = C.V4L2_CID_MPEG_VIDEO_GOP_CLOSURE
  56. CtrlMPEGVideoPulldown CtrlID = C.V4L2_CID_MPEG_VIDEO_PULLDOWN
  57. CtrlMPEGVideoBitrateMode MPEGVideoBitrateMode = C.V4L2_CID_MPEG_VIDEO_BITRATE_MODE
  58. CtrlMPEGVideoBitrate CtrlID = C.V4L2_CID_MPEG_VIDEO_BITRATE
  59. CtrlMPEGVideoBitratePeak CtrlID = C.V4L2_CID_MPEG_VIDEO_BITRATE_PEAK
  60. CtrlMPEGVideoTemporalDecimation CtrlID = C.V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION
  61. CtrlMPEGVideoMute CtrlID = C.V4L2_CID_MPEG_VIDEO_MUTE
  62. CtrlMPEGVideoMutYUV CtrlID = C.V4L2_CID_MPEG_VIDEO_MUTE_YUV
  63. CtrlMPEGVideoDecoderSliceInterface CtrlID = C.V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE
  64. CtrlMPEGVideoDecoderMPEG4DeblockFilter CtrlID = C.V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER
  65. CtrlMPEGVideoCyclicIntraRefreshMB CtrlID = C.V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB
  66. CtrlMPEGVideoFrameRCEnable CtrlID = C.V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE
  67. CtrlMPEGVideoHeaderMode CtrlID = C.V4L2_CID_MPEG_VIDEO_HEADER_MODE
  68. CtrlMPEGVideoMaxRefPic CtrlID = C.V4L2_CID_MPEG_VIDEO_MAX_REF_PIC
  69. CtrlMPEGVideoMBRCEnable CtrlID = C.V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE
  70. CtrlMPEGVideoMultiSliceMaxBytes CtrlID = C.V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES
  71. CtrlMPEGVideoMultiSliceMaxMB CtrlID = C.V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB
  72. CtrlMPEGVideoMultiSliceMode CtrlID = C.V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE
  73. // TODO (vladimir) add remainder codec, there are a lot more!
  74. )