[FFmpeg-devel] [PATCH] Respect payload offset in av_packet_ref

Hendrik Leppkes h.leppkes at gmail.com
Thu May 12 15:58:05 CEST 2016


On Thu, May 12, 2016 at 3:44 PM, Andriy Lysnevych
<andriy.lysnevych at gmail.com> wrote:
> Details are in the ticket https://trac.ffmpeg.org/ticket/5543
>
> ---
>  libavcodec/avpacket.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c
> index dd8b71e..842d8ba 100644
> --- a/libavcodec/avpacket.c
> +++ b/libavcodec/avpacket.c
> @@ -568,16 +568,18 @@ int av_packet_ref(AVPacket *dst, const AVPacket *src)
>          if (ret < 0)
>              goto fail;
>          memcpy(dst->buf->data, src->data, src->size);
> +        dst->data = dst->buf->data;
>      } else {
>          dst->buf = av_buffer_ref(src->buf);
>          if (!dst->buf) {
>              ret = AVERROR(ENOMEM);
>              goto fail;
>          }
> +        dst->data = dst->buf->data + (src->data - src->buf->data);

av_buffer_ref always returns a clean copy of the source buffer, with
the exact same data buffer.
So, using "dst->data = src->data" is shorter, simpler, and safer.

>      }
>
>      dst->size = src->size;
> -    dst->data = dst->buf->data;
> +
>      return 0;
>  fail:
>      av_packet_free_side_data(dst);
> --


- Hendrik


More information about the ffmpeg-devel mailing list