[FFmpeg-soc] [Patch] Maxis EA XA decoder - GSoC Task

Robert Marston rmarston at gmail.com
Sun Apr 13 18:38:27 CEST 2008


On Sun, Apr 13, 2008 at 12:41 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
>
> On Sun, Apr 13, 2008 at 11:23:53AM +0200, Robert Marston wrote:
>  > @@ -1235,6 +1237,29 @@
>  >              }
>  >          }
>  >          break;
>  > +    case CODEC_ID_ADPCM_EA_MAXIS_XA:
>
> > +        for(channel = 0; channel < avctx->channels; channel++) {
>  > +            for (i=0; i<2; i++)
>  > +                coeff[channel][i] = ea_adpcm_table[(*src >> 4) + 4*i];
>  > +            shift[channel] = (*src & 0x0F) + 8;
>  > +            src++;
>  > +        }
>
> > +        for (count1 = 0; count1 < ((buf_size - avctx->channels) / avctx->channels) ; count1++) {
>                           ^                                                           ^
>  inconsistant whitespace placement
>
>
>
>  > +            for(i = 4; i >= 0; i-=4) { /* Pairwise samples LL RR (st) or LL LL (mono) */
>
>  > +                int32_t sample;
>  > +                for(channel = 0; channel < avctx->channels; channel++) {
>  > +                    sample = (int32_t)(((*(src+channel) >> i) & 0x0F) << 0x1C) >> shift[channel];
>
>  declaration and initalization can be merged
>
>
>  [...]
>  > +static int xa_read_packet(AVFormatContext *s,
>  > +                          AVPacket *pkt)
>
> > +{
>  > +    MaxisXADemuxContext *xa = s->priv_data;
>  > +    AVStream *st = s->streams[0];
>  > +    ByteIOContext *pb = s->pb;
>  > +    unsigned int packet_size;
>
>  > +    int ret = 0;
>  > +
>  > +    if(xa->sent_bytes > xa->out_size)
>  > +        return AVERROR(EIO);
>  > +    /* 1 byte header and 14 bytes worth of samples * number channels per block */
>  > +    packet_size = 15*st->codec->channels;
>  > +
>  > +    ret = av_get_packet(pb, pkt, packet_size);
>
>  ret is writen to twice but not read between.
>
>
>  > +    pkt->stream_index = st->index;
>  > +
>  > +    xa->sent_bytes += packet_size;
>  > +    pkt->pts = xa->audio_frame_counter;
>
>  > +    /* 14 bytes Samples per channel with 2 samples per byte */
>  > +    xa->audio_frame_counter += (28 * st->codec->channels);
>
>  superflous ()
>

Corrected above issues.

Thanks
Robert
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: maxis_ea_xa_format.txt
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-soc/attachments/20080413/53af5187/attachment.txt>


More information about the FFmpeg-soc mailing list