Mostly for my own experience and curiosity, I am trying to investigate formats of files and data to get a good enough understanding of them to output files that can be recognized by corresponding programs.
For example, by finding specifications of their structures online, I have been able to write fairly simple programs to produce files with uncompressed contents, in the format of WAV for audio, BMP for images, and Y4M for moving picture. I have also been able to gather enough information from the Internet to write a Python program that can compress and encode an RGB image to a JPEG.
I do not expect to be able to implement an encoder for especially efficient or compact formats, or write a better implementation that what already exists, but what options, if any, are there, for audio codecs that can store data in fewer bytes than uncompressed WAV, lossy or lossless, for which complete enough documentation is available that I can write a simple encoder to experiment with the process.
From my search so far, for most codecs, the documentation is incomplete at best. For example, the documentation on FLAC states there are four encoding modes for each subframe: constant, verbatim, fixed, and LPC. LPC is stated to use up to a 32nd order FIR filter for prediction, though I cannot glean from the provided information how the coefficients for them are determined, nor exactly how residuals are coded with Rice coding. For this or any other format, is there some kind of resource with examples of individual steps/aspects of the encoding process that I can look at?
Simple compressed audio encoder for experimenting
406 Views Asked by user2649681 At
1
There are 1 best solutions below
Related Questions in ENCODING
- When sanitize/encode while implementing tags system like on SO
- Generating synthetic data for .ORC file in python
- WebClient.UploadData is returning control characters after non-ascii characters
- How to switch encoding of LibreOffice strings in Java UNO API?
- Userform to answer original userform
- Encoding problem on MySQL: Why some non-ASCII characters get encoded on more than 4 bytes?
- What encoding does the 'text' response type option in HttpClient use?
- Issue downloading audio with ytdlp on a raspberry pi
- KeyError: "['Building Age', 'Floor', 'Number of Floors'] not in index"
- FFMPEG fast quality video encoding without quality loss & less storage occupancy (maybe using GPU)
- Encoding attributes in an Genetic Algorithm
- React - MP4 - The file was loaded in a wrong encoding - 'UTF-8'
- How to re-encode an audio to match another one, to avoid re-encoding the whole audio
- Sqlalchemy - PostgreSQL - UnicodeDecodeError
- Calculate difference in encoding WITHOUT actually writing to a file?
Related Questions in COMPRESSION
- Should I compress images in java backend before sending to frontend?
- saving always adds artefacts to my images that photoshop doesn't
- Kafka compression on Broker side
- I am trying to compress video in Android using ffmpeg
- Compress gzip/Deflate string with golang
- how to convert different length of bits into byte array?
- knowledge distillation in a multistep model
- How to decompress the contents of a var to another var?
- Why response body not compressed when use webtestclient?
- How to monkey-patch np.savez_compressed to add compression level, without editing numpy's source files?
- incorrect header check while implementing GZIP in spring boot REST APIs
- Create algorhitm to create .pak file from unpack code
- Problem with decompressing algorithm in firefox (works in chrome/edge)
- Can I ignore some keyword while compressing css file through webpack? In other words I need a loader which just compress my file without validation
- PNG cropping increases file size
Related Questions in CODEC
- Convert AMRWB IO Raw speech data to wav file
- Exoplayer does not play h264 mpeg-4 avc (part 10) codec in Android
- IDT Audio Codec and Driver
- SpringFramework Upgrade is causing MongoDB driver to throw CodecConfigurationException
- Python error: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xdb in position 0: unexpected end of data
- DVR Footage On-Screen Timestamps, how are they 'written' and what could lead to errors in tempo?
- How to set the quality of an mp3 Codec with PyAV
- NAU8822 I2S Codec + ESP32 - no valid data
- Why are the extra codecs causing errors for the Media Source API?
- Audio Codec2 on STM32
- ExopPlayer can not play some m3u8 stream but MX Player / VLC can
- NVIDIA Video Codec Samples giving ffmpeg errors while trying to build
- CQL Datastax Java Mapping Set/List query operations
- How to write low quality video without anti-aliasing?
- Java - How can I find out what codec a video is using
Related Questions in LOSSLESS-COMPRESSION
- How does a decompressor know the huffman tree that was used by the compressor?
- What is the difference between 7-zip Deflate and zlib.compress()?
- Shifting a 1 bit into high and 0 bit into low in arithmetic compression
- Questions about the frequency table in arithmetic encoding compression
- How do I set up CloudLab for a Simple Experiment?
- Compression of Database using FP trees
- Is there any way to to compress large size pdf file using only python library no external .exe
- Compute the compression ratio by using Huffman encoding
- Compute the compression ratio for Huffman algorithm
- CABAC for image compression
- How to normalize overflowed state in range asymmetric numeral systems?
- Does any compression standard uses integer DCT?
- combining two seperate numbers into a single byte and being able to uncombine them later
- Compressing multi-spectral image
- Unknown compression used in block of data, could use some fresh eyes on this
Related Questions in LOSSY-COMPRESSION
- saving always adds artefacts to my images that photoshop doesn't
- The overall size of three images stitched together is greater than the sum of the individual images, why?
- OpenCV setting certain pixels to a color creates shades of the color
- Compute the CR for lightweight temporal compression
- Python PIL Rotate (Image Result Quality)
- JPEG-XL: How many VarDCT implementations are there?
- good compression method or library for time-sequence of float matrix (mp4 for int matrix case though)
- Converting audio files from .wav to mp3 using GNU Parallel
- Lossy Image Compression Metrics
- Simple compressed audio encoder for experimenting
- Determining Lost Image Quality Through Lossy Compression
- How to specify how lossy/lossless a .webm conversion will be (in ffmpeg)?
- Calculate image height using file size and width
- List<Long> to int lossy conversion
- How can I use JPEG Compression algorithm for 1D data (e.g. a line)?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Have you seen the papers linked from the FLAC format specification webpage under prediction?
The paper linked under shorten is quite exhaustive and almost exactly how FLAC uses so called fixed predictors. How rice codes work is explained as well.
As to how the LPC coefficients can be chosen efficiently: this can be done in quite a few ways. libFLAC does this by using the Yule-Walker equations. These equations take the autocorrelation of the signal as input, and after solving the system return LPC coefficients that can predict the signal quite well.
There are other ways to find suitable LPC coefficients. There are a few mentioned here:
It is possible to use regression too.