fprintf(stderr, "Soundcard does not support 16 bit sample format\n");
av_log(NULL, AV_LOG_ERROR, "Soundcard does not support 16 bit sample format\n");
static int audio_open(AudioData *s, int is_output, const char *audio_device){    int audio_fd;    int tmp, err;    char *flip = getenv("AUDIO_FLIP_LEFT");    /* open linux audio device */    if (!audio_device)        audio_device = "/dev/dsp";    if (is_output)        audio_fd = open(audio_device, O_WRONLY);    else        audio_fd = open(audio_device, O_RDONLY);    if (audio_fd < 0) {        perror(audio_device);        return -EIO;    }    if (flip && *flip == '1') {        s->flip_left = 1;    }    /* non blocking mode */    if (!is_output)        fcntl(audio_fd, F_SETFL, O_NONBLOCK);    s->frame_size = AUDIO_BLOCK_SIZE;#if 0    tmp = (NB_FRAGMENTS << 16) | FRAGMENT_BITS;    err = ioctl(audio_fd, SNDCTL_DSP_SETFRAGMENT, &tmp);    if (err < 0) {        perror("SNDCTL_DSP_SETFRAGMENT");    }#endif    /* select format : favour native format */    err = ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &tmp);    #ifdef WORDS_BIGENDIAN    if (tmp & AFMT_S16_BE) {        tmp = AFMT_S16_BE;    } else if (tmp & AFMT_S16_LE) {        tmp = AFMT_S16_LE;    } else {        tmp = 0;    }#else    if (tmp & AFMT_S16_LE) {        tmp = AFMT_S16_LE;    } else if (tmp & AFMT_S16_BE) {        tmp = AFMT_S16_BE;    } else {        tmp = 0;    }#endif    switch(tmp) {    case AFMT_S16_LE:        s->codec_id = CODEC_ID_PCM_S16LE;        break;    case AFMT_S16_BE:        s->codec_id = CODEC_ID_PCM_S16BE;        break;    default:        fprintf(stderr, "Soundcard does not support 16 bit sample format\n");        close(audio_fd);        return -EIO;    }    err=ioctl(audio_fd, SNDCTL_DSP_SETFMT, &tmp);    if (err < 0) {        perror("SNDCTL_DSP_SETFMT");        goto fail;    }        tmp = (s->channels == 2);    err = ioctl(audio_fd, SNDCTL_DSP_STEREO, &tmp);    if (err < 0) {        perror("SNDCTL_DSP_STEREO");        goto fail;    }    if (tmp)        s->channels = 2;        tmp = s->sample_rate;    err = ioctl(audio_fd, SNDCTL_DSP_SPEED, &tmp);    if (err < 0) {        perror("SNDCTL_DSP_SPEED");        goto fail;    }    s->sample_rate = tmp; /* store real sample rate */    s->fd = audio_fd;    return 0; fail:    close(audio_fd);    return -EIO;}