On Mon, Apr 18, 2016 at 4:25 AM, Anton Khirnov <[email protected]> wrote: > It is very fragile against fields being moved and hides what is actually > being copied. Copy all the fields explicitly instead. > --- > libavcodec/h264_slice.c | 22 ++++++++++++++++------ > 1 file changed, 16 insertions(+), 6 deletions(-) > > diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c > index 5cbfee1..514da20 100644 > --- a/libavcodec/h264_slice.c > +++ b/libavcodec/h264_slice.c > @@ -304,10 +304,6 @@ static void copy_picture_range(H264Picture **to, > H264Picture **from, int count, > } > } > > -#define copy_fields(to, from, start_field, end_field) \ > - memcpy(&to->start_field, &from->start_field, \ > - (char *)&to->end_field - (char *)&to->start_field) > - > static int h264_slice_header_init(H264Context *h); > > int ff_h264_update_thread_context(AVCodecContext *dst, > @@ -408,8 +404,22 @@ int ff_h264_update_thread_context(AVCodecContext *dst, > h->is_avc = h1->is_avc; > h->nal_length_size = h1->nal_length_size; > > - // POC timing > - copy_fields(h, h1, poc, current_slice); > + memcpy(&h->poc, &h1->poc, sizeof(h->poc)); > + memcpy(h->short_ref, h1->short_ref, sizeof(h->short_ref)); > + memcpy(h->long_ref, h1->long_ref, sizeof(h->long_ref)); > + memcpy(h->delayed_pic, h1->delayed_pic, sizeof(h->delayed_pic)); > + memcpy(h->last_pocs, h1->last_pocs, sizeof(h->last_pocs)); > + > + h->curr_pic_num = h1->curr_pic_num; > + h->max_pic_num = h1->max_pic_num; > + h->next_output_pic = h1->next_output_pic; > + h->next_outputed_poc = h1->next_outputed_poc; > + > + memcpy(h->mmco, h1->mmco, sizeof(h->mmco)); > + h->mmco_index = h1->mmco_index; > + h->mmco_reset = h1->mmco_reset; > + h->long_ref_count = h1->long_ref_count; > + h->short_ref_count = h1->short_ref_count; > > copy_picture_range(h->short_ref, h1->short_ref, 32, h, h1); > copy_picture_range(h->long_ref, h1->long_ref, 32, h, h1); > --
sure -- Vittorio _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
