"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "libavcodec/h264_slice.c" between
libav-12.tar.gz and libav-12.1.tar.gz

About: libav provides cross-platform tools ("avconv") and libraries to convert, manipulate and stream a wide range of multimedia (audio and video) formats and protocols.

h264_slice.c  (libav-12):h264_slice.c  (libav-12.1)
skipping to change at line 1407 skipping to change at line 1407
* FIXME: Avoiding a memcpy would be nice, but ref handling makes * FIXME: Avoiding a memcpy would be nice, but ref handling makes
* many assumptions about there being no actual duplicates. * many assumptions about there being no actual duplicates.
* FIXME: This does not copy padding for out-of-frame motion * FIXME: This does not copy padding for out-of-frame motion
* vectors. Given we are concealing a lost frame, this probably * vectors. Given we are concealing a lost frame, this probably
* is not noticeable by comparison, but it should be fixed. */ * is not noticeable by comparison, but it should be fixed. */
if (h->short_ref_count) { if (h->short_ref_count) {
if (prev && if (prev &&
h->short_ref[0]->f->width == prev->f->width && h->short_ref[0]->f->width == prev->f->width &&
h->short_ref[0]->f->height == prev->f->height && h->short_ref[0]->f->height == prev->f->height &&
h->short_ref[0]->f->format == prev->f->format) { h->short_ref[0]->f->format == prev->f->format) {
ff_thread_await_progress(&prev->tf, INT_MAX, 0);
if (prev->field_picture)
ff_thread_await_progress(&prev->tf, INT_MAX, 1);
av_image_copy(h->short_ref[0]->f->data, av_image_copy(h->short_ref[0]->f->data,
h->short_ref[0]->f->linesize, h->short_ref[0]->f->linesize,
(const uint8_t **)prev->f->data, (const uint8_t **)prev->f->data,
prev->f->linesize, prev->f->linesize,
prev->f->format, prev->f->format,
h->mb_width * 16, h->mb_width * 16,
h->mb_height * 16); h->mb_height * 16);
h->short_ref[0]->poc = prev->poc + 2; h->short_ref[0]->poc = prev->poc + 2;
} }
h->short_ref[0]->frame_num = h->poc.prev_frame_num; h->short_ref[0]->frame_num = h->poc.prev_frame_num;
skipping to change at line 1884 skipping to change at line 1887
ret = ff_h264_execute_decode_slices(h); ret = ff_h264_execute_decode_slices(h);
if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE)) if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
return ret; return ret;
memcpy(&tmp_ctx, h->slice_ctx, sizeof(tmp_ctx)); memcpy(&tmp_ctx, h->slice_ctx, sizeof(tmp_ctx));
memcpy(h->slice_ctx, sl, sizeof(tmp_ctx)); memcpy(h->slice_ctx, sl, sizeof(tmp_ctx));
memcpy(sl, &tmp_ctx, sizeof(tmp_ctx)); memcpy(sl, &tmp_ctx, sizeof(tmp_ctx));
sl = h->slice_ctx; sl = h->slice_ctx;
} }
if (h->current_slice && h->cur_pic_ptr && FIELD_PICTURE(h)) { if (h->field_started)
ff_h264_field_end(h, sl, 1); ff_h264_field_end(h, sl, 1);
}
h->current_slice = 0; h->current_slice = 0;
if (!h->first_field) { if (!h->first_field) {
if (h->cur_pic_ptr && !h->droppable) { if (h->cur_pic_ptr && !h->droppable) {
ff_thread_report_progress(&h->cur_pic_ptr->tf, INT_MAX, ff_thread_report_progress(&h->cur_pic_ptr->tf, INT_MAX,
h->picture_structure == PICT_BOTTO M_FIELD); h->picture_structure == PICT_BOTTO M_FIELD);
} }
h->cur_pic_ptr = NULL; h->cur_pic_ptr = NULL;
} }
} }
if (h->current_slice == 0) { if (h->current_slice == 0) {
ret = h264_field_start(h, sl, nal); ret = h264_field_start(h, sl, nal);
if (ret < 0) if (ret < 0)
return ret; return ret;
h->field_started = 1;
} }
} }
ret = h264_slice_init(h, sl, nal); ret = h264_slice_init(h, sl, nal);
if (ret < 0) if (ret < 0)
return ret; return ret;
if ((h->avctx->skip_frame < AVDISCARD_NONREF || nal->ref_idc) && if ((h->avctx->skip_frame < AVDISCARD_NONREF || nal->ref_idc) &&
(h->avctx->skip_frame < AVDISCARD_BIDIR || (h->avctx->skip_frame < AVDISCARD_BIDIR ||
sl->slice_type_nos != AV_PICTURE_TYPE_B) && sl->slice_type_nos != AV_PICTURE_TYPE_B) &&
 End of changes. 4 change blocks. 
2 lines changed or deleted 5 lines changed or added

Home  |  About  |  All  |  Newest  |  Fossies Dox  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTPS