summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/cbs_jpeg.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libavcodec/cbs_jpeg.c b/libavcodec/cbs_jpeg.c
index b52e5c5823..6bbce5f89b 100644
--- a/libavcodec/cbs_jpeg.c
+++ b/libavcodec/cbs_jpeg.c
@@ -327,7 +327,7 @@ static int cbs_jpeg_write_scan(CodedBitstreamContext *ctx,
PutBitContext *pbc)
{
JPEGRawScan *scan = unit->content;
- int i, err;
+ int err;
err = cbs_jpeg_write_scan_header(ctx, pbc, &scan->header);
if (err < 0)
@@ -337,8 +337,12 @@ static int cbs_jpeg_write_scan(CodedBitstreamContext *ctx,
if (scan->data_size * 8 > put_bits_left(pbc))
return AVERROR(ENOSPC);
- for (i = 0; i < scan->data_size; i++)
- put_bits(pbc, 8, scan->data[i]);
+ av_assert0(put_bits_count(pbc) % 8 == 0);
+
+ flush_put_bits(pbc);
+
+ memcpy(put_bits_ptr(pbc), scan->data, scan->data_size);
+ skip_put_bytes(pbc, scan->data_size);
}
return 0;