mirror of
https://github.com/alsa-project/alsa-tools.git
synced 2025-10-29 05:40:25 -04:00
ac3dec - Add -H option for HDMI
The HD-audio can have an independent HDMI PCM device via "hdmi". The option -H is for using hdmi instead of spdif. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
0478bb19e1
commit
1ffbd0ab28
3 changed files with 20 additions and 3 deletions
|
|
@ -56,6 +56,7 @@ static void help(void)
|
|||
printf(" -C,--iec958c raw IEC958 (S/PDIF) consumer mode\n");
|
||||
printf(" -P,--iec958p raw IEC958 (S/PDIF) professional mode\n");
|
||||
printf(" -R,--iec958r raw IEC958 (S/PDIF) PCM\n");
|
||||
printf(" -H,--hdmi output to HDMI device\n");
|
||||
printf(" -Z,--zero=# add # zero-AC3-frames before stream\n");
|
||||
printf(" -q,--quit quit mode\n");
|
||||
}
|
||||
|
|
@ -106,6 +107,7 @@ int main(int argc,char *argv[])
|
|||
{"spdif", 0, NULL, 'C'},
|
||||
{"iec958p", 0, NULL, 'P'},
|
||||
{"iec958r", 0, NULL, 'R'},
|
||||
{"hdmi", 0, NULL, 'H'},
|
||||
{"zero", 1, NULL, 'Z'},
|
||||
{"quit", 0, NULL, 'q'},
|
||||
{NULL, 0, NULL, 0},
|
||||
|
|
@ -126,6 +128,7 @@ int main(int argc,char *argv[])
|
|||
out_config.rate = 48000;
|
||||
out_config.channels = 2;
|
||||
out_config.spdif = SPDIF_NONE;
|
||||
out_config.hdmi = 0;
|
||||
|
||||
morehelp = 0;
|
||||
while (1) {
|
||||
|
|
@ -166,6 +169,9 @@ int main(int argc,char *argv[])
|
|||
ac3_config.num_output_ch = 2;
|
||||
out_config.spdif = SPDIF_PCM;
|
||||
break;
|
||||
case 'H':
|
||||
out_config.hdmi = 1;
|
||||
break;
|
||||
case 'Z':
|
||||
zero = atoi(optarg);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ int output_open(output_t *output)
|
|||
{
|
||||
const char *pcm_name = output->pcm_name;
|
||||
char devstr[128];
|
||||
const char *basedev;
|
||||
snd_pcm_hw_params_t *params;
|
||||
unsigned int rate, buffer_time, period_time, tmp;
|
||||
snd_pcm_format_t format = output->bits == 16 ? SND_PCM_FORMAT_S16 : SND_PCM_FORMAT_U8;
|
||||
|
|
@ -76,9 +77,18 @@ int output_open(output_t *output)
|
|||
s[2] = 0;
|
||||
s[3] = IEC958_AES3_CON_FS_48000;
|
||||
}
|
||||
sprintf(devstr, "plug:iec958:{AES0 0x%x AES1 0x%x AES2 0x%x AES3 0x%x", s[0], s[1], s[2], s[3]);
|
||||
if (output->hdmi)
|
||||
basedev = "hdmi";
|
||||
else
|
||||
basedev = "iec958";
|
||||
sprintf(devstr, "plug:%s:{"
|
||||
"AES0 0x%x AES1 0x%x "
|
||||
"AES2 0x%x AES3 0x%x",
|
||||
basedev,
|
||||
s[0], s[1], s[2], s[3]);
|
||||
if (out_config.card)
|
||||
sprintf(devstr + strlen(devstr), " CARD %s", out_config.card);
|
||||
sprintf(devstr + strlen(devstr),
|
||||
" CARD %s", out_config.card);
|
||||
strcat(devstr, "}");
|
||||
format = SND_PCM_FORMAT_S16_LE;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,8 @@ typedef struct {
|
|||
int bits;
|
||||
int rate;
|
||||
int channels;
|
||||
int quiet: 1;
|
||||
unsigned int quiet: 1;
|
||||
unsigned int hdmi: 1;
|
||||
enum {SPDIF_NONE = 0, SPDIF_CON, SPDIF_PRO, SPDIF_PCM} spdif;
|
||||
} output_t;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue