diff options
author | Mikhail Burakov <mburakov@mailbox.org> | 2023-04-12 07:06:36 +0200 |
---|---|---|
committer | Mikhail Burakov <mburakov@mailbox.org> | 2023-04-12 07:06:36 +0200 |
commit | 71c1a8a02a3f33d1e49d8c6cf0a4b23016b63bc0 (patch) | |
tree | 07e73e39ffa2e92ad60968f029def493ae82069b | |
parent | 1a0b2f25fa4a3ba6ff13287a68dd43fa9ea3e776 (diff) |
Minor cleanup in frame encoding
-rw-r--r-- | encode.c | 38 |
1 files changed, 18 insertions, 20 deletions
@@ -264,27 +264,25 @@ bool EncodeContextEncodeFrame(struct EncodeContext* encode_context, int fd) { goto rollback_packet; } - for (;;) { - err = avcodec_receive_packet(encode_context->codec_context, packet); - switch (err) { - case 0: - break; - case AVERROR(EAGAIN): - case AVERROR_EOF: - result = true; - goto rollback_packet; - default: - LOG("Failed to receive packet (%s)", av_err2str(err)); - goto rollback_packet; - } - - packet->stream_index = 0; - bool result = DrainPacket(packet, fd); - av_packet_unref(packet); - if (!result) { - LOG("Failed to drain packet"); + err = avcodec_receive_packet(encode_context->codec_context, packet); + switch (err) { + case 0: + break; + case AVERROR(EAGAIN): + // TODO(mburakov): This happens only for the very first frame, and + // effectively introduces an additional latency of 16ms... + result = true; goto rollback_packet; - } + default: + LOG("Failed to receive packet (%s)", av_err2str(err)); + goto rollback_packet; + } + + result = DrainPacket(packet, fd); + av_packet_unref(packet); + if (!result) { + LOG("Failed to drain packet"); + goto rollback_packet; } rollback_packet: |