| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 580 人关注过本帖
标题:求助 int av_dup_packet(AVPacket* pkt)函数问题
只看楼主 加入收藏
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
结帖率:97.26%
收藏
 问题点数:0 回复次数:0 
求助 int av_dup_packet(AVPacket* pkt)函数问题
之前网上找到的FFmpeg播放器实例代码中,说 av_dup_packet() 函数 是未定义标识符。。。
好不容易,在网上找到了  av_dup_packet() 函数源码。
又说pkt中没有destruct。。。。
图片附件: 游客没有浏览图片的权限,请 登录注册


应该如何解决。。。。

程序代码:
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavdevice/avdevice.h>
int av_dup_packet(AVPacket* pkt)
{
    if (((pkt->destruct == av_destruct_packet_nofree) || (pkt->destruct == NULL)) && pkt->data) {
        uint8_t* data;  //定义数据栈上的数据指针
        /* We duplicate the packet and don't forget to add the padding again. */
        if ((unsigned)pkt->size > (unsigned)pkt->size + FF_INPUT_BUFFER_PADDING_SIZE)
            return AVERROR(ENOMEM);
        data = av_malloc(pkt->size + FF_INPUT_BUFFER_PADDING_SIZE); //申请内存
        if (!data) {
            return AVERROR(ENOMEM);
        }
        memcpy(data, pkt->data, pkt->size); //把共享的内存拷过去
        memset(data + pkt->size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
        pkt->data = data; // 重新设置pkt->data终于有自己的独立内存了,不用共享别的AVPacket的内存
        pkt->destruct = av_destruct_packet; //设置析构函数指针
    }
    return 0;
}
搜索更多相关主题的帖子: include size data 函数 内存 
2023-04-23 22:22
快速回复:求助 int av_dup_packet(AVPacket* pkt)函数问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055532 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved