Skip to content

Latest commit

 

History

History
98 lines (82 loc) · 3.82 KB

CONTRIBUTING.md

File metadata and controls

98 lines (82 loc) · 3.82 KB

Contributing to GPUJPEG

First of all, thanks for taking the time to contribute! 👍

GPUJPEG is quite small project but there are few things that you can do to help it to improve. Following section describe how can you help us.

Please note that we have only limited amount of resources so usually feature requests cannot be fulfilled (depends on complexity of the task). But if you want to take the development up, we'd willingly help you.

Table of contents

Testing

Using and thus testing GPUJPEG is the most straightward way of contributing because you may encounter a bug when using the library.

Please keep in mind that encoder should be able always to encode the image. For the decoder, the situation is a bit different because it supports only subset of features, see Compatibility below to see which JPEG files are supported. If the decoder isn't capable to decode a supported file, it should be considered a bug. The decoder must be always capable of decoding the file encoded by GPUJPEG encoder. Even if the file is not supported you may issue a feature request.

Reporting bugs

Primarily, you can open an issue on GitHub. GPUJPEG doesn't have its own mailing list, for a direct contact you can, however, use a mailing list of a sister project, UltraGrid which is tightly personally linked.

Please follow these rules when reporting the issue:

  • use the latest GPUJPEG code from GIT
  • try to reproduce the issue either with the sample console application or provide a minimal working example demonstrating the problem. Use debug verbosity level (for console application option -vv).
  • do not alter GPUJPEG code for the report. If unnecessary, include the GPUJPEG patch in the bug report.
  • provide relevant information to the problem, such as:
    1. actual error description (messages, error codes etc.), ideally including a context
    2. SW/HW environment
    3. compilation options
    4. GPUJPEG parameters
    5. console output of the library/application
    6. image for which the problem occurs

Also please look into FAQ.md to see if the the issue isn't already solved.

Development

Contributing by your own code is definitely highly appreciated. There are several fields that may you consider:

  • adding more JPEG features (primarily to decoder, optionally also to encoder), including these:
    • Huffman extended profile features (eg. higher bit depths)
    • Exif decoder support
    • improving support for planar pixel formats (currently missing preprocessor - cannot use different subsampling than pixfmt and color format transformations)
  • fixes
  • performance improvements

Please note that your changes should not change default behavior or remove features to be accepted unless agreed by GPUJPEG developers.

Feel free to contact us for support or advice.

Compatibility

Following files are produced by the encoder:

  • baseline Huffman JPEG (with default Huffman tables)
  • JFIF 1.01 (YCbCr or grayscale), Adobe (RGB) or SPIFF (limited-range YCbCr BT.601 or BT.709)
  • using restart intervals

The decoder shall be able to decode all following files:

  • baseline Huffman JPEG
  • JFIF up to 1.02, Adobe header (using RGB internally) or SPIFF. Other generic JIF files may be also possible to decode.

Contacting us

You can post your questions, ideas or remarks to our GitHub Discussions.

If you prefer an e-mail contact, you can use a mailing list of our sister project UltraGrid.