ext_ctrls_vp8.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package v4l2
  2. //#include <linux/v4l2-controls.h>
  3. import "C"
  4. const (
  5. VP8CoefficientProbabilityCount uint32 = 11 // C.V4L2_VP8_COEFF_PROB_CNT
  6. VP8MVProbabilityCount uint32 = 19 // C.V4L2_VP8_MV_PROB_CNT
  7. )
  8. // VP8Segment (v4l2_vp8_segment)
  9. // See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1692
  10. type VP8Segment struct {
  11. QuantUpdate [4]int8
  12. LoopFilterUpdate [4]int8
  13. SegmentProbabilities [3]uint8
  14. _ uint8 // padding
  15. Flags uint32
  16. }
  17. // VP8LoopFilter (v4l2_vp8_loop_filter)
  18. // See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1719
  19. type VP8LoopFilter struct {
  20. ReferenceFrameDelta int8
  21. MBModeDelta int8
  22. SharpnessLevel uint8
  23. Level uint8
  24. _ uint16 // padding
  25. Flags uint32
  26. }
  27. // VP8Quantization (v4l2_vp8_quantization)
  28. // See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1744
  29. type VP8Quantization struct {
  30. YACQIndex uint8
  31. YDCDelta int8
  32. Y2DCDelta int8
  33. Y2ACDelta int8
  34. UVDCDelta int8
  35. UVACDelta int8
  36. _ uint16
  37. }
  38. // VP8Entropy (v4l2_vp8_entropy)
  39. // See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1771
  40. type VP8Entropy struct {
  41. CoefficientProbabilities [4][8][3][VP8CoefficientProbabilityCount]uint8
  42. YModeProbabilities uint8
  43. UVModeProbabilities uint8
  44. MVProbabilities [2][VP8MVProbabilityCount]uint8
  45. _ [3]uint8 // padding
  46. }
  47. // VP8EntropyCoderState (v4l2_vp8_entropy_coder_state)
  48. // See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1790
  49. type VP8EntropyCoderState struct {
  50. Range uint8
  51. Value uint8
  52. BitCount uint8
  53. _ uint8 // padding
  54. }
  55. // ControlVP8Frame (v4l2_ctrl_vp8_frame)
  56. // See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1836
  57. type ControlVP8Frame struct {
  58. Segment VP8Segment
  59. LoopFilter VP8LoopFilter
  60. Quantization VP8Quantization
  61. Entropy VP8Entropy
  62. EntropyCoderState VP8EntropyCoderState
  63. Width uint16
  64. Height uint16
  65. HorizontalScale uint8
  66. VerticalScale uint8
  67. Version uint8
  68. ProbSkipFalse uint8
  69. PropIntra uint8
  70. PropLast uint8
  71. ProbGF uint8
  72. NumDCTParts uint8
  73. FirstPartSize uint32
  74. FirstPartHeader uint32
  75. DCTPartSize uint32
  76. LastFrameTimestamp uint64
  77. GoldenFrameTimestamp uint64
  78. AltFrameTimestamp uint64
  79. Flags uint64
  80. }