Fix recording with old decoding/encoding API

The deprecated avcodec_decode_video2() should always the whole packet,
so there is no need to loop (cf doc/examples/demuxing_decoding.c in
FFmpeg).

This hack changed the packet size and data pointer. This broke recording
which used the same packet.
This commit is contained in:
Romain Vimont 2019-03-02 16:02:01 +01:00
parent 84270e2d18
commit bcd4090d51

View file

@ -237,7 +237,6 @@ static int run_decoder(void *data) {
goto run_quit; goto run_quit;
} }
#else #else
while (packet.size > 0) {
int got_picture; int got_picture;
int len = avcodec_decode_video2(codec_ctx, decoder->video_buffer->decoding_frame, &got_picture, &packet); int len = avcodec_decode_video2(codec_ctx, decoder->video_buffer->decoding_frame, &got_picture, &packet);
if (len < 0) { if (len < 0) {
@ -248,9 +247,6 @@ static int run_decoder(void *data) {
if (got_picture) { if (got_picture) {
push_frame(decoder); push_frame(decoder);
} }
packet.size -= len;
packet.data += len;
}
#endif #endif
if (decoder->recorder) { if (decoder->recorder) {