[FFmpeg-devel] [PATCH v1 1/3] avcodec/bitpacked: move ff_get_buffer
Rostislav Pehlivanov
atomnuker at gmail.com
Wed Apr 11 15:45:50 EEST 2018
On 10 April 2018 at 22:21, Patrick Keroulas <
patrick.keroulas at savoirfairelinux.com> wrote:
> From: Damien Riegel <damien.riegel at savoirfairelinux.com>
>
> ff_get_buffer is used to allocate a buffer to hold frame's content. This
> function was called in the function in charge of decoding an AVPacket
> containing raw video with the yuv422 pixel format and a depth of 10-bit.
>
> RFC4175 supports both progressive and interlaced mode. But the
> interlaced mode doesn't consist of interlaced frames, only of fields.
> FFmpeg cannot handle fields on their own, so the codec has to recreate
> interlaced frames based on two consecutive fields.
>
> As the function `bitpacked_decode_yuv422p10` will need to be called
> twice to do that, it cannot be in charge of the buffer allocation, so
> move it into its caller.
>
> Signed-off-by: Damien Riegel <damien.riegel at savoirfairelinux.com>
> ---
> libavcodec/bitpacked.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/libavcodec/bitpacked.c b/libavcodec/bitpacked.c
> index f0b417d..85d4bdd 100644
> --- a/libavcodec/bitpacked.c
> +++ b/libavcodec/bitpacked.c
> @@ -64,9 +64,6 @@ static int bitpacked_decode_yuv422p10(AVCodecContext
> *avctx, AVFrame *frame,
> uint16_t *y, *u, *v;
> int ret, i, j;
>
> - ret = ff_get_buffer(avctx, frame, 0);
> - if (ret < 0)
> - return ret;
>
> if (frame_size > packet_size)
> return AVERROR_INVALIDDATA;
> @@ -128,6 +125,12 @@ static int bitpacked_decode(AVCodecContext *avctx,
> void *data, int *got_frame,
> frame->pict_type = AV_PICTURE_TYPE_I;
> frame->key_frame = 1;
>
> + if (avctx->pix_fmt == AV_PIX_FMT_YUV422P10) {
> + res = ff_get_buffer(avctx, frame, 0);
> + if (res < 0)
> + return res;
> + }
> +
> res = bc->decode(avctx, frame, avpkt);
> if (res)
> return res;
> --
> 2.7.4
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
LGTM, will apply once your interlaced patch is okay.
More information about the ffmpeg-devel
mailing list