summaryrefslogtreecommitdiff
path: root/fftools
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-10-08 11:24:09 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-10-08 16:03:21 +0200
commit21914e7a4e802772cc9cdeec3eec8b30da4fa95a (patch)
tree38ffe4795ae194373afad3ce8f1acfa5a10e3680 /fftools
parentf1df856fb632c2d14a29cfb1f4a11c4dbb027f89 (diff)
fftools/ffmpeg, ffmpeg_opt: Allocate (In|Out)putStream.pkt early
Avoids checks lateron in the hot path. Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'fftools')
-rw-r--r--fftools/ffmpeg.c16
-rw-r--r--fftools/ffmpeg_opt.c8
2 files changed, 9 insertions, 15 deletions
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 14611480f1..9d4f9d7a2b 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -1533,9 +1533,6 @@ static int reap_filters(int flush)
if (av_buffersink_get_type(filter) == AVMEDIA_TYPE_AUDIO)
init_output_stream_wrapper(ost, NULL, 1);
- if (!ost->pkt && !(ost->pkt = av_packet_alloc())) {
- return AVERROR(ENOMEM);
- }
if (!ost->filtered_frame && !(ost->filtered_frame = av_frame_alloc())) {
return AVERROR(ENOMEM);
}
@@ -1979,9 +1976,6 @@ static void flush_encoders(void)
AVPacket *pkt = ost->pkt;
int pkt_size;
- if (!pkt)
- break;
-
switch (enc->codec_type) {
case AVMEDIA_TYPE_AUDIO:
desc = "audio";
@@ -2597,8 +2591,6 @@ static int transcode_subtitles(InputStream *ist, AVPacket *pkt, int *got_output,
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];
- if (!ost->pkt && !(ost->pkt = av_packet_alloc()))
- exit_program(1);
if (!check_output_constraints(ist, ost) || !ost->encoding_needed
|| ost->enc->type != AVMEDIA_TYPE_SUBTITLE)
continue;
@@ -2634,11 +2626,7 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
int repeating = 0;
int eof_reached = 0;
- AVPacket *avpkt;
-
- if (!ist->pkt && !(ist->pkt = av_packet_alloc()))
- return AVERROR(ENOMEM);
- avpkt = ist->pkt;
+ AVPacket *avpkt = ist->pkt;
if (!ist->saw_first_ts) {
ist->first_dts =
@@ -2809,8 +2797,6 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];
- if (!ost->pkt && !(ost->pkt = av_packet_alloc()))
- exit_program(1);
if (!check_output_constraints(ist, ost) || ost->encoding_needed)
continue;
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index c46a9343e1..7aff43d917 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -888,6 +888,10 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
exit_program(1);
}
+ ist->pkt = av_packet_alloc();
+ if (!ist->pkt)
+ exit_program(1);
+
if (o->bitexact)
ist->dec_ctx->flags |= AV_CODEC_FLAG_BITEXACT;
@@ -1516,6 +1520,10 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e
exit_program(1);
}
+ ost->pkt = av_packet_alloc();
+ if (!ost->pkt)
+ exit_program(1);
+
if (ost->enc) {
AVIOContext *s = NULL;
char *buf = NULL, *arg = NULL, *preset = NULL;