#include "stream.hpp" #include "ffmpeg/data/CodedData.hpp" namespace cffmpeg_wrap{ stream::stream(){ } stream::~stream(){ } int stream::SetPacket(std::shared_ptr data){ if (data){ std::lock_guard locker(mutex_avpkt_); list_avpkt_.push_back(data); return list_avpkt_.size(); } return 0; } void stream::GetPacket(unsigned char **pktData, int *size, int *key){ std::lock_guard l(mutex_avpkt_); if(list_avpkt_.empty()){ return; } auto data = list_avpkt_.front(); auto pkt = data->getAVPacket(); *key = pkt.flags & AV_PKT_FLAG_KEY; *size = pkt.size; *pktData = (unsigned char *)malloc(*size); memcpy(*pktData, pkt.data, pkt.size); list_avpkt_.pop_front(); } }