20/2/20 11:49 pm, Paul B Mahol пишет:
> 
> On 2/20/20, Zane van Iperen <z...@zanevaniperen.com> wrote:
>> Adds support for the ADPCM variant used in Rayman 2's files.
>>

>> +    case AV_CODEC_ID_ADPCM_IMA_APM:
>> +        for (n = nb_samples / 2; n > 0; n--) {
>> +            for (channel = 0; channel < avctx->channels; channel++) {
>> +                int v = bytestream2_get_byteu(&gb);
>> +                *samples++  =
>> adpcm_ima_qt_expand_nibble(&c->status[channel], v >> 4  , 3);
>> +                samples[st] =
>> adpcm_ima_qt_expand_nibble(&c->status[channel], v & 0x0F, 3);
> 
> This looks wrong. You increase samples twice, above and down bellow.
>
> Also, codec looks same as SSI just with optional extradata?

It's right. The channels are interleaved per-byte, not per-nibble as in SSI.
If you look underneath AV_CODEC_ID_ADPCM_IMA_WS, you'll see a similar 
construction.

In the v2 of this patch, I was doing this:

for (channel = 0; bytestream2_get_bytes_left(&gb) > 0;) {
        int v = bytestream2_get_byteu(&gb);
        *samples_p[channel]++ = adpcm_ima_qt_expand_nibble(&c->status[channel], 
v >> 4, 3);
        *samples_p[channel]++ = adpcm_ima_qt_expand_nibble(&c->status[channel], 
v & 0x0F, 3);
        channel = (channel + 1) % avctx->channels;
}

/* Changing samples_p changes the frame itself. Undo any damage. */
for (channel = 0; channel < avctx->channels; channel++)
        samples_p[channel] -= nb_samples;

It's the same thing (except using S16P instead of S16), but I thought the 
IMA_WS version
seemed neater.

Regardless, my test files give the same hashes with both versions:

$ ./ffmpeg -loglevel error -i main\ title.apm -map 0:a -f md5 -
MD5=c6db6dac4372e6413624d20dcdbf33ac

$ ./ffmpeg -loglevel error -i outro1.apm -map 0:a -f md5 -
MD5=a5cb56a035ab4b79adceba6fe4a428d2

If you think the v2 form is better, simply disregard v3. This is the only 
difference
between them.


>> +            }
>> +            samples += avctx->channels;
>> +        }
>> +        break;
>>       case AV_CODEC_ID_ADPCM_IMA_OKI:


Zane


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to