Message ID | 20170107092643.27112-1-foobaz86@gmail.com |
---|---|
State | Accepted |
Commit | 000638431ccc206f280d8246855062afe0284f80 |
Headers | show |
On 1/7/17, foo86 <foobaz86@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@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > lgtm
On 1/7/2017 6:26 AM, foo86 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) { I think you still don't have git access, so pushed. Poke Michael with your public key if that's the case and you want it.
On Sat, Jan 07, 2017 at 12:26:43PM +0300, foo86 wrote: > Fixes ticket #6063. > --- > libavcodec/dca_xll.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) I think i suggested it before but You are de facto maintaining dca, you should add yourself in a patch to the MAINTAINERs file for dca [...]
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) {