|
|
|
@ -22,7 +22,26 @@ |
|
|
|
|
#include "avutil.h" |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* all in native-endian format |
|
|
|
|
* Audio Sample Formats |
|
|
|
|
* |
|
|
|
|
* @par |
|
|
|
|
* The data described by the sample format is always in native-endian order. |
|
|
|
|
* Sample values can be expressed by native C types, hence the lack of a signed |
|
|
|
|
* 24-bit sample format even though it is a common raw audio data format. |
|
|
|
|
* |
|
|
|
|
* @par |
|
|
|
|
* The floating-point formats are based on full volume being in the range |
|
|
|
|
* [-1.0, 1.0]. Any values outside this range are beyond full volume level. |
|
|
|
|
* |
|
|
|
|
* @par |
|
|
|
|
* The data layout as used in av_samples_fill_arrays() and elsewhere in Libav |
|
|
|
|
* (such as AVFrame in libavcodec) is as follows: |
|
|
|
|
* |
|
|
|
|
* For planar sample formats, each audio channel is in a separate data plane, |
|
|
|
|
* and linesize is the buffer size, in bytes, for a single plane. All data |
|
|
|
|
* planes must be the same size. For packed sample formats, only the first data |
|
|
|
|
* plane is used, and samples for each channel are interleaved. In this case, |
|
|
|
|
* linesize is the buffer size, in bytes, for the 1 plane. |
|
|
|
|
*/ |
|
|
|
|
enum AVSampleFormat { |
|
|
|
|
AV_SAMPLE_FMT_NONE = -1, |
|
|
|
@ -139,6 +158,9 @@ int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, |
|
|
|
|
* buffer for planar layout, or the aligned size of the buffer for all channels |
|
|
|
|
* for packed layout. |
|
|
|
|
* |
|
|
|
|
* @see enum AVSampleFormat |
|
|
|
|
* The documentation for AVSampleFormat describes the data layout. |
|
|
|
|
* |
|
|
|
|
* @param[out] audio_data array to be filled with the pointer for each channel |
|
|
|
|
* @param[out] linesize calculated linesize, may be NULL |
|
|
|
|
* @param buf the pointer to a buffer containing the samples |
|
|
|
@ -157,6 +179,9 @@ int av_samples_fill_arrays(uint8_t **audio_data, int *linesize, uint8_t *buf, |
|
|
|
|
* linesize accordingly. |
|
|
|
|
* The allocated samples buffer can be freed by using av_freep(&audio_data[0]) |
|
|
|
|
* |
|
|
|
|
* @see enum AVSampleFormat |
|
|
|
|
* The documentation for AVSampleFormat describes the data layout. |
|
|
|
|
* |
|
|
|
|
* @param[out] audio_data array to be filled with the pointer for each channel |
|
|
|
|
* @param[out] linesize aligned size for audio buffer(s), may be NULL |
|
|
|
|
* @param nb_channels number of audio channels |
|
|
|
|