MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / vaapi_encode_output

Function vaapi_encode_output

libavcodec/vaapi_encode.c:769–815  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

767}
768
769static int vaapi_encode_output(AVCodecContext *avctx,
770 FFHWBaseEncodePicture *base_pic, AVPacket *pkt)
771{
772 FFHWBaseEncodeContext *base_ctx = avctx->priv_data;
773 VAAPIEncodeContext *ctx = avctx->priv_data;
774 VAAPIEncodePicture *pic = base_pic->priv;
775 AVPacket *pkt_ptr = pkt;
776 int err;
777
778 err = vaapi_encode_wait(avctx, base_pic);
779 if (err < 0)
780 return err;
781
782 if (pic->non_independent_frame) {
783 av_assert0(!ctx->coded_buffer_ref);
784 ctx->coded_buffer_ref = av_refstruct_ref(pic->output_buffer_ref);
785
786 if (pic->tail_size) {
787 if (base_ctx->tail_pkt->size) {
788 err = AVERROR_BUG;
789 goto end;
790 }
791
792 err = ff_get_encode_buffer(avctx, base_ctx->tail_pkt, pic->tail_size, 0);
793 if (err < 0)
794 goto end;
795
796 memcpy(base_ctx->tail_pkt->data, pic->tail_data, pic->tail_size);
797 pkt_ptr = base_ctx->tail_pkt;
798 }
799 } else {
800 err = vaapi_encode_get_coded_data(avctx, pic, pkt);
801 if (err < 0)
802 goto end;
803 }
804
805 av_log(avctx, AV_LOG_DEBUG, "Output read for pic %"PRId64"/%"PRId64".\n",
806 base_pic->display_order, base_pic->encode_order);
807
808 ff_hw_base_encode_set_output_property(base_ctx, avctx, (FFHWBaseEncodePicture*)base_pic, pkt_ptr,
809 ctx->codec->flags & FLAG_TIMESTAMP_NO_DELAY);
810
811end:
812 av_refstruct_unref(&pic->output_buffer_ref);
813 pic->output_buffer = VA_INVALID_ID;
814 return err;
815}
816
817static int vaapi_encode_discard(AVCodecContext *avctx, FFHWBaseEncodePicture *base_pic)
818{

Callers

nothing calls this directly

Calls 7

vaapi_encode_waitFunction · 0.85
av_refstruct_refFunction · 0.85
ff_get_encode_bufferFunction · 0.85
av_logFunction · 0.85
av_refstruct_unrefFunction · 0.85

Tested by

no test coverage detected