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

Thomas Volkert silvo at gmx.net
Sat Apr 11 02:02:39 CEST 2015



Am 10.04.2015 um 23:54 schrieb Andrey Utkin:
> 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.
Maybe this is a clearer term:
"This fixes the calculation of the number of needed blocks to make sure 
that ALL pixels are represented by the result."

> 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..9a20cbc 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 = FF_CEIL_RSHIFT(s1->streams[0]->codec->width, 3);
> +    h = FF_CEIL_RSHIFT(s1->streams[0]->codec->height, 3);
>   
>       /* get the pixel format type or fail */
>       if (s1->streams[0]->codec->pix_fmt == AV_PIX_FMT_YUVJ422P ||
LGTM.

BR,
Thomas.


More information about the ffmpeg-devel mailing list