summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Burakov <mburakov@mailbox.org>2023-04-12 07:06:36 +0200
committerMikhail Burakov <mburakov@mailbox.org>2023-04-12 07:06:36 +0200
commit71c1a8a02a3f33d1e49d8c6cf0a4b23016b63bc0 (patch)
tree07e73e39ffa2e92ad60968f029def493ae82069b
parent1a0b2f25fa4a3ba6ff13287a68dd43fa9ea3e776 (diff)
Minor cleanup in frame encoding
-rw-r--r--encode.c38
1 files changed, 18 insertions, 20 deletions
diff --git a/encode.c b/encode.c
index 00fdaf2..09c03ad 100644
--- a/encode.c
+++ b/encode.c
@@ -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: