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

Function av_frame_make_writable

libavutil/frame.c:552–597  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

550}
551
552int av_frame_make_writable(AVFrame *frame)
553{
554 AVFrame tmp;
555 int ret;
556
557 if (av_frame_is_writable(frame))
558 return 0;
559
560 memset(&tmp, 0, sizeof(tmp));
561 tmp.format = frame->format;
562 tmp.width = frame->width;
563 tmp.height = frame->height;
564 tmp.nb_samples = frame->nb_samples;
565 ret = av_channel_layout_copy(&tmp.ch_layout, &frame->ch_layout);
566 if (ret < 0) {
567 av_frame_unref(&tmp);
568 return ret;
569 }
570
571 if (frame->hw_frames_ctx)
572 ret = av_hwframe_get_buffer(frame->hw_frames_ctx, &tmp, 0);
573 else
574 ret = av_frame_get_buffer(&tmp, 0);
575 if (ret < 0)
576 return ret;
577
578 ret = av_frame_copy(&tmp, frame);
579 if (ret < 0) {
580 av_frame_unref(&tmp);
581 return ret;
582 }
583
584 ret = av_frame_copy_props(&tmp, frame);
585 if (ret < 0) {
586 av_frame_unref(&tmp);
587 return ret;
588 }
589
590 av_frame_unref(frame);
591
592 *frame = tmp;
593 if (tmp.data == tmp.extended_data)
594 frame->extended_data = frame->data;
595
596 return 0;
597}
598
599int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
600{

Callers 7

nvdec_retrieve_dataFunction · 0.85
X264_frameFunction · 0.85
run_testFunction · 0.85
mainFunction · 0.85
write_audio_frameFunction · 0.85
get_video_frameFunction · 0.85
mainFunction · 0.85

Calls 7

av_frame_is_writableFunction · 0.85
av_channel_layout_copyFunction · 0.85
av_frame_unrefFunction · 0.85
av_hwframe_get_bufferFunction · 0.85
av_frame_get_bufferFunction · 0.85
av_frame_copyFunction · 0.85
av_frame_copy_propsFunction · 0.85

Tested by 1

run_testFunction · 0.68