Referring to the code in jdhuff.c, the slow case will be used if:
(1) There are fewer than cinfo->blocks_in_MCU * 128 bytes in the buffer, or
(2) There is an unread marker from a previous entropy decode (such as a
restart marker), or
(3) The fast case encounters a marker (such as a restart marker)

There is nothing you can do about (2) and (3), but you should be able to
minimize the use of the slow path by ensuring that at least
cinfo->blocks_in_MCU * 128 bytes are in the buffer.  You may not be able
to ensure that at the end of the image, though.

On 6/16/17 11:29 AM, Leon Scroggins via Libjpeg-turbo-devel wrote:
> What is the best way to determine how much data to pass to
> fill_input_buffer? Often we are streaming data, so we need to copy it
> into a buffer before providing it. We've noticed that depending on the
> amount of data in the buffer, libjpeg-turbo will call either call
> decode_mcu_slow or decode_mcu_fast, which can make a difference in
> decoding speed. We can always use a large buffer in order to make us
> more likely to hit the fast case, but we can still hit the slow case
> sometimes. I was wondering if there might be some query we can use to
> determine the ideal amount of data to supply in a given call to
> fill_input_buffer so that we never hit the slow case?
> 
> -- 
> 
>  •  Leon Scroggins
> 
>  • scro...@google.com <mailto:scro...@google.com>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Libjpeg-turbo-devel mailing list
Libjpeg-turbo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libjpeg-turbo-devel

Reply via email to