Как заполнить AVFrame аудиоданными - PullRequest
0 голосов
/ 08 мая 2020

это функция, взятая из примера ffmpeg. Как мне заполнить фрейм моим буфером данных ( const uchar * data, int Length )?

AVFrame *frame = OutputStreamAudio.pAVFrameTemp;
int j, i, v;
int16_t *q = (int16_t*)frame->data[0];

/* check if we want to generate more frames */
if (av_compare_ts(OutputStreamAudio.next_pts, OutputStreamAudio.pAVCodecContext->time_base, STREAM_DURATION, (AVRational){ 1, 1 }) >= 0) return NULL;
for (j = 0; j <frame->nb_samples; j++) {
    v = (int)(sin(OutputStreamAudio.t) * 10000);
    for (i = 0; i < OutputStreamAudio.pAVCodecContext->channels; i++) *q++ = v;
    OutputStreamAudio.t     += OutputStreamAudio.tincr;
    OutputStreamAudio.tincr += OutputStreamAudio.tincr2;
}

frame->pts = OutputStreamAudio.next_pts;
OutputStreamAudio.next_pts  += frame->nb_samples;

return frame;
...