MCPcopy Create free account
hub / github.com/AOMediaCodec/libavif / dequeue_frame

Function dequeue_frame

src/codec_svt.c:442–470  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

440}
441
442static avifResult dequeue_frame(avifCodec * codec, avifCodecEncodeOutput * output, avifBool done_sending_pics)
443{
444 EbErrorType res;
445 int encode_at_eos = 0;
446
447 do {
448 EbBufferHeaderType * output_buf = NULL;
449
450 res = svt_av1_enc_get_packet(codec->internal->svt_encoder, &output_buf, (uint8_t)done_sending_pics);
451 if (output_buf != NULL) {
452 encode_at_eos = ((output_buf->flags & EB_BUFFERFLAG_EOS) == EB_BUFFERFLAG_EOS);
453 if (output_buf->p_buffer && (output_buf->n_filled_len > 0)) {
454 const avifResult result = avifCodecEncodeOutputAddSample(output,
455 output_buf->p_buffer,
456 output_buf->n_filled_len,
457 (output_buf->pic_type == EB_AV1_KEY_PICTURE));
458 if (result != AVIF_RESULT_OK) {
459 svt_av1_enc_release_out_buffer(&output_buf);
460 return result;
461 }
462 }
463 svt_av1_enc_release_out_buffer(&output_buf);
464 }
465 output_buf = NULL;
466 } while (res == EB_ErrorNone && !encode_at_eos);
467 if (!done_sending_pics && ((res == EB_ErrorNone) || (res == EB_NoErrorEmptyQueue)))
468 return AVIF_RESULT_OK;
469 return (res == EB_ErrorNone ? AVIF_RESULT_OK : AVIF_RESULT_UNKNOWN_ERROR);
470}

Callers 2

svtCodecEncodeImageFunction · 0.85
svtCodecEncodeFinishFunction · 0.85

Calls 1

Tested by

no test coverage detected