The libavformat API is not suitable for exporting output devices as muxers. Some practical problems are e.g. lack of timing/synchronization mechanisms or interaction with output-specific features.tags/n4.0
@@ -73,7 +73,6 @@ Help options: | |||
--list-protocols show all available protocols | |||
--list-bsfs show all available bitstream filters | |||
--list-indevs show all available input devices | |||
--list-outdevs show all available output devices | |||
--list-filters show all available filters | |||
Standard options: | |||
@@ -163,9 +162,6 @@ Individual component options: | |||
--enable-indev=NAME enable input device NAME | |||
--disable-indev=NAME disable input device NAME | |||
--disable-indevs disable input devices | |||
--enable-outdev=NAME enable output device NAME | |||
--disable-outdev=NAME disable output device NAME | |||
--disable-outdevs disable output devices | |||
--disable-devices disable all devices | |||
--enable-filter=NAME enable filter NAME | |||
--disable-filter=NAME disable filter NAME | |||
@@ -1224,7 +1220,6 @@ AVCODEC_COMPONENTS=" | |||
AVDEVICE_COMPONENTS=" | |||
indevs | |||
outdevs | |||
" | |||
AVFILTER_COMPONENTS=" | |||
filters | |||
@@ -2433,9 +2428,8 @@ wtv_demuxer_select="mpegts_demuxer riffdec" | |||
xmv_demuxer_select="riffdec" | |||
xwma_demuxer_select="riffdec" | |||
# indevs / outdevs | |||
# indevs | |||
alsa_indev_deps="alsa" | |||
alsa_outdev_deps="alsa" | |||
avfoundation_indev_deps="AVFoundation_AVFoundation_h objc_arc pthreads" | |||
avfoundation_indev_extralibs="-framework Foundation -framework AVFoundation -framework CoreVideo -framework CoreMedia" | |||
bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h" | |||
@@ -2447,10 +2441,8 @@ jack_indev_deps_any="sem_timedwait dispatch_dispatch_h" | |||
libcdio_indev_deps="libcdio" | |||
libdc1394_indev_deps="libdc1394" | |||
oss_indev_deps_any="sys_soundcard_h" | |||
oss_outdev_deps_any="sys_soundcard_h" | |||
pulse_indev_deps="libpulse" | |||
sndio_indev_deps="sndio" | |||
sndio_outdev_deps="sndio" | |||
v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" | |||
vfwcap_indev_deps="vfw32 vfwcap_defines" | |||
xcbgrab_indev_deps="libxcb libxcb_shape" | |||
@@ -2715,7 +2707,6 @@ HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c) | |||
PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c) | |||
MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c) | |||
DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c) | |||
OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c) | |||
INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c) | |||
FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c) | |||
@@ -2739,7 +2730,6 @@ AVCODEC_COMPONENTS_LIST=" | |||
AVDEVICE_COMPONENTS_LIST=" | |||
$INDEV_LIST | |||
$OUTDEV_LIST | |||
" | |||
AVFILTER_COMPONENTS_LIST=" | |||
@@ -2800,7 +2790,7 @@ for opt do | |||
add_extralibs $optval | |||
;; | |||
--disable-devices) | |||
disable $INDEV_LIST $OUTDEV_LIST | |||
disable $INDEV_LIST | |||
;; | |||
--enable-debug=*) | |||
debuglevel="$optval" | |||
@@ -3906,7 +3896,6 @@ case $target_os in | |||
netbsd) | |||
disable symver | |||
oss_indev_extralibs="-lossaudio" | |||
oss_outdev_extralibs="-lossaudio" | |||
;; | |||
openbsd|bitrig) | |||
disable symver | |||
@@ -3914,7 +3903,6 @@ case $target_os in | |||
SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)' | |||
SLIB_INSTALL_LINKS= | |||
oss_indev_extralibs="-lossaudio" | |||
oss_outdev_extralibs="-lossaudio" | |||
;; | |||
dragonfly) | |||
disable symver | |||
@@ -4789,13 +4777,13 @@ check_header "dev/bktr/ioctl_meteor.h dev/bktr/ioctl_bt848.h" | |||
check_header sys/soundcard.h | |||
enabled_any alsa_indev alsa_outdev && | |||
enabled alsa_indev && | |||
check_lib alsa alsa/asoundlib.h snd_pcm_htimestamp -lasound | |||
enabled libjack && | |||
require_pkg_config libjack jack jack/jack.h jack_port_get_latency_range | |||
enabled_any sndio_indev sndio_outdev && check_lib sndio sndio.h sio_open -lsndio | |||
enabled sndio_indev && check_lib sndio sndio.h sio_open -lsndio | |||
if enabled libcdio; then | |||
check_lib libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || | |||
@@ -5252,7 +5240,7 @@ echo "Programs:" | |||
print_enabled '' $PROGRAM_LIST | print_3_columns | |||
echo | |||
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do | |||
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev; do | |||
echo "Enabled ${type}s:" | |||
eval list=\$$(toupper $type)_LIST | |||
print_enabled '_*' $list | print_3_columns | |||
@@ -1264,7 +1264,6 @@ avconv -i src.ext -lmax 21*QP2LAMBDA dst.ext | |||
@include demuxers.texi | |||
@include muxers.texi | |||
@include indevs.texi | |||
@include outdevs.texi | |||
@include protocols.texi | |||
@include bitstream_filters.texi | |||
@include filters.texi | |||
@@ -164,7 +164,6 @@ Seek to percentage in file corresponding to fraction of width. | |||
@include demuxers.texi | |||
@include muxers.texi | |||
@include indevs.texi | |||
@include outdevs.texi | |||
@include protocols.texi | |||
@include filters.texi | |||
@@ -1,33 +0,0 @@ | |||
@chapter Output Devices | |||
@c man begin OUTPUT DEVICES | |||
Output devices are configured elements in Libav which allow to write | |||
multimedia data to an output device attached to your system. | |||
When you configure your Libav build, all the supported output devices | |||
are enabled by default. You can list all available ones using the | |||
configure option "--list-outdevs". | |||
You can disable all the output devices using the configure option | |||
"--disable-outdevs", and selectively enable an output device using the | |||
option "--enable-outdev=@var{OUTDEV}", or you can disable a particular | |||
input device using the option "--disable-outdev=@var{OUTDEV}". | |||
The option "-formats" of the av* tools will display the list of | |||
enabled output devices (amongst the muxers). | |||
A description of the currently available output devices follows. | |||
@section alsa | |||
ALSA (Advanced Linux Sound Architecture) output device. | |||
@section oss | |||
OSS (Open Sound System) output device. | |||
@section sndio | |||
sndio audio output device. | |||
@c man end OUTPUT DEVICES |
@@ -9,19 +9,16 @@ OBJS = alldevices.o \ | |||
OBJS-$(HAVE_LIBC_MSVCRT) += file_open.o | |||
# input/output devices | |||
# input devices | |||
OBJS-$(CONFIG_ALSA_INDEV) += alsa_dec.o alsa.o | |||
OBJS-$(CONFIG_ALSA_OUTDEV) += alsa_enc.o alsa.o | |||
OBJS-$(CONFIG_AVFOUNDATION_INDEV) += avfoundation_dec.o | |||
OBJS-$(CONFIG_BKTR_INDEV) += bktr.o | |||
OBJS-$(CONFIG_DV1394_INDEV) += dv1394.o | |||
OBJS-$(CONFIG_FBDEV_INDEV) += fbdev.o | |||
OBJS-$(CONFIG_JACK_INDEV) += jack.o timefilter.o | |||
OBJS-$(CONFIG_OSS_INDEV) += oss_dec.o oss.o | |||
OBJS-$(CONFIG_OSS_OUTDEV) += oss_enc.o oss.o | |||
OBJS-$(CONFIG_PULSE_INDEV) += pulse.o | |||
OBJS-$(CONFIG_SNDIO_INDEV) += sndio_dec.o sndio.o | |||
OBJS-$(CONFIG_SNDIO_OUTDEV) += sndio_enc.o sndio.o | |||
OBJS-$(CONFIG_V4L2_INDEV) += v4l2.o | |||
OBJS-$(CONFIG_VFWCAP_INDEV) += vfwcap.o | |||
OBJS-$(CONFIG_XCBGRAB_INDEV) += xcbgrab.o | |||
@@ -22,13 +22,6 @@ | |||
#include "libavformat/avformat.h" | |||
#include "avdevice.h" | |||
#define REGISTER_OUTDEV(X, x) \ | |||
{ \ | |||
extern AVOutputFormat ff_##x##_muxer; \ | |||
if (CONFIG_##X##_OUTDEV) \ | |||
av_register_output_format(&ff_##x##_muxer); \ | |||
} | |||
#define REGISTER_INDEV(X, x) \ | |||
{ \ | |||
extern AVInputFormat ff_##x##_demuxer; \ | |||
@@ -36,8 +29,6 @@ | |||
av_register_input_format(&ff_##x##_demuxer); \ | |||
} | |||
#define REGISTER_INOUTDEV(X, x) REGISTER_OUTDEV(X, x); REGISTER_INDEV(X, x) | |||
void avdevice_register_all(void) | |||
{ | |||
static int initialized; | |||
@@ -46,21 +37,21 @@ void avdevice_register_all(void) | |||
return; | |||
initialized = 1; | |||
/* devices */ | |||
REGISTER_INOUTDEV(ALSA, alsa); | |||
REGISTER_INDEV (AVFOUNDATION, avfoundation); | |||
REGISTER_INDEV (BKTR, bktr); | |||
REGISTER_INDEV (DV1394, dv1394); | |||
REGISTER_INDEV (FBDEV, fbdev); | |||
REGISTER_INDEV (JACK, jack); | |||
REGISTER_INOUTDEV(OSS, oss); | |||
REGISTER_INDEV (PULSE, pulse); | |||
REGISTER_INOUTDEV(SNDIO, sndio); | |||
REGISTER_INDEV (V4L2, v4l2); | |||
REGISTER_INDEV (VFWCAP, vfwcap); | |||
REGISTER_INDEV (XCBGRAB, xcbgrab); | |||
/* input devices */ | |||
REGISTER_INDEV(ALSA, alsa); | |||
REGISTER_INDEV(AVFOUNDATION, avfoundation); | |||
REGISTER_INDEV(BKTR, bktr); | |||
REGISTER_INDEV(DV1394, dv1394); | |||
REGISTER_INDEV(FBDEV, fbdev); | |||
REGISTER_INDEV(JACK, jack); | |||
REGISTER_INDEV(OSS, oss); | |||
REGISTER_INDEV(PULSE, pulse); | |||
REGISTER_INDEV(SNDIO, sndio); | |||
REGISTER_INDEV(V4L2, v4l2); | |||
REGISTER_INDEV(VFWCAP, vfwcap); | |||
REGISTER_INDEV(XCBGRAB, xcbgrab); | |||
/* external libraries */ | |||
REGISTER_INDEV (LIBCDIO, libcdio); | |||
REGISTER_INDEV (LIBDC1394, libdc1394); | |||
REGISTER_INDEV(LIBCDIO, libcdio); | |||
REGISTER_INDEV(LIBDC1394, libdc1394); | |||
} |
@@ -344,19 +344,3 @@ int ff_alsa_xrun_recover(AVFormatContext *s1, int err) | |||
} | |||
return err; | |||
} | |||
int ff_alsa_extend_reorder_buf(AlsaData *s, int min_size) | |||
{ | |||
int size = s->reorder_buf_size; | |||
void *r; | |||
av_assert0(size != 0); | |||
while (size < min_size) | |||
size *= 2; | |||
r = av_realloc(s->reorder_buf, size * s->frame_size); | |||
if (!r) | |||
return AVERROR(ENOMEM); | |||
s->reorder_buf = r; | |||
s->reorder_buf_size = size; | |||
return 0; | |||
} |
@@ -91,6 +91,4 @@ int ff_alsa_close(AVFormatContext *s1); | |||
*/ | |||
int ff_alsa_xrun_recover(AVFormatContext *s1, int err); | |||
int ff_alsa_extend_reorder_buf(AlsaData *s, int size); | |||
#endif /* AVDEVICE_ALSA_H */ |
@@ -1,117 +0,0 @@ | |||
/* | |||
* ALSA input and output | |||
* Copyright (c) 2007 Luca Abeni ( lucabe72 email it ) | |||
* Copyright (c) 2007 Benoit Fouet ( benoit fouet free fr ) | |||
* | |||
* This file is part of Libav. | |||
* | |||
* Libav is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 2.1 of the License, or (at your option) any later version. | |||
* | |||
* Libav is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public | |||
* License along with Libav; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
/** | |||
* @file | |||
* ALSA input and output: output | |||
* @author Luca Abeni ( lucabe72 email it ) | |||
* @author Benoit Fouet ( benoit fouet free fr ) | |||
* | |||
* This avdevice encoder allows to play audio to an ALSA (Advanced Linux | |||
* Sound Architecture) device. | |||
* | |||
* The filename parameter is the name of an ALSA PCM device capable of | |||
* capture, for example "default" or "plughw:1"; see the ALSA documentation | |||
* for naming conventions. The empty string is equivalent to "default". | |||
* | |||
* The playback period is set to the lower value available for the device, | |||
* which gives a low latency suitable for real-time playback. | |||
*/ | |||
#include <alsa/asoundlib.h> | |||
#include "libavutil/internal.h" | |||
#include "libavformat/avformat.h" | |||
#include "alsa.h" | |||
static av_cold int audio_write_header(AVFormatContext *s1) | |||
{ | |||
AlsaData *s = s1->priv_data; | |||
AVStream *st; | |||
unsigned int sample_rate; | |||
enum AVCodecID codec_id; | |||
int res; | |||
st = s1->streams[0]; | |||
sample_rate = st->codecpar->sample_rate; | |||
codec_id = st->codecpar->codec_id; | |||
res = ff_alsa_open(s1, SND_PCM_STREAM_PLAYBACK, &sample_rate, | |||
st->codecpar->channels, &codec_id); | |||
if (sample_rate != st->codecpar->sample_rate) { | |||
av_log(s1, AV_LOG_ERROR, | |||
"sample rate %d not available, nearest is %d\n", | |||
st->codecpar->sample_rate, sample_rate); | |||
goto fail; | |||
} | |||
return res; | |||
fail: | |||
snd_pcm_close(s->h); | |||
return AVERROR(EIO); | |||
} | |||
static int audio_write_packet(AVFormatContext *s1, AVPacket *pkt) | |||
{ | |||
AlsaData *s = s1->priv_data; | |||
int res; | |||
int size = pkt->size; | |||
uint8_t *buf = pkt->data; | |||
size /= s->frame_size; | |||
if (s->reorder_func) { | |||
if (size > s->reorder_buf_size) | |||
if (ff_alsa_extend_reorder_buf(s, size)) | |||
return AVERROR(ENOMEM); | |||
s->reorder_func(buf, s->reorder_buf, size); | |||
buf = s->reorder_buf; | |||
} | |||
while ((res = snd_pcm_writei(s->h, buf, size)) < 0) { | |||
if (res == -EAGAIN) { | |||
return AVERROR(EAGAIN); | |||
} | |||
if (ff_alsa_xrun_recover(s1, res) < 0) { | |||
av_log(s1, AV_LOG_ERROR, "ALSA write error: %s\n", | |||
snd_strerror(res)); | |||
return AVERROR(EIO); | |||
} | |||
} | |||
return 0; | |||
} | |||
AVOutputFormat ff_alsa_muxer = { | |||
.name = "alsa", | |||
.long_name = NULL_IF_CONFIG_SMALL("ALSA audio output"), | |||
.priv_data_size = sizeof(AlsaData), | |||
.audio_codec = DEFAULT_CODEC_ID, | |||
.video_codec = AV_CODEC_ID_NONE, | |||
.write_header = audio_write_header, | |||
.write_packet = audio_write_packet, | |||
.write_trailer = ff_alsa_close, | |||
.flags = AVFMT_NOFILE, | |||
}; |
@@ -1,108 +0,0 @@ | |||
/* | |||
* Linux audio grab interface | |||
* Copyright (c) 2000, 2001 Fabrice Bellard | |||
* | |||
* This file is part of Libav. | |||
* | |||
* Libav is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 2.1 of the License, or (at your option) any later version. | |||
* | |||
* Libav is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public | |||
* License along with Libav; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
#include "config.h" | |||
#if HAVE_SOUNDCARD_H | |||
#include <soundcard.h> | |||
#else | |||
#include <sys/soundcard.h> | |||
#endif | |||
#include <unistd.h> | |||
#include <fcntl.h> | |||
#include <sys/ioctl.h> | |||
#include "libavutil/internal.h" | |||
#include "libavcodec/avcodec.h" | |||
#include "libavformat/avformat.h" | |||
#include "libavformat/internal.h" | |||
#include "oss.h" | |||
static int audio_write_header(AVFormatContext *s1) | |||
{ | |||
OSSAudioData *s = s1->priv_data; | |||
AVStream *st; | |||
int ret; | |||
st = s1->streams[0]; | |||
s->sample_rate = st->codecpar->sample_rate; | |||
s->channels = st->codecpar->channels; | |||
ret = ff_oss_audio_open(s1, 1, s1->filename); | |||
if (ret < 0) { | |||
return AVERROR(EIO); | |||
} else { | |||
return 0; | |||
} | |||
} | |||
static int audio_write_packet(AVFormatContext *s1, AVPacket *pkt) | |||
{ | |||
OSSAudioData *s = s1->priv_data; | |||
int len, ret; | |||
int size= pkt->size; | |||
uint8_t *buf= pkt->data; | |||
while (size > 0) { | |||
len = FFMIN(OSS_AUDIO_BLOCK_SIZE - s->buffer_ptr, size); | |||
memcpy(s->buffer + s->buffer_ptr, buf, len); | |||
s->buffer_ptr += len; | |||
if (s->buffer_ptr >= OSS_AUDIO_BLOCK_SIZE) { | |||
for(;;) { | |||
ret = write(s->fd, s->buffer, OSS_AUDIO_BLOCK_SIZE); | |||
if (ret > 0) | |||
break; | |||
if (ret < 0 && (errno != EAGAIN && errno != EINTR)) | |||
return AVERROR(EIO); | |||
} | |||
s->buffer_ptr = 0; | |||
} | |||
buf += len; | |||
size -= len; | |||
} | |||
return 0; | |||
} | |||
static int audio_write_trailer(AVFormatContext *s1) | |||
{ | |||
OSSAudioData *s = s1->priv_data; | |||
ff_oss_audio_close(s); | |||
return 0; | |||
} | |||
AVOutputFormat ff_oss_muxer = { | |||
.name = "oss", | |||
.long_name = NULL_IF_CONFIG_SMALL("OSS (Open Sound System) playback"), | |||
.priv_data_size = sizeof(OSSAudioData), | |||
/* XXX: we make the assumption that the soundcard accepts this format */ | |||
/* XXX: find better solution with "preinit" method, needed also in | |||
other formats */ | |||
.audio_codec = AV_NE(AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_S16LE), | |||
.video_codec = AV_CODEC_ID_NONE, | |||
.write_header = audio_write_header, | |||
.write_packet = audio_write_packet, | |||
.write_trailer = audio_write_trailer, | |||
.flags = AVFMT_NOFILE, | |||
}; |
@@ -1,95 +0,0 @@ | |||
/* | |||
* sndio play and grab interface | |||
* Copyright (c) 2010 Jacob Meuser | |||
* | |||
* This file is part of Libav. | |||
* | |||
* Libav is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 2.1 of the License, or (at your option) any later version. | |||
* | |||
* Libav is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public | |||
* License along with Libav; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
#include <stdint.h> | |||
#include <sndio.h> | |||
#include "libavutil/internal.h" | |||
#include "libavformat/avformat.h" | |||
#include "libavdevice/sndio.h" | |||
static av_cold int audio_write_header(AVFormatContext *s1) | |||
{ | |||
SndioData *s = s1->priv_data; | |||
AVStream *st; | |||
int ret; | |||
st = s1->streams[0]; | |||
s->sample_rate = st->codecpar->sample_rate; | |||
s->channels = st->codecpar->channels; | |||
ret = ff_sndio_open(s1, 1, s1->filename); | |||
return ret; | |||
} | |||
static int audio_write_packet(AVFormatContext *s1, AVPacket *pkt) | |||
{ | |||
SndioData *s = s1->priv_data; | |||
uint8_t *buf= pkt->data; | |||
int size = pkt->size; | |||
int len, ret; | |||
while (size > 0) { | |||
len = FFMIN(s->buffer_size - s->buffer_offset, size); | |||
memcpy(s->buffer + s->buffer_offset, buf, len); | |||
buf += len; | |||
size -= len; | |||
s->buffer_offset += len; | |||
if (s->buffer_offset >= s->buffer_size) { | |||
ret = sio_write(s->hdl, s->buffer, s->buffer_size); | |||
if (ret == 0 || sio_eof(s->hdl)) | |||
return AVERROR(EIO); | |||
s->softpos += ret; | |||
s->buffer_offset = 0; | |||
} | |||
} | |||
return 0; | |||
} | |||
static int audio_write_trailer(AVFormatContext *s1) | |||
{ | |||
SndioData *s = s1->priv_data; | |||
sio_write(s->hdl, s->buffer, s->buffer_offset); | |||
ff_sndio_close(s); | |||
return 0; | |||
} | |||
AVOutputFormat ff_sndio_muxer = { | |||
.name = "sndio", | |||
.long_name = NULL_IF_CONFIG_SMALL("sndio audio playback"), | |||
.priv_data_size = sizeof(SndioData), | |||
/* XXX: we make the assumption that the soundcard accepts this format */ | |||
/* XXX: find better solution with "preinit" method, needed also in | |||
other formats */ | |||
.audio_codec = AV_NE(AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_S16LE), | |||
.video_codec = AV_CODEC_ID_NONE, | |||
.write_header = audio_write_header, | |||
.write_packet = audio_write_packet, | |||
.write_trailer = audio_write_trailer, | |||
.flags = AVFMT_NOFILE, | |||
}; |
@@ -29,7 +29,7 @@ | |||
#define LIBAVDEVICE_VERSION_MAJOR 57 | |||
#define LIBAVDEVICE_VERSION_MINOR 0 | |||
#define LIBAVDEVICE_VERSION_MICRO 0 | |||
#define LIBAVDEVICE_VERSION_MICRO 1 | |||
#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \ | |||
LIBAVDEVICE_VERSION_MINOR, \ | |||