On Thu, May 12, 2016 at 3:44 PM, Andriy Lysnevych
<andriy.lysnev...@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
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to