ffmpeg: reindent.
This commit is contained in:
parent
d4d5a95055
commit
e0aee84084
261
ffmpeg.c
261
ffmpeg.c
@ -1643,142 +1643,141 @@ static int output_packet(InputStream *ist, int ist_index,
|
||||
/* if output time reached then transcode raw format,
|
||||
encode packets and output them */
|
||||
for (i = 0; i < nb_ostreams; i++) {
|
||||
OutputFile *of = &output_files[ost_table[i].file_index];
|
||||
int frame_size;
|
||||
OutputFile *of = &output_files[ost_table[i].file_index];
|
||||
int frame_size;
|
||||
|
||||
ost = &ost_table[i];
|
||||
if (ost->source_index != ist_index)
|
||||
continue;
|
||||
ost = &ost_table[i];
|
||||
if (ost->source_index != ist_index)
|
||||
continue;
|
||||
|
||||
if (of->start_time && ist->pts < of->start_time)
|
||||
continue;
|
||||
if (of->start_time && ist->pts < of->start_time)
|
||||
continue;
|
||||
|
||||
if (of->recording_time != INT64_MAX &&
|
||||
av_compare_ts(ist->pts, AV_TIME_BASE_Q, of->recording_time + of->start_time,
|
||||
(AVRational){1, 1000000}) >= 0) {
|
||||
ost->is_past_recording_time = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
#if CONFIG_AVFILTER
|
||||
frame_available = ist->st->codec->codec_type != AVMEDIA_TYPE_VIDEO ||
|
||||
!ost->output_video_filter || avfilter_poll_frame(ost->output_video_filter->inputs[0]);
|
||||
while (frame_available) {
|
||||
if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO && ost->output_video_filter) {
|
||||
AVRational ist_pts_tb = ost->output_video_filter->inputs[0]->time_base;
|
||||
if (av_vsink_buffer_get_video_buffer_ref(ost->output_video_filter, &ost->picref, 0) < 0)
|
||||
goto cont;
|
||||
if (ost->picref) {
|
||||
avfilter_fill_frame_from_video_buffer_ref(&picture, ost->picref);
|
||||
ist->pts = av_rescale_q(ost->picref->pts, ist_pts_tb, AV_TIME_BASE_Q);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
os = output_files[ost->file_index].ctx;
|
||||
|
||||
/* set the input output pts pairs */
|
||||
//ost->sync_ipts = (double)(ist->pts + input_files[ist->file_index].ts_offset - start_time)/ AV_TIME_BASE;
|
||||
|
||||
if (ost->encoding_needed) {
|
||||
av_assert0(ist->decoding_needed);
|
||||
switch(ost->st->codec->codec_type) {
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
do_audio_out(os, ost, ist, decoded_data_buf, decoded_data_size);
|
||||
break;
|
||||
case AVMEDIA_TYPE_VIDEO:
|
||||
#if CONFIG_AVFILTER
|
||||
if (ost->picref->video && !ost->frame_aspect_ratio)
|
||||
ost->st->codec->sample_aspect_ratio = ost->picref->video->sample_aspect_ratio;
|
||||
#endif
|
||||
do_video_out(os, ost, ist, &picture, &frame_size,
|
||||
same_quant ? quality : ost->st->codec->global_quality);
|
||||
if (vstats_filename && frame_size)
|
||||
do_video_stats(os, ost, frame_size);
|
||||
break;
|
||||
case AVMEDIA_TYPE_SUBTITLE:
|
||||
do_subtitle_out(os, ost, ist, &subtitle,
|
||||
pkt->pts);
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
} else {
|
||||
AVFrame avframe; //FIXME/XXX remove this
|
||||
AVPicture pict;
|
||||
AVPacket opkt;
|
||||
int64_t ost_tb_start_time= av_rescale_q(of->start_time, AV_TIME_BASE_Q, ost->st->time_base);
|
||||
|
||||
av_init_packet(&opkt);
|
||||
|
||||
if ((!ost->frame_number && !(pkt->flags & AV_PKT_FLAG_KEY)) && !copy_initial_nonkeyframes)
|
||||
#if !CONFIG_AVFILTER
|
||||
continue;
|
||||
#else
|
||||
goto cont;
|
||||
#endif
|
||||
|
||||
/* no reencoding needed : output the packet directly */
|
||||
/* force the input stream PTS */
|
||||
|
||||
avcodec_get_frame_defaults(&avframe);
|
||||
ost->st->codec->coded_frame= &avframe;
|
||||
avframe.key_frame = pkt->flags & AV_PKT_FLAG_KEY;
|
||||
|
||||
if(ost->st->codec->codec_type == AVMEDIA_TYPE_AUDIO)
|
||||
audio_size += data_size;
|
||||
else if (ost->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
video_size += data_size;
|
||||
ost->sync_opts++;
|
||||
}
|
||||
|
||||
opkt.stream_index= ost->index;
|
||||
if(pkt->pts != AV_NOPTS_VALUE)
|
||||
opkt.pts= av_rescale_q(pkt->pts, ist->st->time_base, ost->st->time_base) - ost_tb_start_time;
|
||||
else
|
||||
opkt.pts= AV_NOPTS_VALUE;
|
||||
|
||||
if (pkt->dts == AV_NOPTS_VALUE)
|
||||
opkt.dts = av_rescale_q(ist->pts, AV_TIME_BASE_Q, ost->st->time_base);
|
||||
else
|
||||
opkt.dts = av_rescale_q(pkt->dts, ist->st->time_base, ost->st->time_base);
|
||||
opkt.dts -= ost_tb_start_time;
|
||||
|
||||
opkt.duration = av_rescale_q(pkt->duration, ist->st->time_base, ost->st->time_base);
|
||||
opkt.flags= pkt->flags;
|
||||
|
||||
//FIXME remove the following 2 lines they shall be replaced by the bitstream filters
|
||||
if( ost->st->codec->codec_id != CODEC_ID_H264
|
||||
&& ost->st->codec->codec_id != CODEC_ID_MPEG1VIDEO
|
||||
&& ost->st->codec->codec_id != CODEC_ID_MPEG2VIDEO
|
||||
) {
|
||||
if(av_parser_change(ist->st->parser, ost->st->codec, &opkt.data, &opkt.size, data_buf, data_size, pkt->flags & AV_PKT_FLAG_KEY))
|
||||
opkt.destruct= av_destruct_packet;
|
||||
} else {
|
||||
opkt.data = data_buf;
|
||||
opkt.size = data_size;
|
||||
}
|
||||
|
||||
if (os->oformat->flags & AVFMT_RAWPICTURE) {
|
||||
/* store AVPicture in AVPacket, as expected by the output format */
|
||||
avpicture_fill(&pict, opkt.data, ost->st->codec->pix_fmt, ost->st->codec->width, ost->st->codec->height);
|
||||
opkt.data = (uint8_t *)&pict;
|
||||
opkt.size = sizeof(AVPicture);
|
||||
opkt.flags |= AV_PKT_FLAG_KEY;
|
||||
}
|
||||
write_frame(os, &opkt, ost->st->codec, ost->bitstream_filters);
|
||||
ost->st->codec->frame_number++;
|
||||
ost->frame_number++;
|
||||
av_free_packet(&opkt);
|
||||
}
|
||||
#if CONFIG_AVFILTER
|
||||
cont:
|
||||
frame_available = (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) &&
|
||||
ost->output_video_filter && avfilter_poll_frame(ost->output_video_filter->inputs[0]);
|
||||
avfilter_unref_buffer(ost->picref);
|
||||
}
|
||||
#endif
|
||||
if (of->recording_time != INT64_MAX &&
|
||||
av_compare_ts(ist->pts, AV_TIME_BASE_Q, of->recording_time + of->start_time,
|
||||
(AVRational){1, 1000000}) >= 0) {
|
||||
ost->is_past_recording_time = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
#if CONFIG_AVFILTER
|
||||
frame_available = ist->st->codec->codec_type != AVMEDIA_TYPE_VIDEO ||
|
||||
!ost->output_video_filter || avfilter_poll_frame(ost->output_video_filter->inputs[0]);
|
||||
while (frame_available) {
|
||||
if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO && ost->output_video_filter) {
|
||||
AVRational ist_pts_tb = ost->output_video_filter->inputs[0]->time_base;
|
||||
if (av_vsink_buffer_get_video_buffer_ref(ost->output_video_filter, &ost->picref, 0) < 0)
|
||||
goto cont;
|
||||
if (ost->picref) {
|
||||
avfilter_fill_frame_from_video_buffer_ref(&picture, ost->picref);
|
||||
ist->pts = av_rescale_q(ost->picref->pts, ist_pts_tb, AV_TIME_BASE_Q);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
os = output_files[ost->file_index].ctx;
|
||||
|
||||
/* set the input output pts pairs */
|
||||
//ost->sync_ipts = (double)(ist->pts + input_files[ist->file_index].ts_offset - start_time)/ AV_TIME_BASE;
|
||||
|
||||
if (ost->encoding_needed) {
|
||||
av_assert0(ist->decoding_needed);
|
||||
switch(ost->st->codec->codec_type) {
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
do_audio_out(os, ost, ist, decoded_data_buf, decoded_data_size);
|
||||
break;
|
||||
case AVMEDIA_TYPE_VIDEO:
|
||||
#if CONFIG_AVFILTER
|
||||
if (ost->picref->video && !ost->frame_aspect_ratio)
|
||||
ost->st->codec->sample_aspect_ratio = ost->picref->video->sample_aspect_ratio;
|
||||
#endif
|
||||
do_video_out(os, ost, ist, &picture, &frame_size,
|
||||
same_quant ? quality : ost->st->codec->global_quality);
|
||||
if (vstats_filename && frame_size)
|
||||
do_video_stats(os, ost, frame_size);
|
||||
break;
|
||||
case AVMEDIA_TYPE_SUBTITLE:
|
||||
do_subtitle_out(os, ost, ist, &subtitle,
|
||||
pkt->pts);
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
} else {
|
||||
AVFrame avframe; //FIXME/XXX remove this
|
||||
AVPicture pict;
|
||||
AVPacket opkt;
|
||||
int64_t ost_tb_start_time= av_rescale_q(of->start_time, AV_TIME_BASE_Q, ost->st->time_base);
|
||||
av_init_packet(&opkt);
|
||||
|
||||
if ((!ost->frame_number && !(pkt->flags & AV_PKT_FLAG_KEY)) && !copy_initial_nonkeyframes)
|
||||
#if !CONFIG_AVFILTER
|
||||
continue;
|
||||
#else
|
||||
goto cont;
|
||||
#endif
|
||||
|
||||
/* no reencoding needed : output the packet directly */
|
||||
/* force the input stream PTS */
|
||||
|
||||
avcodec_get_frame_defaults(&avframe);
|
||||
ost->st->codec->coded_frame= &avframe;
|
||||
avframe.key_frame = pkt->flags & AV_PKT_FLAG_KEY;
|
||||
|
||||
if(ost->st->codec->codec_type == AVMEDIA_TYPE_AUDIO)
|
||||
audio_size += data_size;
|
||||
else if (ost->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
video_size += data_size;
|
||||
ost->sync_opts++;
|
||||
}
|
||||
|
||||
opkt.stream_index= ost->index;
|
||||
if(pkt->pts != AV_NOPTS_VALUE)
|
||||
opkt.pts= av_rescale_q(pkt->pts, ist->st->time_base, ost->st->time_base) - ost_tb_start_time;
|
||||
else
|
||||
opkt.pts= AV_NOPTS_VALUE;
|
||||
|
||||
if (pkt->dts == AV_NOPTS_VALUE)
|
||||
opkt.dts = av_rescale_q(ist->pts, AV_TIME_BASE_Q, ost->st->time_base);
|
||||
else
|
||||
opkt.dts = av_rescale_q(pkt->dts, ist->st->time_base, ost->st->time_base);
|
||||
opkt.dts -= ost_tb_start_time;
|
||||
|
||||
opkt.duration = av_rescale_q(pkt->duration, ist->st->time_base, ost->st->time_base);
|
||||
opkt.flags= pkt->flags;
|
||||
|
||||
//FIXME remove the following 2 lines they shall be replaced by the bitstream filters
|
||||
if( ost->st->codec->codec_id != CODEC_ID_H264
|
||||
&& ost->st->codec->codec_id != CODEC_ID_MPEG1VIDEO
|
||||
&& ost->st->codec->codec_id != CODEC_ID_MPEG2VIDEO
|
||||
) {
|
||||
if(av_parser_change(ist->st->parser, ost->st->codec, &opkt.data, &opkt.size, data_buf, data_size, pkt->flags & AV_PKT_FLAG_KEY))
|
||||
opkt.destruct= av_destruct_packet;
|
||||
} else {
|
||||
opkt.data = data_buf;
|
||||
opkt.size = data_size;
|
||||
}
|
||||
|
||||
if (os->oformat->flags & AVFMT_RAWPICTURE) {
|
||||
/* store AVPicture in AVPacket, as expected by the output format */
|
||||
avpicture_fill(&pict, opkt.data, ost->st->codec->pix_fmt, ost->st->codec->width, ost->st->codec->height);
|
||||
opkt.data = (uint8_t *)&pict;
|
||||
opkt.size = sizeof(AVPicture);
|
||||
opkt.flags |= AV_PKT_FLAG_KEY;
|
||||
}
|
||||
write_frame(os, &opkt, ost->st->codec, ost->bitstream_filters);
|
||||
ost->st->codec->frame_number++;
|
||||
ost->frame_number++;
|
||||
av_free_packet(&opkt);
|
||||
}
|
||||
#if CONFIG_AVFILTER
|
||||
cont:
|
||||
frame_available = (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) &&
|
||||
ost->output_video_filter && avfilter_poll_frame(ost->output_video_filter->inputs[0]);
|
||||
avfilter_unref_buffer(ost->picref);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
av_free(buffer_to_free);
|
||||
/* XXX: allocate the subtitles in the codec ? */
|
||||
if (subtitle_to_free) {
|
||||
|
Loading…
Reference in New Issue
Block a user