lavd/pulse_audio_enc: more stream validation restrictive
So far pulse device picked up first audio stream and ignored others. It is required to provide exactly one audio stream now. Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
This commit is contained in:
parent
4fb3aa491b
commit
7f5e75eea9
@ -34,7 +34,6 @@ typedef struct PulseData {
|
||||
const char *stream_name;
|
||||
const char *device;
|
||||
pa_simple *pa;
|
||||
unsigned int stream_index;
|
||||
int64_t timestamp;
|
||||
} PulseData;
|
||||
|
||||
@ -43,23 +42,15 @@ static av_cold int pulse_write_header(AVFormatContext *h)
|
||||
PulseData *s = h->priv_data;
|
||||
AVStream *st = NULL;
|
||||
int ret;
|
||||
unsigned int i;
|
||||
pa_sample_spec ss;
|
||||
pa_buffer_attr attr = { -1, -1, -1, -1, -1 };
|
||||
const char *stream_name = s->stream_name;
|
||||
|
||||
for (i = 0; i < h->nb_streams; i++) {
|
||||
if (h->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||
st = h->streams[i];
|
||||
s->stream_index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!st) {
|
||||
av_log(s, AV_LOG_ERROR, "No audio stream found.\n");
|
||||
if (h->nb_streams != 1 || h->streams[0]->codec->codec_type != AVMEDIA_TYPE_AUDIO) {
|
||||
av_log(s, AV_LOG_ERROR, "Only a single audio stream is supported.\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
st = h->streams[0];
|
||||
|
||||
if (!stream_name) {
|
||||
if (h->filename[0])
|
||||
@ -114,16 +105,13 @@ static int pulse_write_packet(AVFormatContext *h, AVPacket *pkt)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (s->stream_index != pkt->stream_index)
|
||||
return 0;
|
||||
|
||||
if (pkt->dts != AV_NOPTS_VALUE)
|
||||
s->timestamp = pkt->dts;
|
||||
|
||||
if (pkt->duration) {
|
||||
s->timestamp += pkt->duration;;
|
||||
} else {
|
||||
AVStream *st = h->streams[s->stream_index];
|
||||
AVStream *st = h->streams[0];
|
||||
AVCodecContext *codec_ctx = st->codec;
|
||||
AVRational r = { 1, codec_ctx->sample_rate };
|
||||
int64_t samples = pkt->size / (av_get_bytes_per_sample(codec_ctx->sample_fmt) * codec_ctx->channels);
|
||||
|
Loading…
x
Reference in New Issue
Block a user