Search code examples
cffmpeglibav

FFMPEG library add padding the plane/frame processed


I am trying to create a filter to be a part of FFMPEG. In the process of creating it I need to create a padding around the frame so the image does not resample, just has the needed width and height. I know this is possible with libswscale/swscale.h, but I have no been able to find any example as to how to do the padding for the plane that is being processed. Example code below:

if (av_frame_is_writable(in)) {
        out = in;
    } else {
        out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
        if (!out) {
            av_frame_free(&in);
            return AVERROR(ENOMEM);
        }
        av_frame_copy_props(out, in);
    }

    for (p = 0; p < filter->nb_planes; p++) {
       // did not find any documentation as to 
       //how set those attributes to add padding to the plane
        filter->sws_ctx = sws_getContext(src_w, src_h, src_pix_fmt,
                             dst_w, dst_h, dst_pix_fmt,
                             SWS_BILINEAR, NULL, NULL, NULL);
    }

Solution

  • There is no other way as to do it inside the filter. The funcionality has to be implemented from vf_pad filter.

    Credit: @durandal_1707 from from #ffmpeg IRC