ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinha...@outlook.com> | Thu Apr 17 07:32:12 2025 +0200| [3a90bbe4b76b8dd3ab630a2505686356aa4733ea] | committer: Andreas Rheinhardt
avcodec/magicyuvenc: Simplify padding slice Do it before writing the actual slice to be able to use a single AV_WN32(). Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3a90bbe4b76b8dd3ab630a2505686356aa4733ea --- libavcodec/magicyuvenc.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/libavcodec/magicyuvenc.c b/libavcodec/magicyuvenc.c index a01cafcec6..067441f00a 100644 --- a/libavcodec/magicyuvenc.c +++ b/libavcodec/magicyuvenc.c @@ -423,14 +423,13 @@ static int encode_table(AVCodecContext *avctx, return 0; } -static void encode_plane_slice_raw(const uint8_t *src, uint8_t *dst, int dst_size, +static void encode_plane_slice_raw(const uint8_t *src, uint8_t *dst, int width, int height, int prediction) { unsigned count = width * height; dst[0] = 1; dst[1] = prediction; - AV_WN32(dst + dst_size - 4, 0); memcpy(dst + 2, src, count); } @@ -439,7 +438,6 @@ static void encode_plane_slice(const uint8_t *src, uint8_t *dst, unsigned dst_si int width, int height, HuffEntry *he, int prediction) { PutBitContext pb; - int count; init_put_bits(&pb, dst, dst_size); @@ -456,13 +454,8 @@ static void encode_plane_slice(const uint8_t *src, uint8_t *dst, unsigned dst_si src += width; } - count = put_bits_count(&pb) & 0x1F; - - if (count) - put_bits(&pb, 32 - count, 0); - flush_put_bits(&pb); - av_assert1(put_bytes_left(&pb, 0) == 0); + av_assert1(put_bytes_left(&pb, 0) <= 3); } static int encode_slice(AVCodecContext *avctx, void *tdata, @@ -473,8 +466,11 @@ static int encode_slice(AVCodecContext *avctx, void *tdata, for (int i = 0; i < s->planes; i++) { Slice *sl = &s->slices[n * s->planes + i]; + // Zero the padding now + AV_WN32(sl->dst + sl->size - 4, 0); + if (sl->encode_raw) - encode_plane_slice_raw(sl->slice, sl->dst, sl->size, + encode_plane_slice_raw(sl->slice, sl->dst, sl->width, sl->height, s->frame_pred); else encode_plane_slice(sl->slice, _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".