summaryrefslogtreecommitdiff
path: root/libavformat/dvenc.c
diff options
context:
space:
mode:
authorLimin Wang <lance.lmwang@gmail.com>2020-08-27 23:40:02 +0800
committerLimin Wang <lance.lmwang@gmail.com>2020-11-19 22:39:30 +0800
commit3871326910ee86e87114fd3e5d1b003ac14b195e (patch)
treeca6a19378b52b0dc54784e16975436de7a3d690a /libavformat/dvenc.c
parentda0faf10a3d426748ac8722db3ea93358f95a351 (diff)
downloadffmpeg-3871326910ee86e87114fd3e5d1b003ac14b195e.tar.gz
avformat/dvenc: check the format before vst and ast[i] are initialized
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
Diffstat (limited to 'libavformat/dvenc.c')
-rw-r--r--libavformat/dvenc.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/libavformat/dvenc.c b/libavformat/dvenc.c
index 1c386733b2..6c0d40f819 100644
--- a/libavformat/dvenc.c
+++ b/libavformat/dvenc.c
@@ -311,10 +311,20 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
switch (st->codecpar->codec_type) {
case AVMEDIA_TYPE_VIDEO:
if (vst) return NULL;
+ if (st->codecpar->codec_id != AV_CODEC_ID_DVVIDEO)
+ goto bail_out;
vst = st;
break;
case AVMEDIA_TYPE_AUDIO:
if (c->n_ast > 1) return NULL;
+ /* Some checks -- DV format is very picky about its incoming streams */
+ if(st->codecpar->codec_id != AV_CODEC_ID_PCM_S16LE ||
+ st->codecpar->channels != 2)
+ goto bail_out;
+ if (st->codecpar->sample_rate != 48000 &&
+ st->codecpar->sample_rate != 44100 &&
+ st->codecpar->sample_rate != 32000 )
+ goto bail_out;
c->ast[c->n_ast++] = st;
break;
default:
@@ -322,20 +332,9 @@ static DVMuxContext* dv_init_mux(AVFormatContext* s)
}
}
- /* Some checks -- DV format is very picky about its incoming streams */
- if (!vst || vst->codecpar->codec_id != AV_CODEC_ID_DVVIDEO)
+ if (!vst)
goto bail_out;
- for (i=0; i<c->n_ast; i++) {
- if (c->ast[i]) {
- if(c->ast[i]->codecpar->codec_id != AV_CODEC_ID_PCM_S16LE ||
- c->ast[i]->codecpar->channels != 2)
- goto bail_out;
- if (c->ast[i]->codecpar->sample_rate != 48000 &&
- c->ast[i]->codecpar->sample_rate != 44100 &&
- c->ast[i]->codecpar->sample_rate != 32000 )
- goto bail_out;
- }
- }
+
c->sys = av_dv_codec_profile2(vst->codecpar->width, vst->codecpar->height,
vst->codecpar->format, vst->time_base);
if (!c->sys)