Compression

NAVIGATION
CATEGORIES
REFERRENCE
LINKS
  • JPEG decompression library

    5 answers - 644 bytes - related search similar search Add To My Delicious Add To My Stumble Upon Add To My Google Mark Add To My Facebook Add To My Digg Add To My Reddit

    Hi,
    Can anyone recommend a library for decompressing JPEGs, please? I currently
    use the Independent JPEG Group's library in an application that receieves a
    stream of JPEGs and displays the "video" in a window. I know it's not as
    efficient as it can be, because another application for which I don't have
    the source code decodes and displays the same stream using much less CPU
    time.
    My immediate need is to decompress more quickly in a Windows application,
    but I'll need to decompress and compress within a Linux program and compress
    in Windows.
    TIA
    Graham
  • No.1 | | 975 bytes | |

    hi graham,

    several years ago intel had a quite fast jpeg-dll.
    seems it got integrated into a bigger library in between.
    have a look at

    and

    perhaps its something for you, they mention windows and linux.

    hope it helps,

    carsten neubauer
    http://www.c14sw.de/

    Graham Banks schrieb:
    Hi,

    Can anyone recommend a library for decompressing JPEGs, please? I currently
    use the Independent JPEG Group's library in an application that receieves a
    stream of JPEGs and displays the "video" in a window. I know it's not as
    efficient as it can be, because another application for which I don't have
    the source code decodes and displays the same stream using much less CPU
    time.

    My immediate need is to decompress more quickly in a Windows application,
    but I'll need to decompress and compress within a Linux program and compress
    in Windows.

    TIA

    Graham

  • No.2 | | 1693 bytes | |

    Thanks for your reply, Carsten,

    I've looked at the web-site and it looks as if the optimisations only work
    on certain processors (Intel ones). Since I want to distribute applications
    that can be used on any computer running Windows, I don't think this is the
    solution I'm looking for. So, I'm afraid I'm still looking.

    Graham

    "Carsten Neubauer" <cn@c14sw.dewrote in message
    news:1137075999.539908.93930@
    hi graham,

    several years ago intel had a quite fast jpeg-dll.
    seems it got integrated into a bigger library in between.
    have a look at

    and

    perhaps its something for you, they mention windows and linux.

    hope it helps,

    carsten neubauer
    http://www.c14sw.de/

    Graham Banks schrieb:
    >Hi,
    >>

    >Can anyone recommend a library for decompressing JPEGs, please? I
    >currently
    >use the Independent JPEG Group's library in an application that receieves
    >a
    >stream of JPEGs and displays the "video" in a window. I know it's not as
    >efficient as it can be, because another application for which I don't
    >have
    >the source code decodes and displays the same stream using much less CPU
    >time.
    >>

    >My immediate need is to decompress more quickly in a Windows application,
    >but I'll need to decompress and compress within a Linux program and
    >compress
    >in Windows.
    >>

    >TIA
    >>

    >Graham
    >


  • No.3 | | 768 bytes | |

    Graham Banks wrote:

    Can anyone recommend a library for decompressing JPEGs, please? I currently
    use the Independent JPEG Group's library in an application that receieves a
    stream of JPEGs and displays the "video" in a window. I know it's not as
    efficient as it can be, because another application for which I don't have
    the source code decodes and displays the same stream using much less CPU
    time.

    Have you tried profiling it to see where it spends most of its time?
    ISTR the original IJG sample code spends a fair amount of time
    allocating and deallocating buffers. This could be needlessly time
    consuming if your datastream consists of a series of same size images.

    Regards,
    Martin Brown
  • No.4 | | 880 bytes | |

    Hi Graham,

    Can anyone recommend a library for decompressing JPEGs, please? I currently
    use the Independent JPEG Group's library in an application that receieves a
    stream of JPEGs and displays the "video" in a window. I know it's not as
    efficient as it can be, because another application for which I don't have
    the source code decodes and displays the same stream using much less CPU
    time.

    My immediate need is to decompress more quickly in a Windows application,
    but I'll need to decompress and compress within a Linux program and compress
    in Windows.

    Another suggestion from my side: You might want to have a look at the
    Pegasus JPEG library (www.jpg.com) if commercial libraries are an issue
    for you. Runs on win32, Linux, AMD and intel, and is really pretty fast.

    So long,
    Thomas

  • No.5 | | 9951 bytes | |

    Thanks Martin,

    I've done a profile and the memory management functions come way down the
    list of clock-cycle chompers (profiling output appended)

    Graham

    Func Func+Child Hit
    Time % Time % Count Function

    10442.943 19.9 20252.594 38.6 563904 _decode_mcu (jdhuff.obj)
    9750.138 18.6 9750.138 18.6 1551191 _jpeg_fill_bit_buffer
    (jdhuff.obj)
    9718.087 18.5 39403.881 75.0 12816 _decompress_onepass
    (jdcoefct.obj)
    9057.468 17.2 9057.468 17.2 2255616 _jpeg_idct_islow
    (jidctint.obj)
    6108.755 11.6 52524.136 100.0 1
    CGizzyWatchApp::InitInstance(void) (gizzywatch.obj)
    3389.008 6.5 3389.008 6.5 102528 _ycc_rgb_convert
    (jdcolor.obj)
    1413.135 2.7 1413.135 2.7 205056 _h2v1_fancy_upsample
    (jdsample.obj)
    1246.339 2.4 45623.013 86.9 178 _CompleteDecode (jpgif.obj)
    421.270 0.8 421.270 0.8 39 StretchBitmap(struct HDC__
    *,int,int) (gizzywatch.obj)
    373.792 0.7 373.792 0.7 563904 _jzero_far (jutils.obj)
    167.768 0.3 45971.924 87.5 93
    ReadAndProcessNetworkInput(void) (gizzywatch.obj)
    89.594 0.2 45790.670 87.2 178 DisplayImage(void)
    (gizzywatch.obj)
    77.316 0.1 4897.799 9.3 102528 _sep_upsample (jdsample.obj)
    59.512 0.1 65.152 0.1 162468 _jpeg_huff_decode
    (jdhuff.obj)
    35.180 0.1 44371.415 84.5 102528 _jpeg_read_scanlines
    (jdapistd.obj)
    34.554 0.1 44336.234 84.4 102528 _process_data_simple_main
    (jdmainct.obj)
    18.339 0.0 18.339 0.0 102528 _fullsize_upsample
    (jdsample.obj)
    13.486 0.0 45804.156 87.2 12822 ProcessProcessingBuffer(void)
    (gizzywatch.obj)
    12.023 0.0 12.023 0.0 178 _jpeg_mem_init (jmemnobs.obj)
    11.695 0.0 11.852 0.0 1068 _jpeg_make_d_derived_tbl
    (jdhuff.obj)
    10.426 0.0 23.140 0.0 178 _jinit_memory_mgr
    (jmemmgr.obj)
    10.271 0.0 46403.785 88.3 159 WndProcPiccy(struct HWND__
    *,unsigned int,unsigned int,long) (gizzywatch.obj)
    4.437 0.0 4.438 0.0 1 ConnectAlarmsSocket(void)
    (gizzywatch.obj)
    4.365 0.0 4.513 0.0 178 _build_ycc_rgb_table
    (jdcolor.obj)
    4.092 0.0 5.861 0.0 712 _get_dht (jdmarker.obj)
    2.921 0.0 4.722 0.0 6586 _alloc_small (jmemmgr.obj)
    2.712 0.0 2.712 0.0 1068 _jpeg_free_large
    (jmemnobs.obj)
    2.492 0.0 2.492 0.0 534 _jpeg_get_small
    (jmemnobs.obj)
    2.444 0.0 6.882 0.0 1
    CGizzyWatchDlg::InitDialog(void) (gizzywatchdlg.obj)
    2.171 0.0 2.171 0.0 1068 _jpeg_get_large
    (jmemnobs.obj)
    2.068 0.0 2.349 0.0 356 _get_dqt (jdmarker.obj)
    1.913 0.0 1.913 0.0 12816 _start_iMCU_row
    (jdcoefct.obj)
    1.886 0.0 1.886 0.0 1 CGizzyWatchDlg::Close(void)
    (gizzywatchdlg.obj)
    1.586 0.0 4.263 0.0 890 _alloc_sarray (jmemmgr.obj)
    1.567 0.0 14.529 0.0 356 _read_markers (jdmarker.obj)
    1.357 0.0 1.945 0.0 2
    CGizzyWatchDlg::Radiocamera1(void) (gizzywatchdlg.obj)
    1.357 0.0 1.945 0.0 2
    CGizzyWatchDlg::Radiocamera2(void) (gizzywatchdlg.obj)
    1.357 0.0 1.945 0.0 2
    CGizzyWatchDlg::Radiocamera3(void) (gizzywatchdlg.obj)
    1.357 0.0 1.945 0.0 2
    CGizzyWatchDlg::Radiocamera4(void) (gizzywatchdlg.obj)
    1.278 0.0 1.760 0.0 178 _jpeg_calc_output_dimensions
    (jdmaster.obj)
    1.264 0.0 1.279 0.0 1 _$E211 (gizzywatch.obj)
    1.260 0.0 1.260 0.0 3738 _jdiv_round_up (jutils.obj)
    1.173 0.0 1.173 0.0 4628 _emit_message (jerror.obj)
    1.079 0.0 1.348 0.0 178 _prepare_range_limit_table
    (jdmaster.obj)
    1.023 0.0 1.023 0.0 1615 _next_marker (jdmarker.obj)
    0.984 0.0 31.212 0.1 178 _master_selection
    (jdmaster.obj)
    0.950 0.0 0.950 0.0 178 _start_pass (jddctmgr.obj)
    0.937 0.0 1.191 0.0 178 _jinit_inverse_dct
    (jddctmgr.obj)
    0.867 0.0 1.273 0.0 712 _jpeg_alloc_huff_table
    (jcomapi.obj)
    0.776 0.0 1.560 0.0 178 _initial_setup (jdinput.obj)
    0.760 0.0 78.064 0.1 178 _StartDecode (jpgif.obj)
    0.741 0.0 0.940 0.0 178 _get_sos (jdmarker.obj)
    0.730 0.0 2.025 0.0 178 _get_sof (jdmarker.obj)
    0.723 0.0 2.278 0.0 178 _prepare_for_output_pass
    (jdmaster.obj)
    0.715 0.0 12.567 0.0 178 _start_pass_huff_decoder
    (jdhuff.obj)
    0.692 0.0 25.790 0.0 178 _jpeg_CreateDecompress
    (jdapimin.obj)
    0.648 0.0 2.620 0.0 178 _jinit_upsampler
    (jdsample.obj)
    0.619 0.0 0.619 0.0 1
    CGizzyWatchDlg::CGizzyWatchDlg(class CWnd *) (gizzywatchdlg.obj)
    0.587 0.0 0.587 0.0 1 Disconnect(void)
    (gizzywatch.obj)
    0.554 0.0 2.725 0.0 1068 _alloc_large (jmemmgr.obj)
    0.548 0.0 3.620 0.0 534 _free_pool (jmemmgr.obj)
    0.541 0.0 0.603 0.0 178 _latch_quant_tables
    (jdinput.obj)
    0.528 0.0 0.528 0.0 534 _jpeg_free_small
    (jmemnobs.obj)
    0.483 0.0 16.954 0.0 178 _jpeg_consume_input
    (jdapimin.obj)
    0.483 0.0 16.571 0.0 356 _consume_markers
    (jdinput.obj)
    0.479 0.0 2.756 0.0 178 _output_pass_setup
    (jdapistd.obj)
    0.409 0.0 1.663 0.0 178 _jinit_marker_reader
    (jdmarker.obj)
    0.386 0.0 0.462 0.0 178 _per_scan_setup (jdinput.obj)
    0.337 0.0 4.605 0.0 178 _jpeg_finish_decompress
    (jdapimin.obj)
    0.325 0.0 0.889 0.0 178 _jinit_d_coef_controller
    (jdcoefct.obj)
    0.323 0.0 4.872 0.0 178 _jinit_color_deconverter
    (jdcolor.obj)
    0.321 0.0 0.321 0.0 356 _use_merged_upsample
    (jdmaster.obj)
    0.293 0.0 0.293 0.0 178 _default_decompress_parms
    (jdapimin.obj)
    0.265 0.0 2.988 0.0 178 _jinit_d_main_controller
    (jdmainct.obj)
    0.242 0.0 0.296 0.0 178 _jinit_input_controller
    (jdinput.obj)
    0.207 0.0 0.207 0.0 178 _start_output_pass
    (jdcoefct.obj)
    0.205 0.0 13.918 0.0 178 _start_input_pass
    (jdinput.obj)
    0.193 0.0 0.193 0.0 178 _first_marker (jdmarker.obj)
    0.192 0.0 34.305 0.1 178 _jpeg_start_decompress
    (jdapistd.obj)
    0.185 0.0 0.185 0.0 500
    CGizzyWatchDlg::GetMessageMap(void) (gizzywatchdlg.obj)
    0.179 0.0 0.179 0.0 178 _realize_virt_arrays
    (jmemmgr.obj)
    0.173 0.0 0.203 0.0 2 SendThePatrolRequest(void)
    (gizzywatch.obj)
    0.164 0.0 0.164 0.0 178 _start_pass_dpost
    (jdpostct.obj)
    0.159 0.0 0.215 0.0 178 _get_soi (jdmarker.obj)
    0.149 0.0 0.218 0.0 178 _skip_variable (jdmarker.obj)
    0.135 0.0 0.239 0.0 178 _reset_input_controller
    (jdinput.obj)
    0.135 0.0 0.135 0.0 178 _jpeg_std_error (jerror.obj)
    0.132 0.0 0.212 0.0 356 _jpeg_alloc_quant_table
    (jcomapi.obj)
    0.122 0.0 0.122 0.0 178 _start_pass_main
    (jdmainct.obj)
    0.120 0.0 17.074 0.0 178 _jpeg_read_header
    (jdapimin.obj)
    0.112 0.0 3.437 0.0 178 _jpeg_abort (jcomapi.obj)
    0.101 0.0 0.101 0.0 356 _reset_marker_reader
    (jdmarker.obj)
    0.100 0.0 31.356 0.1 178 _jinit_master_decompress
    (jdmaster.obj)
    0.097 0.0 0.097 0.0 1 SendTheAlarmsRequest(void)
    (gizzywatch.obj)
    0.089 0.0 0.089 0.0 356 _jround_up (jutils.obj)
    0.081 0.0 0.113 0.0 178 _jinit_huff_decoder
    (jdhuff.obj)
    0.079 0.0 0.111 0.0 178 _jinit_d_post_controller
    (jdpostct.obj)
    0.077 0.0 0.077 0.0 178 _reset_error_mgr (jerror.obj)
    0.077 0.0 0.077 0.0 178 _finish_input_pass
    (jdinput.obj)
    0.073 0.0 0.073 0.0 178 _start_pass_dcolor
    (jdcolor.obj)
    0.070 0.0 0.070 0.0 178 _finish_output_pass
    (jdmaster.obj)
    0.070 0.0 0.654 0.0 178 _jpeg_destroy_decompress
    (jdapimin.obj)
    0.070 0.0 0.070 0.0 178 _term_source (jpgif.obj)
    0.059 0.0 0.059 0.0 178 _init_source (jpgif.obj)
    0.055 0.0 0.584 0.0 178 _jpeg_destroy (jcomapi.obj)
    0.047 0.0 1.934 0.0 1
    CGizzyWatchDlg::SysCommand(unsigned int,long) (gizzywatchdlg.obj)
    0.045 0.0 0.529 0.0 178 _self_destruct (jmemmgr.obj)
    0.041 0.0 0.041 0.0 178 _skip_input_data (jpgif.obj)
    0.038 0.0 0.038 0.0 178 _start_pass_upsample
    (jdsample.obj)
    0.035 0.0 0.035 0.0 1 _$E213 (gizzywatch.obj)
    0.032 0.0 0.081 0.0 178 _start_input_pass
    (jdcoefct.obj)
    0.029 0.0 0.029 0.0 1 _$E218 (gizzywatch.obj)
    0.029 0.0 0.029 0.0 2 CameraSelected(void)
    (gizzywatch.obj)
    0.028 0.0 0.028 0.0 1 CGizzyWatchDlg::Paint(void)
    (gizzywatchdlg.obj)
    0.022 0.0 0.022 0.0 42 IsConnected(void)
    (gizzywatch.obj)
    0.021 0.0 0.021 0.0 178 _jpeg_mem_term (jmemnobs.obj)
    0.015 0.0 0.015 0.0 1 _$E208 (gizzywatch.obj)
    0.009 0.0 0.038 0.0 1 _$E221 (gizzywatch.obj)
    0.006 0.0 0.006 0.0 1 _$E219 (gizzywatch.obj)
    0.003 0.0 0.003 0.0 5
    CGizzyWatchApp::GetMessageMap(void) (gizzywatch.obj)
    0.003 0.0 0.003 0.0 1 _$E214 (gizzywatch.obj)
    0.001 0.0 0.037 0.0 1 _$E216 (gizzywatch.obj)
    0.001 0.0 0.001 0.0 1 _$E209 (gizzywatch.obj)
    0.001 0.0 0.001 0.0 1 AlarmsSocketIsConnected(void)
    (gizzywatch.obj)
    0.001 0.0 0.001 0.0 2
    InitialiseProcessingBuffer(void) (gizzywatch.obj)
    0.000 0.0 0.000 0.0 1
    CAboutDlg::DoDataExchange(class CDataExchange *) (gizzywatchdlg.obj)
    0.000 0.0 0.000 0.0 1
    CGizzyWatchApp::CGizzyWatchApp(void) (gizzywatch.obj)
    0.000 0.0 0.000 0.0 1
    CGizzyWatchApp::~CGizzyWatchApp(void) (gizzywatch.obj)
    0.000 0.0 0.000 0.0 1
    CGizzyWatchDlg::DoDataExchange(class CDataExchange *) (gizzywatchdlg.obj)
    0.000 0.0 0.000 0.0 2
    CGizzyWatchDlg::Cmdconnect(void) (gizzywatchdlg.obj)
    0.000 0.0 0.000 0.0 1 _$E210 (gizzywatch.obj)
    0.000 0.0 0.000 0.0 1 _$E215 (gizzywatch.obj)
    0.000 0.0 0.000 0.0 1 _$E220 (gizzywatch.obj)

    "Martin Brown" <|||newspam|||@nezumi.demon.co.ukwrote in message
    news:dq6133$cnl$1@news7.svr.pol.co.uk
    Graham Banks wrote:
    >
    >Can anyone recommend a library for decompressing JPEGs, please? I
    >currently use the Independent JPEG Group's library in an application that
    >receieves a stream of JPEGs and displays the "video" in a window. I know
    >it's not as efficient as it can be, because another application for which
    >I don't have the source code decodes and displays the same stream using
    >much less CPU time.
    >

    Have you tried profiling it to see where it spends most of its time? ISTR
    the original IJG sample code spends a fair amount of time allocating and
    deallocating buffers. This could be needlessly time consuming if your
    datastream consists of a series of same size images.

    Regards,
    Martin Brown

Re: JPEG decompression library


max 4000 letters.
Your nickname that display:
In order to stop the spam: 7 + 6 =
QUESTION ON "Compression"

EMSDN.COM