Frame添加cacheAbel接口

This commit is contained in:
xiongziliang
2019-07-24 18:02:55 +08:00
parent 2d460ff83d
commit f50eaf8648
7 changed files with 31 additions and 19 deletions

View File

@@ -105,11 +105,11 @@ public:
uint32_t iPrefixSize = 7;
} ;
class AACFrameNoCopyAble : public FrameNoCopyAble {
class AACFrameNoCacheAble : public FrameNoCacheAble {
public:
typedef std::shared_ptr<AACFrameNoCopyAble> Ptr;
typedef std::shared_ptr<AACFrameNoCacheAble> Ptr;
AACFrameNoCopyAble(char *ptr,uint32_t size,uint32_t dts,int prefixeSize = 7){
AACFrameNoCacheAble(char *ptr,uint32_t size,uint32_t dts,int prefixeSize = 7){
_ptr = ptr;
_size = size;
_dts = dts;

View File

@@ -116,6 +116,11 @@ public:
* @return
*/
virtual bool keyFrame() const = 0;
/**
* 是否可以缓存
*/
virtual bool cacheAble() const { return true; }
};
/**
@@ -281,9 +286,9 @@ private:
map<void *,FrameWriterInterface::Ptr> _delegateMap;
};
class FrameNoCopyAble : public Frame{
class FrameNoCacheAble : public Frame{
public:
typedef std::shared_ptr<FrameNoCopyAble> Ptr;
typedef std::shared_ptr<FrameNoCacheAble> Ptr;
char *data() const override{
return _ptr;
}
@@ -306,6 +311,13 @@ public:
return _prefixSize;
}
/**
* 该帧不可缓存
* @return
*/
bool cacheAble() const override {
return false;
}
protected:
char *_ptr;
uint32_t _size;

View File

@@ -92,11 +92,11 @@ public:
};
class H264FrameNoCopyAble : public FrameNoCopyAble {
class H264FrameNoCacheAble : public FrameNoCacheAble {
public:
typedef std::shared_ptr<H264FrameNoCopyAble> Ptr;
typedef std::shared_ptr<H264FrameNoCacheAble> Ptr;
H264FrameNoCopyAble(char *ptr,uint32_t size,uint32_t dts , uint32_t pts ,int prefixeSize = 4){
H264FrameNoCacheAble(char *ptr,uint32_t size,uint32_t dts , uint32_t pts ,int prefixeSize = 4){
_ptr = ptr;
_size = size;
_dts = dts;
@@ -117,13 +117,13 @@ public:
}
};
class H264FrameSubFrame : public H264FrameNoCopyAble{
class H264FrameSubFrame : public H264FrameNoCacheAble{
public:
typedef std::shared_ptr<H264FrameSubFrame> Ptr;
H264FrameSubFrame(const Frame::Ptr &strongRef,
char *ptr,
uint32_t size,
int prefixeSize) : H264FrameNoCopyAble(ptr,size,strongRef->dts(),strongRef->pts(),prefixeSize){
int prefixeSize) : H264FrameNoCacheAble(ptr,size,strongRef->dts(),strongRef->pts(),prefixeSize){
_strongRef = strongRef;
}
private:

View File

@@ -121,11 +121,11 @@ public:
};
class H265FrameNoCopyAble : public FrameNoCopyAble {
class H265FrameNoCacheAble : public FrameNoCacheAble {
public:
typedef std::shared_ptr<H265FrameNoCopyAble> Ptr;
typedef std::shared_ptr<H265FrameNoCacheAble> Ptr;
H265FrameNoCopyAble(char *ptr, uint32_t size, uint32_t dts,uint32_t pts, int prefixeSize = 4) {
H265FrameNoCacheAble(char *ptr, uint32_t size, uint32_t dts,uint32_t pts, int prefixeSize = 4) {
_ptr = ptr;
_size = size;
_dts = dts;