diff --git a/encode/svctenc.c b/encode/svctenc.c index 605f3ed..24a0b19 100644 --- a/encode/svctenc.c +++ b/encode/svctenc.c @@ -2549,19 +2549,19 @@ svcenc_store_coded_buffer(struct svcenc_context *ctx, va_status = vaMapBuffer(ctx->va_dpy, ctx->codedbuf_buf_id, (void **)(&coded_buffer_segment)); CHECK_VASTATUS(va_status, "vaMapBuffer"); - coded_mem = coded_buffer_segment->buf; - - if (coded_buffer_segment->status & VA_CODED_BUF_STATUS_SLICE_OVERFLOW_MASK) { - /* Fatal error !!! */ - assert(0); + while (coded_buffer_segment != NULL) { + coded_mem = coded_buffer_segment->buf; + if (coded_buffer_segment->status & VA_CODED_BUF_STATUS_SLICE_OVERFLOW_MASK) { + /* Fatal error !!! */ + assert(0); + } + slice_data_length = coded_buffer_segment->size; + do { + w_items = fwrite(coded_mem, slice_data_length, 1, ctx->ofp); + } while (w_items != 1); + coded_buffer_segment = (VACodedBufferSegment *) coded_buffer_segment->next; } - slice_data_length = coded_buffer_segment->size; - - do { - w_items = fwrite(coded_mem, slice_data_length, 1, ctx->ofp); - } while (w_items != 1); - vaUnmapBuffer(ctx->va_dpy, ctx->codedbuf_buf_id); return 0;