mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-29 22:00:58 +02:00
avconv: cleanup the transcoding loop in output_packet().
This commit is contained in:
parent
9595234c94
commit
82963f8f04
59
avconv.c
59
avconv.c
@ -1878,58 +1878,27 @@ static int output_packet(InputStream *ist, int ist_index,
|
|||||||
"Multiple frames in a packet from stream %d\n", pkt->stream_index);
|
"Multiple frames in a packet from stream %d\n", pkt->stream_index);
|
||||||
ist->showed_multi_packet_warning=1;
|
ist->showed_multi_packet_warning=1;
|
||||||
|
|
||||||
// XXX temporary hack, will be turned to a switch() once all codec
|
|
||||||
// types are split out
|
|
||||||
if (ist->st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
|
|
||||||
ret = transcode_audio(ist, &avpkt, &got_output);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
continue;
|
|
||||||
} else if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
|
|
||||||
ret = transcode_video(ist, &avpkt, &got_output, &pkt_pts);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
if (!got_output)
|
|
||||||
goto discard_packet;
|
|
||||||
continue;
|
|
||||||
} else if (ist->st->codec->codec_type == AVMEDIA_TYPE_SUBTITLE) {
|
|
||||||
ret = transcode_subtitles(ist, &avpkt, &got_output);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
if (!got_output)
|
|
||||||
goto discard_packet;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* decode the packet if needed */
|
|
||||||
switch(ist->st->codec->codec_type) {
|
switch(ist->st->codec->codec_type) {
|
||||||
|
case AVMEDIA_TYPE_AUDIO:
|
||||||
|
ret = transcode_audio (ist, &avpkt, &got_output);
|
||||||
|
break;
|
||||||
|
case AVMEDIA_TYPE_VIDEO:
|
||||||
|
ret = transcode_video (ist, &avpkt, &got_output, &pkt_pts);
|
||||||
|
break;
|
||||||
|
case AVMEDIA_TYPE_SUBTITLE:
|
||||||
|
ret = transcode_subtitles(ist, &avpkt, &got_output);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* frame rate emulation */
|
|
||||||
rate_emu_sleep(ist);
|
|
||||||
|
|
||||||
/* if output time reached then transcode raw format,
|
|
||||||
encode packets and output them */
|
|
||||||
for (i = 0; i < nb_ostreams; i++) {
|
|
||||||
ost = &ost_table[i];
|
|
||||||
|
|
||||||
if (!check_output_constraints(ist, ost) || !ost->encoding_needed)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* set the input output pts pairs */
|
|
||||||
//ost->sync_ipts = (double)(ist->pts + input_files[ist->file_index].ts_offset - start_time)/ AV_TIME_BASE;
|
|
||||||
|
|
||||||
av_assert0(ist->decoding_needed);
|
|
||||||
switch(ost->st->codec->codec_type) {
|
|
||||||
default:
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
if (!got_output) {
|
||||||
|
if (ist->st->codec->codec_type == AVMEDIA_TYPE_AUDIO)
|
||||||
|
continue;
|
||||||
|
goto discard_packet;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
discard_packet:
|
discard_packet:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user