69,371
社区成员
发帖
与我相关
我的任务
分享
len1 = avcodec_decode_audio3(codecContext,audio_buf1,&data_size,pkt_temp);
这里的audio_buf1,不是一个int16_t*的类型么?这个难道不会溢出?
我刚开始的代码是不转换的,
ESPkt->data = audio_buf1;
编译器会报错
error: cannot convert 'int16_t*' to 'uint8_t*' in assignment
class ESPacket {
public:
explicit ESPacket();
~ESPacket();
bool IsEOS() { return is_EOS_; }
void SetEOS(bool eos) { is_EOS_ = eos; size = 1024;}
int32_t GetSize();
void *private_data; //!< private data pointer which may be used by data reader
uint32_t sequence_header_size; //!< sequence header size if need
uint8_t *sequence_header_data; //!< sequence header data pointer if size > 0
uint32_t frame_header_size; //!< frame header size if need
uint8_t *frame_header_data; //!< frame header data pointer if size > 0
uint32_t frame_header_need_free; //!< if the frame header data need be freed every time
uint8_t seqheader_need_free; //!< if need free sequence_header_data every time
uint8_t *data; //!< AV packet data pointer
//int16_t *data; //!< AV packet data pointer
int32_t size; //!< AV packet size
uint32_t index; //!< Stream index of the packet
TimeStamp pts;
uint32_t is_i_frame; //!< Flag of I frame(for video only)
typedef enum {
ES_TYPE_INVALID = 0x100,
ES_TYPE_VIDEO,
ES_TYPE_AUDIO,
ES_TYPE_SUB,
} ES_TYPE;
ES_TYPE GetType() { return type_; }
void SetType(ES_TYPE type) { type_ = type; }
private:
bool is_EOS_;
ES_TYPE type_;
};
这个库里面必须用
uint8_t *data; //!< AV packet data pointer
这个要怎么弄。。。。被搞晕了几天了。uint8_t *a;
int16_t* b;
a = (uint *)b;
这样是否可行呢,谢谢。[/quote]
如果都是正的没问题吧 应该你最好用uint16_t* audio_buf1;
uint8_t *a;
int16_t* b;
a = (uint *)b;
这样是否可行呢,谢谢。ESPacket* ESPkt = new ESPacket;
这个结构中的 一个成员是:
uint8_t *data; //!< AV packet data pointer
而我调用的
len1 = avcodec_decode_audio3(codecContext,audio_buf1,&data_size,pkt_temp);
使用了一个
int16_t* audio_buf1;
最后的回调前,赋值
ESPkt->data = (uint8_t *)audio_buf1;
这样会不会有问题呀,各位大哥么。