LINUX.ORG.RU

libao невоспроизводится звук.

 , ,


0

1
        mpg123_handle *mh;
        unsigned char *buffer;
        size_t buffer_size;
        size_t done;
        int err;

        int driver;
        ao_device *dev;

        ao_sample_format format;
        int channels, encoding;
        long rate;

        if(argc < 2)
            exit(0);

        /* initializations */
        ao_initialize();
        driver = ao_default_driver_id();
        mpg123_init();
        mh = mpg123_new(NULL, &err);
        buffer_size = mpg123_outblock(mh);
        buffer = (unsigned char*) malloc(buffer_size * sizeof(unsigned char));

        /* open the file and get the decoding format */
        mpg123_open(mh, argv[1]);
        mpg123_getformat(mh, &rate, &channels, &encoding);

        /* set the output format and open the output device */
        format.bits = mpg123_encsize(encoding) * BITS;
        format.rate = rate;
        format.channels = channels;
        format.byte_format = AO_FMT_NATIVE;
        format.matrix = 0;
        dev = ao_open_live(driver, &format, NULL);

        /* decode and play */
        while (mpg123_read(mh, buffer, buffer_size, &done) == MPG123_OK)
            ao_play(dev, (char*)(&buffer), done);
         //   ao_play(dev, reinterpret_cast<unsigned char*>(buffer), done);

        /* clean up */
        free(buffer);
        ao_close(dev);
        mpg123_close(mh);
        mpg123_delete(mh);
        mpg123_exit();
        ao_shutdown();

./Sound ~/mywork/SoundConst/2_1.mp3 
ao_alsa ERROR: Unable to open ALSA device 'default' for playback => Недопустимый аргумент

Через обычные проигрыватели все воспроизводит, в чем загвоздка?

★★★★★

Заменил

ao_play(dev, (char*)(&buffer), done);
на
ao_play(dev, (char*)(buffer), done);
и у меня все работает. В какой строке у тебя возникает ошибка, и что происходит дальше?

ddos3 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.