From 8d75422d21e97bca5bee2f9ed88af05f1e7792d3 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Thu, 8 Aug 2019 01:15:05 +0200 Subject: [PATCH] WIP: attempt to fix #702 Write the whole first data packet along with the config packet in the codec extradata to write the header. --- app/src/recorder.c | 11 +---------- app/src/stream.c | 17 +---------------- 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/app/src/recorder.c b/app/src/recorder.c index 402f2530..e48f2576 100644 --- a/app/src/recorder.c +++ b/app/src/recorder.c @@ -219,22 +219,13 @@ recorder_rescale_packet(struct recorder *recorder, AVPacket *packet) { bool recorder_write(struct recorder *recorder, AVPacket *packet) { + SDL_assert(packet->pts != AV_NOPTS_VALUE); if (!recorder->header_written) { - if (packet->pts != AV_NOPTS_VALUE) { - LOGE("The first packet is not a config packet"); - return false; - } bool ok = recorder_write_header(recorder, packet); if (!ok) { return false; } recorder->header_written = true; - return true; - } - - if (packet->pts == AV_NOPTS_VALUE) { - // ignore config packets - return true; } recorder_rescale_packet(recorder, packet); diff --git a/app/src/stream.c b/app/src/stream.c index bca89f71..47c21e0f 100644 --- a/app/src/stream.c +++ b/app/src/stream.c @@ -69,15 +69,6 @@ notify_stopped(void) { SDL_PushEvent(&stop_event); } -static bool -process_config_packet(struct stream *stream, AVPacket *packet) { - if (stream->recorder && !recorder_push(stream->recorder, packet)) { - LOGE("Could not send config packet to recorder"); - return false; - } - return true; -} - static bool process_frame(struct stream *stream, AVPacket *packet) { if (stream->decoder && !decoder_push(stream->decoder, packet)) { @@ -157,13 +148,7 @@ stream_push_packet(struct stream *stream, AVPacket *packet) { } } - if (is_config) { - // config packet - bool ok = process_config_packet(stream, packet); - if (!ok) { - return false; - } - } else { + if (!is_config) { // data packet bool ok = stream_parse(stream, packet);