History

ffmpeg: Allocate InputStream.decoded_frame early

Based on a commit by Andreas Rheinhardt.

James Almer committed 5 years ago

Commit e7f32791 parent ee3d6a22 files · +6 −9Browse files

Showing the changes to fftools (2 of 2 files). Show all

Unified · Split

2 files
  1. fftools/ffmpeg.c +2 −9
  2. fftools/ffmpeg_opt.c +4 −0
fftools/ffmpeg.c+2−9
@@ -2332,15 +2332,11 @@ static int send_frame_to_filters(InputStream *ist, AVFrame *decoded_frame) · 2331 unmodified lines
2332static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output,2332static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output,
2333 int *decode_failed)2333 int *decode_failed)
2334{2334{
2335 AVFrame *decoded_frame;2335 AVFrame *decoded_frame = ist->decoded_frame;
2336 AVCodecContext *avctx = ist->dec_ctx;2336 AVCodecContext *avctx = ist->dec_ctx;
2337 int ret, err = 0;2337 int ret, err = 0;
2338 AVRational decoded_frame_tb;2338 AVRational decoded_frame_tb;
2339 2339
2340 if (!ist->decoded_frame && !(ist->decoded_frame = av_frame_alloc()))
2341 return AVERROR(ENOMEM);
2342 decoded_frame = ist->decoded_frame;
2343
2344 update_benchmark(NULL);2340 update_benchmark(NULL);
2345 ret = decode(avctx, decoded_frame, got_output, pkt);2341 ret = decode(avctx, decoded_frame, got_output, pkt);
2346 update_benchmark("decode_audio %d.%d", ist->file_index, ist->st->index);2342 update_benchmark("decode_audio %d.%d", ist->file_index, ist->st->index);
@@ -2397,7 +2393,7 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output, · 50 unmodified lines
2397static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_t *duration_pts, int eof,2393static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_t *duration_pts, int eof,
2398 int *decode_failed)2394 int *decode_failed)
2399{2395{
2400 AVFrame *decoded_frame;2396 AVFrame *decoded_frame = ist->decoded_frame;
2401 int i, ret = 0, err = 0;2397 int i, ret = 0, err = 0;
2402 int64_t best_effort_timestamp;2398 int64_t best_effort_timestamp;
2403 int64_t dts = AV_NOPTS_VALUE;2399 int64_t dts = AV_NOPTS_VALUE;
@@ -2408,9 +2404,6 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_ · 4 unmodified lines
2408 if (!eof && pkt && pkt->size == 0)2404 if (!eof && pkt && pkt->size == 0)
2409 return 0;2405 return 0;
2410 2406
2411 if (!ist->decoded_frame && !(ist->decoded_frame = av_frame_alloc()))
2412 return AVERROR(ENOMEM);
2413 decoded_frame = ist->decoded_frame;
2414 if (ist->dts != AV_NOPTS_VALUE)2407 if (ist->dts != AV_NOPTS_VALUE)
2415 dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ist->st->time_base);2408 dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ist->st->time_base);
2416 if (pkt) {2409 if (pkt) {
fftools/ffmpeg_opt.c+4−0
@@ -889,6 +889,10 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic) · 888 unmodified lines
889 exit_program(1);889 exit_program(1);
890 }890 }
891 891
892 ist->decoded_frame = av_frame_alloc();
893 if (!ist->decoded_frame)
894 exit_program(1);
895
892 ist->filter_frame = av_frame_alloc();896 ist->filter_frame = av_frame_alloc();
893 if (!ist->filter_frame)897 if (!ist->filter_frame)
894 exit_program(1);898 exit_program(1);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t