V4L/DVB (8635): v4l: add AC-3 audio support to the MPEG Encoding API
Some models of the saa6752hs support AC-3. Extend the API with the necessary controls for AC-3. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
188919ac57
commit
e6b5da88fb
|
@ -187,10 +187,11 @@ const char **v4l2_ctrl_get_menu(u32 id)
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
static const char *mpeg_audio_encoding[] = {
|
static const char *mpeg_audio_encoding[] = {
|
||||||
"MPEG-1 Layer I",
|
"MPEG-1/2 Layer I",
|
||||||
"MPEG-1 Layer II",
|
"MPEG-1/2 Layer II",
|
||||||
"MPEG-1 Layer III",
|
"MPEG-1/2 Layer III",
|
||||||
"MPEG-4 AAC",
|
"MPEG-2/4 AAC",
|
||||||
|
"AC-3",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
static const char *mpeg_audio_l1_bitrate[] = {
|
static const char *mpeg_audio_l1_bitrate[] = {
|
||||||
|
@ -244,6 +245,28 @@ const char **v4l2_ctrl_get_menu(u32 id)
|
||||||
"320 kbps",
|
"320 kbps",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
static const char *mpeg_audio_ac3_bitrate[] = {
|
||||||
|
"32 kbps",
|
||||||
|
"40 kbps",
|
||||||
|
"48 kbps",
|
||||||
|
"56 kbps",
|
||||||
|
"64 kbps",
|
||||||
|
"80 kbps",
|
||||||
|
"96 kbps",
|
||||||
|
"112 kbps",
|
||||||
|
"128 kbps",
|
||||||
|
"160 kbps",
|
||||||
|
"192 kbps",
|
||||||
|
"224 kbps",
|
||||||
|
"256 kbps",
|
||||||
|
"320 kbps",
|
||||||
|
"384 kbps",
|
||||||
|
"448 kbps",
|
||||||
|
"512 kbps",
|
||||||
|
"576 kbps",
|
||||||
|
"640 kbps",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
static const char *mpeg_audio_mode[] = {
|
static const char *mpeg_audio_mode[] = {
|
||||||
"Stereo",
|
"Stereo",
|
||||||
"Joint Stereo",
|
"Joint Stereo",
|
||||||
|
@ -313,6 +336,8 @@ const char **v4l2_ctrl_get_menu(u32 id)
|
||||||
return mpeg_audio_l2_bitrate;
|
return mpeg_audio_l2_bitrate;
|
||||||
case V4L2_CID_MPEG_AUDIO_L3_BITRATE:
|
case V4L2_CID_MPEG_AUDIO_L3_BITRATE:
|
||||||
return mpeg_audio_l3_bitrate;
|
return mpeg_audio_l3_bitrate;
|
||||||
|
case V4L2_CID_MPEG_AUDIO_AC3_BITRATE:
|
||||||
|
return mpeg_audio_ac3_bitrate;
|
||||||
case V4L2_CID_MPEG_AUDIO_MODE:
|
case V4L2_CID_MPEG_AUDIO_MODE:
|
||||||
return mpeg_audio_mode;
|
return mpeg_audio_mode;
|
||||||
case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION:
|
case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION:
|
||||||
|
@ -364,6 +389,7 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste
|
||||||
case V4L2_CID_MPEG_AUDIO_L1_BITRATE: name = "Audio Layer I Bitrate"; break;
|
case V4L2_CID_MPEG_AUDIO_L1_BITRATE: name = "Audio Layer I Bitrate"; break;
|
||||||
case V4L2_CID_MPEG_AUDIO_L2_BITRATE: name = "Audio Layer II Bitrate"; break;
|
case V4L2_CID_MPEG_AUDIO_L2_BITRATE: name = "Audio Layer II Bitrate"; break;
|
||||||
case V4L2_CID_MPEG_AUDIO_L3_BITRATE: name = "Audio Layer III Bitrate"; break;
|
case V4L2_CID_MPEG_AUDIO_L3_BITRATE: name = "Audio Layer III Bitrate"; break;
|
||||||
|
case V4L2_CID_MPEG_AUDIO_AC3_BITRATE: name = "Audio AC-3 Bitrate"; break;
|
||||||
case V4L2_CID_MPEG_AUDIO_MODE: name = "Audio Stereo Mode"; break;
|
case V4L2_CID_MPEG_AUDIO_MODE: name = "Audio Stereo Mode"; break;
|
||||||
case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION: name = "Audio Stereo Mode Extension"; break;
|
case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION: name = "Audio Stereo Mode Extension"; break;
|
||||||
case V4L2_CID_MPEG_AUDIO_EMPHASIS: name = "Audio Emphasis"; break;
|
case V4L2_CID_MPEG_AUDIO_EMPHASIS: name = "Audio Emphasis"; break;
|
||||||
|
@ -409,6 +435,7 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste
|
||||||
case V4L2_CID_MPEG_AUDIO_L1_BITRATE:
|
case V4L2_CID_MPEG_AUDIO_L1_BITRATE:
|
||||||
case V4L2_CID_MPEG_AUDIO_L2_BITRATE:
|
case V4L2_CID_MPEG_AUDIO_L2_BITRATE:
|
||||||
case V4L2_CID_MPEG_AUDIO_L3_BITRATE:
|
case V4L2_CID_MPEG_AUDIO_L3_BITRATE:
|
||||||
|
case V4L2_CID_MPEG_AUDIO_AC3_BITRATE:
|
||||||
case V4L2_CID_MPEG_AUDIO_MODE:
|
case V4L2_CID_MPEG_AUDIO_MODE:
|
||||||
case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION:
|
case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION:
|
||||||
case V4L2_CID_MPEG_AUDIO_EMPHASIS:
|
case V4L2_CID_MPEG_AUDIO_EMPHASIS:
|
||||||
|
@ -495,7 +522,7 @@ int v4l2_ctrl_query_fill_std(struct v4l2_queryctrl *qctrl)
|
||||||
case V4L2_CID_MPEG_AUDIO_ENCODING:
|
case V4L2_CID_MPEG_AUDIO_ENCODING:
|
||||||
return v4l2_ctrl_query_fill(qctrl,
|
return v4l2_ctrl_query_fill(qctrl,
|
||||||
V4L2_MPEG_AUDIO_ENCODING_LAYER_1,
|
V4L2_MPEG_AUDIO_ENCODING_LAYER_1,
|
||||||
V4L2_MPEG_AUDIO_ENCODING_AAC, 1,
|
V4L2_MPEG_AUDIO_ENCODING_AC3, 1,
|
||||||
V4L2_MPEG_AUDIO_ENCODING_LAYER_2);
|
V4L2_MPEG_AUDIO_ENCODING_LAYER_2);
|
||||||
case V4L2_CID_MPEG_AUDIO_L1_BITRATE:
|
case V4L2_CID_MPEG_AUDIO_L1_BITRATE:
|
||||||
return v4l2_ctrl_query_fill(qctrl,
|
return v4l2_ctrl_query_fill(qctrl,
|
||||||
|
@ -512,6 +539,11 @@ int v4l2_ctrl_query_fill_std(struct v4l2_queryctrl *qctrl)
|
||||||
V4L2_MPEG_AUDIO_L3_BITRATE_32K,
|
V4L2_MPEG_AUDIO_L3_BITRATE_32K,
|
||||||
V4L2_MPEG_AUDIO_L3_BITRATE_320K, 1,
|
V4L2_MPEG_AUDIO_L3_BITRATE_320K, 1,
|
||||||
V4L2_MPEG_AUDIO_L3_BITRATE_192K);
|
V4L2_MPEG_AUDIO_L3_BITRATE_192K);
|
||||||
|
case V4L2_CID_MPEG_AUDIO_AC3_BITRATE:
|
||||||
|
return v4l2_ctrl_query_fill(qctrl,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_32K,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_640K, 1,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_384K);
|
||||||
case V4L2_CID_MPEG_AUDIO_MODE:
|
case V4L2_CID_MPEG_AUDIO_MODE:
|
||||||
return v4l2_ctrl_query_fill(qctrl,
|
return v4l2_ctrl_query_fill(qctrl,
|
||||||
V4L2_MPEG_AUDIO_MODE_STEREO,
|
V4L2_MPEG_AUDIO_MODE_STEREO,
|
||||||
|
|
|
@ -911,6 +911,7 @@ enum v4l2_mpeg_audio_encoding {
|
||||||
V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
|
V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
|
||||||
V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
|
V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
|
||||||
V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
|
V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
|
||||||
|
V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
|
||||||
};
|
};
|
||||||
#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
|
#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
|
||||||
enum v4l2_mpeg_audio_l1_bitrate {
|
enum v4l2_mpeg_audio_l1_bitrate {
|
||||||
|
@ -989,6 +990,28 @@ enum v4l2_mpeg_audio_crc {
|
||||||
V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
|
V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
|
||||||
};
|
};
|
||||||
#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)
|
#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)
|
||||||
|
#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+110)
|
||||||
|
enum v4l2_mpeg_audio_ac3_bitrate {
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
|
||||||
|
V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
|
||||||
|
};
|
||||||
|
|
||||||
/* MPEG video */
|
/* MPEG video */
|
||||||
#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
|
#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
|
||||||
|
|
Loading…
Reference in New Issue