WIP: attempt to fix #702

Write the whole first data packet along with the config packet in the
codec extradata to write the header.
issue702
Romain Vimont 5 years ago
parent 8a08ca0f3d
commit 8d75422d21

@ -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);

@ -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);

Loading…
Cancel
Save