int ff_dca_convert_bitstream(const uint8_t *src, int src_size, uint8_t *dst,

                             int max_size)

{

    uint32_t mrk;

    int i, tmp;

    const uint16_t *ssrc = (const uint16_t *) src;

    uint16_t *sdst = (uint16_t *) dst;

    PutBitContext pb;



    if ((unsigned) src_size > (unsigned) max_size)

        src_size = max_size;



    mrk = AV_RB32(src);

    switch (mrk) {

    case DCA_SYNCWORD_CORE_BE:

        memcpy(dst, src, src_size);

        return src_size;

    case DCA_SYNCWORD_CORE_LE:

        for (i = 0; i < (src_size + 1) >> 1; i++)

            *sdst++ = av_bswap16(*ssrc++);

        return src_size;

    case DCA_SYNCWORD_CORE_14B_BE:

    case DCA_SYNCWORD_CORE_14B_LE:

        init_put_bits(&pb, dst, max_size);

        for (i = 0; i < (src_size + 1) >> 1; i++, src += 2) {

            tmp = ((mrk == DCA_SYNCWORD_CORE_14B_BE) ? AV_RB16(src) : AV_RL16(src)) & 0x3FFF;

            put_bits(&pb, 14, tmp);

        }

        flush_put_bits(&pb);

        return (put_bits_count(&pb) + 7) >> 3;

    default:

        return AVERROR_INVALIDDATA;

    }

}

int ff_dca_convert_bitstream(const uint8_t *src, int src_size, uint8_t *dst,

                             int max_size)

{

    uint32_t mrk;

    int i, tmp;

    const uint16_t *ssrc = (const uint16_t *) src;

    uint16_t *sdst = (uint16_t *) dst;

    PutBitContext pb;



    if ((unsigned) src_size > (unsigned) max_size)

        src_size = max_size;



    mrk = AV_RB32(src);

    switch (mrk) {

    case DCA_SYNCWORD_CORE_BE:

        memcpy(dst, src, src_size);

        return src_size;

    case DCA_SYNCWORD_CORE_LE:

        for (i = 0; i < (src_size + 1) >> 1; i++)

            *sdst++ = av_bswap16(*ssrc++);

        return src_size;

    case DCA_SYNCWORD_CORE_14B_BE:

    case DCA_SYNCWORD_CORE_14B_LE:

        init_put_bits(&pb, dst, max_size);

        for (i = 0; i < (src_size + 1) >> 1; i++, src += 2) {

            tmp = ((mrk == DCA_SYNCWORD_CORE_14B_BE) ? AV_RB16(src) : AV_RL16(src)) & 0x3FFF;

            put_bits(&pb, 14, tmp);

        }

        flush_put_bits(&pb);

        return (put_bits_count(&pb) + 7) >> 3;

    default:

        return AVERROR_INVALIDDATA;

    }

}

    const uint16_t *ssrc = (const uint16_t *) src;     uint16_t *sdst = (uint16_t *) dst;         for (i = 0; i < (src_size + 1) >> 1; i++)             *sdst++ = av_bswap16(*ssrc++);
int FUNC_0(const uint8_t *VAR_0, int VAR_1, uint8_t *VAR_2,

                             int VAR_3)

{

    uint32_t mrk;

    int VAR_4, VAR_5;

    const uint16_t *VAR_6 = (const uint16_t *) VAR_0;

    uint16_t *sdst = (uint16_t *) VAR_2;

    PutBitContext pb;



    if ((unsigned) VAR_1 > (unsigned) VAR_3)

        VAR_1 = VAR_3;



    mrk = AV_RB32(VAR_0);

    switch (mrk) {

    case DCA_SYNCWORD_CORE_BE:

        memcpy(VAR_2, VAR_0, VAR_1);

        return VAR_1;

    case DCA_SYNCWORD_CORE_LE:

        for (VAR_4 = 0; VAR_4 < (VAR_1 + 1) >> 1; VAR_4++)

            *sdst++ = av_bswap16(*VAR_6++);

        return VAR_1;

    case DCA_SYNCWORD_CORE_14B_BE:

    case DCA_SYNCWORD_CORE_14B_LE:

        init_put_bits(&pb, VAR_2, VAR_3);

        for (VAR_4 = 0; VAR_4 < (VAR_1 + 1) >> 1; VAR_4++, VAR_0 += 2) {

            VAR_5 = ((mrk == DCA_SYNCWORD_CORE_14B_BE) ? AV_RB16(VAR_0) : AV_RL16(VAR_0)) & 0x3FFF;

            put_bits(&pb, 14, VAR_5);

        }

        flush_put_bits(&pb);

        return (put_bits_count(&pb) + 7) >> 3;

    default:

        return AVERROR_INVALIDDATA;

    }

}

int FUNC_0(const uint8_t *VAR_0, int VAR_1, uint8_t *VAR_2,
int VAR_3)
{ uint32_t mrk; int VAR_4, VAR_5; const uint16_t *VAR_6 = (const uint16_t *) VAR_0; uint16_t *sdst = (uint16_t *) VAR_2; PutBitContext pb; if ((unsigned) VAR_1 > (unsigned) VAR_3)
VAR_1 = VAR_3; mrk = AV_RB32(VAR_0); switch (mrk) { case DCA_SYNCWORD_CORE_BE:
memcpy(VAR_2, VAR_0, VAR_1); return VAR_1; case DCA_SYNCWORD_CORE_LE:
for (VAR_4 = 0; VAR_4 < (VAR_1 + 1) >> 1; VAR_4++) *sdst++ = av_bswap16(*VAR_6++); return VAR_1; case DCA_SYNCWORD_CORE_14B_BE:
case DCA_SYNCWORD_CORE_14B_LE:
init_put_bits(&pb, VAR_2, VAR_3); for (VAR_4 = 0; VAR_4 < (VAR_1 + 1) >> 1; VAR_4++, VAR_0 += 2) { VAR_5 = ((mrk == DCA_SYNCWORD_CORE_14B_BE) ? AV_RB16(VAR_0) : AV_RL16(VAR_0)) & 0x3FFF; put_bits(&pb, 14, VAR_5); } flush_put_bits(&pb); return (put_bits_count(&pb) + 7) >> 3; default:
return AVERROR_INVALIDDATA; } }