[FFmpeg-devel] [PATCH] avcodec/dca: add support for 20-bit XLL
Paul B Mahol
onemda at gmail.com
Sat Jan 7 12:09:55 EET 2017
On 1/7/17, foo86 <foobaz86 at gmail.com> wrote:
> Fixes ticket #6063.
> ---
> libavcodec/dca_xll.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/dca_xll.c b/libavcodec/dca_xll.c
> index 1d616c298c..1320aaf28f 100644
> --- a/libavcodec/dca_xll.c
> +++ b/libavcodec/dca_xll.c
> @@ -143,7 +143,7 @@ static int chs_parse_header(DCAXllDecoder *s,
> DCAXllChSet *c, DCAExssAsset *asse
>
> // Storage unit width
> c->storage_bit_res = get_bits(&s->gb, 5) + 1;
> - if (c->storage_bit_res != 16 && c->storage_bit_res != 24) {
> + if (c->storage_bit_res != 16 && c->storage_bit_res != 20 &&
> c->storage_bit_res != 24) {
> avpriv_request_sample(s->avctx, "%d-bit XLL storage resolution",
> c->storage_bit_res);
> return AVERROR_PATCHWELCOME;
> }
> @@ -1415,9 +1415,12 @@ int ff_dca_xll_filter_frame(DCAXllDecoder *s, AVFrame
> *frame)
> switch (p->storage_bit_res) {
> case 16:
> avctx->sample_fmt = AV_SAMPLE_FMT_S16P;
> + shift = 16 - p->pcm_bit_res;
> break;
> + case 20:
> case 24:
> avctx->sample_fmt = AV_SAMPLE_FMT_S32P;
> + shift = 24 - p->pcm_bit_res;
> break;
> default:
> return AVERROR(EINVAL);
> @@ -1438,7 +1441,6 @@ int ff_dca_xll_filter_frame(DCAXllDecoder *s, AVFrame
> *frame)
> s->output_mask);
> }
>
> - shift = p->storage_bit_res - p->pcm_bit_res;
> for (i = 0; i < avctx->channels; i++) {
> int32_t *samples = s->output_samples[ch_remap[i]];
> if (frame->format == AV_SAMPLE_FMT_S16P) {
> --
> 2.11.0
>
> _______________________________________________
> 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