[FFmpeg-devel] [PATCH] avcodec/avcodec: Document signed/unsignedness of sample formats in relation to bits_per_raw_sample

wm4 nfxjfg at googlemail.com
Fri Apr 15 12:44:15 CEST 2016


On Fri, 15 Apr 2016 00:42:22 +0200
Michael Niedermayer <michael at niedermayer.cc> wrote:

> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>  libavcodec/avcodec.h |    8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index 9e6169f..e5ba9aa 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -3850,8 +3850,12 @@ typedef struct AVCodecParameters {
>       * sample format has more bits, the least significant bits are additional
>       * padding bits, which are always 0. Use right shifts to reduce the sample
>       * to its actual size. For example, audio formats with 24 bit samples will
> -     * have bits_per_raw_sample set to 24, and format set to AV_SAMPLEFMT_S32.
> -     * To get the original sample use "(uint32_t)sample >> 8"."
> +     * have bits_per_raw_sample set to 24, and format set to AV_SAMPLE_FMT_S32.
> +     * To get the original sample use "(int32_t)sample >> 8"."

OK. AFAIK this isn't UB, but implementation defined. But probably fine.

> +     *
> +     * Sample formats that contain a S(num) like AV_SAMPLE_FMT_S32 use signed
> +     * integers, formats that contain a U(num) like AV_SAMPLE_FMT_U8 use unsigned
> +     * integers.

Hm, I don't think that needs to be mentioned here. U8 is the only
unsigned format too. And the doxygen for AVSampleFormat is quite clear.

>       *
>       * For ADPCM this might be 12 or 16 or similar
>       * Can be 0



More information about the ffmpeg-devel mailing list