[FFmpeg-devel] [PATCH] dsddec: correct for DSD silence bit-ordering
Paul B Mahol
onemda at gmail.com
Fri Mar 31 20:32:41 EEST 2017
On 3/31/17, Takayuki 'January June' Suwa <jjsuwa.sys3175 at gmail.com> wrote:
> ---
> libavcodec/dsddec.c | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/libavcodec/dsddec.c b/libavcodec/dsddec.c
> index 880d691..2c5c357 100644
> --- a/libavcodec/dsddec.c
> +++ b/libavcodec/dsddec.c
> @@ -31,10 +31,18 @@
> #include "avcodec.h"
> #include "dsd.h"
>
> +#define DSD_SILENCE 0x69
> +/* 0x69 = 01101001
> + * This pattern "on repeat" makes a low energy 352.8 kHz tone
> + * and a high energy 1.0584 MHz tone which should be filtered
> + * out completely by any playback system --> silence
> + */
> +
> static av_cold int decode_init(AVCodecContext *avctx)
> {
> DSDContext * s;
> int i;
> + uint8_t silence;
>
> ff_init_dsd_data();
>
> @@ -42,15 +50,10 @@ static av_cold int decode_init(AVCodecContext *avctx)
> if (!s)
> return AVERROR(ENOMEM);
>
> + silence = avctx->codec_id == AV_CODEC_ID_DSD_LSBF || avctx->codec_id ==
> AV_CODEC_ID_DSD_LSBF_PLANAR ? ff_reverse[DSD_SILENCE] : DSD_SILENCE;
> for (i = 0; i < avctx->channels; i++) {
> s[i].pos = 0;
> - memset(s[i].buf, 0x69, sizeof(s[i].buf));
> -
> - /* 0x69 = 01101001
> - * This pattern "on repeat" makes a low energy 352.8 kHz tone
> - * and a high energy 1.0584 MHz tone which should be filtered
> - * out completely by any playback system --> silence
> - */
> + memset(s[i].buf, silence, sizeof(s[i].buf));
> }
>
> avctx->sample_fmt = AV_SAMPLE_FMT_FLTP;
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
lgtm
More information about the ffmpeg-devel
mailing list