aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2006-06-18 12:27:19 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-06-25 01:05:21 -0400
commit4f341712120abde54d9113856e9118e6580d7061 (patch)
treed608333d0e8ba41b0e74c7de2dcc17885af0e7be /include/linux
parent442d15d5d8ba6a39d0c883585d68503e949a2fe1 (diff)
V4L/DVB (4188): Add new MPEG control/ioctl definitions to videodev2.h
The old, experimental, VIDIOC_S/G_CODEC API to pass MPEG parameters is now obsolete and is replaced by 'extended controls' which offer more flexibility and are hopefully more future proof. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/videodev2.h225
1 files changed, 222 insertions, 3 deletions
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 9a70c5654ceb..337c31409cd7 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -105,6 +105,8 @@ enum v4l2_ctrl_type {
105 V4L2_CTRL_TYPE_BOOLEAN = 2, 105 V4L2_CTRL_TYPE_BOOLEAN = 2,
106 V4L2_CTRL_TYPE_MENU = 3, 106 V4L2_CTRL_TYPE_MENU = 3,
107 V4L2_CTRL_TYPE_BUTTON = 4, 107 V4L2_CTRL_TYPE_BUTTON = 4,
108 V4L2_CTRL_TYPE_INTEGER64 = 5,
109 V4L2_CTRL_TYPE_CTRL_CLASS = 6,
108}; 110};
109 111
110enum v4l2_tuner_type { 112enum v4l2_tuner_type {
@@ -251,7 +253,7 @@ struct v4l2_pix_format
251#define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M','J','P','G') /* Motion-JPEG */ 253#define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M','J','P','G') /* Motion-JPEG */
252#define V4L2_PIX_FMT_JPEG v4l2_fourcc('J','P','E','G') /* JFIF JPEG */ 254#define V4L2_PIX_FMT_JPEG v4l2_fourcc('J','P','E','G') /* JFIF JPEG */
253#define V4L2_PIX_FMT_DV v4l2_fourcc('d','v','s','d') /* 1394 */ 255#define V4L2_PIX_FMT_DV v4l2_fourcc('d','v','s','d') /* 1394 */
254#define V4L2_PIX_FMT_MPEG v4l2_fourcc('M','P','E','G') /* MPEG */ 256#define V4L2_PIX_FMT_MPEG v4l2_fourcc('M','P','E','G') /* MPEG-1/2/4 */
255 257
256/* Vendor-specific formats */ 258/* Vendor-specific formats */
257#define V4L2_PIX_FMT_WNVA v4l2_fourcc('W','N','V','A') /* Winnov hw compress */ 259#define V4L2_PIX_FMT_WNVA v4l2_fourcc('W','N','V','A') /* Winnov hw compress */
@@ -701,6 +703,34 @@ struct v4l2_control
701 __s32 value; 703 __s32 value;
702}; 704};
703 705
706struct v4l2_ext_control
707{
708 __u32 id;
709 __u32 reserved2[2];
710 union {
711 __s32 value;
712 __s64 value64;
713 void *reserved;
714 };
715};
716
717struct v4l2_ext_controls
718{
719 __u32 ctrl_class;
720 __u32 count;
721 __u32 error_idx;
722 __u32 reserved[2];
723 struct v4l2_ext_control *controls;
724};
725
726/* Values for ctrl_class field */
727#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
728#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */
729
730#define V4L2_CTRL_ID_MASK (0x0fffffff)
731#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
732#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
733
704/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ 734/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
705struct v4l2_queryctrl 735struct v4l2_queryctrl
706{ 736{
@@ -727,12 +757,21 @@ struct v4l2_querymenu
727/* Control flags */ 757/* Control flags */
728#define V4L2_CTRL_FLAG_DISABLED 0x0001 758#define V4L2_CTRL_FLAG_DISABLED 0x0001
729#define V4L2_CTRL_FLAG_GRABBED 0x0002 759#define V4L2_CTRL_FLAG_GRABBED 0x0002
760#define V4L2_CTRL_FLAG_READ_ONLY 0x0004
761#define V4L2_CTRL_FLAG_UPDATE 0x0008
762#define V4L2_CTRL_FLAG_INACTIVE 0x0010
763#define V4L2_CTRL_FLAG_SLIDER 0x0020
764
765/* Query flag, to be ORed with the control ID */
766#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
730 767
731/* Control IDs defined by V4L2 */ 768/* User-class control IDs defined by V4L2 */
732#define V4L2_CID_BASE 0x00980900 769#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
770#define V4L2_CID_USER_BASE V4L2_CID_BASE
733/* IDs reserved for driver specific controls */ 771/* IDs reserved for driver specific controls */
734#define V4L2_CID_PRIVATE_BASE 0x08000000 772#define V4L2_CID_PRIVATE_BASE 0x08000000
735 773
774#define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
736#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0) 775#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
737#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1) 776#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
738#define V4L2_CID_SATURATION (V4L2_CID_BASE+2) 777#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
@@ -759,6 +798,183 @@ struct v4l2_querymenu
759#define V4L2_CID_VCENTER (V4L2_CID_BASE+23) 798#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
760#define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 */ 799#define V4L2_CID_LASTP1 (V4L2_CID_BASE+24) /* last CID + 1 */
761 800
801/* MPEG-class control IDs defined by V4L2 */
802#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
803#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
804
805/* MPEG streams */
806#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)
807enum v4l2_mpeg_stream_type {
808 V4L2_MPEG_STREAM_TYPE_MPEG2_PS, /* MPEG-2 program stream */
809 V4L2_MPEG_STREAM_TYPE_MPEG2_TS, /* MPEG-2 transport stream */
810 V4L2_MPEG_STREAM_TYPE_MPEG1_SS, /* MPEG-1 system stream */
811 V4L2_MPEG_STREAM_TYPE_MPEG2_DVD, /* MPEG-2 DVD-compatible stream */
812 V4L2_MPEG_STREAM_TYPE_MPEG1_VCD, /* MPEG-1 VCD-compatible stream */
813 V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD, /* MPEG-2 SVCD-compatible stream */
814};
815#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)
816#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)
817#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)
818#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)
819#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)
820#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)
821
822/* MPEG audio */
823#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)
824enum v4l2_mpeg_audio_sampling_freq {
825 V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100,
826 V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000,
827 V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000,
828};
829#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)
830enum v4l2_mpeg_audio_encoding {
831 V4L2_MPEG_AUDIO_ENCODING_LAYER_1,
832 V4L2_MPEG_AUDIO_ENCODING_LAYER_2,
833 V4L2_MPEG_AUDIO_ENCODING_LAYER_3,
834};
835#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
836enum v4l2_mpeg_audio_l1_bitrate {
837 V4L2_MPEG_AUDIO_L1_BITRATE_32K,
838 V4L2_MPEG_AUDIO_L1_BITRATE_64K,
839 V4L2_MPEG_AUDIO_L1_BITRATE_96K,
840 V4L2_MPEG_AUDIO_L1_BITRATE_128K,
841 V4L2_MPEG_AUDIO_L1_BITRATE_160K,
842 V4L2_MPEG_AUDIO_L1_BITRATE_192K,
843 V4L2_MPEG_AUDIO_L1_BITRATE_224K,
844 V4L2_MPEG_AUDIO_L1_BITRATE_256K,
845 V4L2_MPEG_AUDIO_L1_BITRATE_288K,
846 V4L2_MPEG_AUDIO_L1_BITRATE_320K,
847 V4L2_MPEG_AUDIO_L1_BITRATE_352K,
848 V4L2_MPEG_AUDIO_L1_BITRATE_384K,
849 V4L2_MPEG_AUDIO_L1_BITRATE_416K,
850 V4L2_MPEG_AUDIO_L1_BITRATE_448K,
851};
852#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103)
853enum v4l2_mpeg_audio_l2_bitrate {
854 V4L2_MPEG_AUDIO_L2_BITRATE_32K,
855 V4L2_MPEG_AUDIO_L2_BITRATE_48K,
856 V4L2_MPEG_AUDIO_L2_BITRATE_56K,
857 V4L2_MPEG_AUDIO_L2_BITRATE_64K,
858 V4L2_MPEG_AUDIO_L2_BITRATE_80K,
859 V4L2_MPEG_AUDIO_L2_BITRATE_96K,
860 V4L2_MPEG_AUDIO_L2_BITRATE_112K,
861 V4L2_MPEG_AUDIO_L2_BITRATE_128K,
862 V4L2_MPEG_AUDIO_L2_BITRATE_160K,
863 V4L2_MPEG_AUDIO_L2_BITRATE_192K,
864 V4L2_MPEG_AUDIO_L2_BITRATE_224K,
865 V4L2_MPEG_AUDIO_L2_BITRATE_256K,
866 V4L2_MPEG_AUDIO_L2_BITRATE_320K,
867 V4L2_MPEG_AUDIO_L2_BITRATE_384K,
868};
869#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104)
870enum v4l2_mpeg_audio_l3_bitrate {
871 V4L2_MPEG_AUDIO_L3_BITRATE_32K,
872 V4L2_MPEG_AUDIO_L3_BITRATE_40K,
873 V4L2_MPEG_AUDIO_L3_BITRATE_48K,
874 V4L2_MPEG_AUDIO_L3_BITRATE_56K,
875 V4L2_MPEG_AUDIO_L3_BITRATE_64K,
876 V4L2_MPEG_AUDIO_L3_BITRATE_80K,
877 V4L2_MPEG_AUDIO_L3_BITRATE_96K,
878 V4L2_MPEG_AUDIO_L3_BITRATE_112K,
879 V4L2_MPEG_AUDIO_L3_BITRATE_128K,
880 V4L2_MPEG_AUDIO_L3_BITRATE_160K,
881 V4L2_MPEG_AUDIO_L3_BITRATE_192K,
882 V4L2_MPEG_AUDIO_L3_BITRATE_224K,
883 V4L2_MPEG_AUDIO_L3_BITRATE_256K,
884 V4L2_MPEG_AUDIO_L3_BITRATE_320K,
885};
886#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)
887enum v4l2_mpeg_audio_mode {
888 V4L2_MPEG_AUDIO_MODE_STEREO,
889 V4L2_MPEG_AUDIO_MODE_JOINT_STEREO,
890 V4L2_MPEG_AUDIO_MODE_DUAL,
891 V4L2_MPEG_AUDIO_MODE_MONO,
892};
893#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106)
894enum v4l2_mpeg_audio_mode_extension {
895 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4,
896 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8,
897 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12,
898 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16,
899};
900#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)
901enum v4l2_mpeg_audio_emphasis {
902 V4L2_MPEG_AUDIO_EMPHASIS_NONE,
903 V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS,
904 V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17,
905};
906#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)
907enum v4l2_mpeg_audio_crc {
908 V4L2_MPEG_AUDIO_CRC_NONE,
909 V4L2_MPEG_AUDIO_CRC_CRC16,
910};
911
912/* MPEG video */
913#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
914enum v4l2_mpeg_video_encoding {
915 V4L2_MPEG_VIDEO_ENCODING_MPEG_1,
916 V4L2_MPEG_VIDEO_ENCODING_MPEG_2,
917};
918#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)
919enum v4l2_mpeg_video_aspect {
920 V4L2_MPEG_VIDEO_ASPECT_1x1,
921 V4L2_MPEG_VIDEO_ASPECT_4x3,
922 V4L2_MPEG_VIDEO_ASPECT_16x9,
923 V4L2_MPEG_VIDEO_ASPECT_221x100,
924};
925#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)
926#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)
927#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)
928#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)
929#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)
930enum v4l2_mpeg_video_bitrate_mode {
931 V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
932 V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
933};
934#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)
935#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)
936#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
937
938/* MPEG-class control IDs specific to the CX2584x driver as defined by V4L2 */
939#define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
940#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
941enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
942 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL,
943 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO,
944};
945#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)
946#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)
947enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
948 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF,
949 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR,
950 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT,
951 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE,
952 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE,
953};
954#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3)
955enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
956 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF,
957 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR,
958};
959#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4)
960enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
961 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL,
962 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO,
963};
964#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)
965#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)
966enum v4l2_mpeg_cx2341x_video_median_filter_type {
967 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF,
968 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR,
969 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT,
970 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT,
971 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG,
972};
973#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)
974#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)
975#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
976#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)
977
762/* 978/*
763 * T U N I N G 979 * T U N I N G
764 */ 980 */
@@ -1020,6 +1236,9 @@ struct v4l2_streamparm
1020#define VIDIOC_G_SLICED_VBI_CAP _IOR ('V', 69, struct v4l2_sliced_vbi_cap) 1236#define VIDIOC_G_SLICED_VBI_CAP _IOR ('V', 69, struct v4l2_sliced_vbi_cap)
1021#endif 1237#endif
1022#define VIDIOC_LOG_STATUS _IO ('V', 70) 1238#define VIDIOC_LOG_STATUS _IO ('V', 70)
1239#define VIDIOC_G_EXT_CTRLS _IOWR ('V', 71, struct v4l2_ext_controls)
1240#define VIDIOC_S_EXT_CTRLS _IOWR ('V', 72, struct v4l2_ext_controls)
1241#define VIDIOC_TRY_EXT_CTRLS _IOWR ('V', 73, struct v4l2_ext_controls)
1023 1242
1024#ifdef __OLD_VIDIOC_ 1243#ifdef __OLD_VIDIOC_
1025/* for compatibility, will go away some day */ 1244/* for compatibility, will go away some day */