for(i=0;i<s->nb_streams;i++) {
AVCodecContext *enc = s->streams[i]->codec;
if (enc->codec_type == AVMEDIA_TYPE_AUDIO) {
+ if (swf->audio_enc) {
+ av_log(s, AV_LOG_ERROR, "SWF muxer only supports 1 audio stream\n");
+ return AVERROR_INVALIDDATA;
+ }
if (enc->codec_id == AV_CODEC_ID_MP3) {
swf->audio_enc = enc;
swf->audio_fifo= av_fifo_alloc(AUDIO_FIFO_SIZE);
return -1;
}
} else {
+ if (swf->video_enc) {
+ av_log(s, AV_LOG_ERROR, "SWF muxer only supports 1 video stream\n");
+ return AVERROR_INVALIDDATA;
+ }
if (enc->codec_id == AV_CODEC_ID_VP6F ||
enc->codec_id == AV_CODEC_ID_FLV1 ||
enc->codec_id == AV_CODEC_ID_MJPEG) {
+ swf->video_st = s->streams[i];
swf->video_enc = enc;
} else {
av_log(s, AV_LOG_ERROR, "SWF muxer only supports VP6, FLV1 and MJPEG\n");
} else {
width = swf->video_enc->width;
height = swf->video_enc->height;
- rate = swf->video_enc->time_base.den;
- rate_base = swf->video_enc->time_base.num;
+ // TODO: should be avg_frame_rate
+ rate = swf->video_st->time_base.den;
+ rate_base = swf->video_st->time_base.num;
}
if (!swf->audio_enc)
- swf->samples_per_frame = (44100. * rate_base) / rate;
+ swf->samples_per_frame = (44100.0 * rate_base) / rate;
else
swf->samples_per_frame = (swf->audio_enc->sample_rate * rate_base) / rate;
put_swf_tag(s, TAG_SHOWFRAME);
put_swf_end_tag(s);
- avio_flush(s->pb);
-
return 0;
}