avctx->frame_size = (dst - frame) / (sample_size * avctx->channels);
static int encode_frame(AVCodecContext *avctx,                        unsigned char *frame, int buf_size, void *data){    int n, sample_size, v;    short *samples;    unsigned char *dst;    switch(avctx->codec->id) {    case CODEC_ID_PCM_S16LE:    case CODEC_ID_PCM_S16BE:    case CODEC_ID_PCM_U16LE:    case CODEC_ID_PCM_U16BE:        sample_size = 2;        break;    default:        sample_size = 1;        break;    }    n = buf_size / sample_size;    samples = data;    dst = frame;    switch(avctx->codec->id) {    case CODEC_ID_PCM_S16LE:        for(;n>0;n--) {            v = *samples++;            dst[0] = v & 0xff;            dst[1] = v >> 8;            dst += 2;        }        break;    case CODEC_ID_PCM_S16BE:        for(;n>0;n--) {            v = *samples++;            dst[0] = v >> 8;            dst[1] = v;            dst += 2;        }        break;    case CODEC_ID_PCM_U16LE:        for(;n>0;n--) {            v = *samples++;            v += 0x8000;            dst[0] = v & 0xff;            dst[1] = v >> 8;            dst += 2;        }        break;    case CODEC_ID_PCM_U16BE:        for(;n>0;n--) {            v = *samples++;            v += 0x8000;            dst[0] = v >> 8;            dst[1] = v;            dst += 2;        }        break;    case CODEC_ID_PCM_S8:        for(;n>0;n--) {            v = *samples++;            dst[0] = (v + 128) >> 8;            dst++;        }        break;    case CODEC_ID_PCM_U8:        for(;n>0;n--) {            v = *samples++;            dst[0] = ((v + 128) >> 8) + 128;            dst++;        }        break;    case CODEC_ID_PCM_ALAW:        for(;n>0;n--) {            v = *samples++;            dst[0] = linear_to_alaw[(v + 32768) >> 2];            dst++;        }        break;    case CODEC_ID_PCM_MULAW:        for(;n>0;n--) {            v = *samples++;            dst[0] = linear_to_ulaw[(v + 32768) >> 2];            dst++;        }        break;    default:        return -1;    }    avctx->key_frame = 1;    avctx->frame_size = (dst - frame) / (sample_size * avctx->channels);    return dst - frame;}