0

我正在尝试升级与我们的一个项目一起使用的 FFMpeg 源,但 get_buffer 已经消失。我不能 100% 确定用哪种方法替换它。这是使用它的两种情况,感谢您的帮助。

希望能早日收到你的消息,

谢谢,凯文

    cur_offset = avio_tell(pb);
    if (!para->playctrl_info.read_end_flag && (0 == pkt->data_size)) {
        rev_byte = get_buffer(pb, pbuf, para->max_raw_size);
        if ((rev_byte > 0) && (cur_offset <= para->pFormatCtx->data_offset)) {
            try_count = 0;
            pkt->data_size = rev_byte;
            para->read_size.total_bytes += rev_byte;
            pkt->avpkt_newflag = 1;
            pkt->avpkt_isvalid = 1;

  do {
                read_length = get_buffer(s->pb, data + 12, read_size);
                if ((read_length <= 0) || (sync_flag == 1024)) {
                    if (read_length == AVERROR(EAGAIN)) {
                        continue;
                    } else {
                        FREE(data);
                        log_error("[%s]get data failed. ret=%d\n", __FUNCTION__, read_length);
                        return 0;
                    }
                } else {
                    break;
                }
            } while (retry_get_data < am_p->playctrl_info.read_max_retry_cnt);
            pkt = data;
4

1 回答 1

1

虽然您已经找到了答案,但如果其他人有同样的问题,我会提供答案。durandal_1707 在#ffmpeg-devel IRC 中为您提供了答案(我假设):

expresspotato:我在将最新版本的 ffmpeg 与大约一年半前的旧版本集成时遇到了麻烦。aviobuf.c 中定义的 get_buffer 似乎已经消失。你知道我应该用哪种方法代替它吗?

durandal_1707: in e63a362857d9807b23e65872598d782fa53bb6af get_buffer have been renamed to avio_read

于 2012-06-14T17:37:23.630 回答