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>
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");
}
{"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},
out_config.rate = 48000;
out_config.channels = 2;
out_config.spdif = SPDIF_NONE;
+ out_config.hdmi = 0;
morehelp = 0;
while (1) {
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;
{
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;
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 {
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;