[FFmpeg-devel] [PATCH] rtpenc_jpeg: handle case of picture dimensions not dividing by 8

Andrey Utkin andrey.krieger.utkin at gmail.com
Fri Apr 10 22:57:03 CEST 2015


If width or height doesn't divide by 8, there are non-full blocks with
the remaining of pixels; but before this commit, RTP encoding procedure
assumed there's just w/8 by h/8 blocks.

Signed-off-by: Andrey Utkin <andrey.krieger.utkin at gmail.com>
---
 libavformat/rtpenc_jpeg.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavformat/rtpenc_jpeg.c b/libavformat/rtpenc_jpeg.c
index c353329..a6f454b 100644
--- a/libavformat/rtpenc_jpeg.c
+++ b/libavformat/rtpenc_jpeg.c
@@ -40,8 +40,8 @@ void ff_rtp_send_jpeg(AVFormatContext *s1, const uint8_t *buf, int size)
     s->timestamp = s->cur_timestamp;
 
     /* convert video pixel dimensions from pixels to blocks */
-    w = s1->streams[0]->codec->width  >> 3;
-    h = s1->streams[0]->codec->height >> 3;
+    w = (s1->streams[0]->codec->width  >> 3) + (s1->streams[0]->codec->width  % 7 ? 1 : 0);
+    h = (s1->streams[0]->codec->height >> 3) + (s1->streams[0]->codec->height % 7 ? 1 : 0);
 
     /* get the pixel format type or fail */
     if (s1->streams[0]->codec->pix_fmt == AV_PIX_FMT_YUVJ422P ||
-- 
2.2.0



More information about the ffmpeg-devel mailing list