xref: /OK3568_Linux_fs/external/rockit/tgi/sdk/include/RTVideoFrame.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright 2021 Rockchip Electronics Co. LTD
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Licensed under the Apache License, Version 2.0 (the "License");
5*4882a593Smuzhiyun  * you may not use this file except in compliance with the License.
6*4882a593Smuzhiyun  * You may obtain a copy of the License at
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  *      http://www.apache.org/licenses/LICENSE-2.0
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  * Unless required by applicable law or agreed to in writing, software
11*4882a593Smuzhiyun  * distributed under the License is distributed on an "AS IS" BASIS,
12*4882a593Smuzhiyun  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4882a593Smuzhiyun  * See the License for the specific language governing permissions and
14*4882a593Smuzhiyun  * limitations under the License.
15*4882a593Smuzhiyun  */
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #ifndef SRC_RT_MEDIA_INCLUDE_RTVFRAMEBUFFER_H_
18*4882a593Smuzhiyun #define SRC_RT_MEDIA_INCLUDE_RTVFRAMEBUFFER_H_
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #include <map>
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun #include "RTAVShellBuffer.h"
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun class RTVideoFrame : public RTAVShellBuffer {
25*4882a593Smuzhiyun  public:
26*4882a593Smuzhiyun     RTVideoFrame();
27*4882a593Smuzhiyun     explicit RTVideoFrame(UINT32 size);
28*4882a593Smuzhiyun     virtual ~RTVideoFrame() = default;
29*4882a593Smuzhiyun     RTVideoFrame& operator=(const RTVideoFrame& in);
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun     virtual RTMediaBufferType getType();
32*4882a593Smuzhiyun     virtual void reset();
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun     UINT32 getWidth() const;
35*4882a593Smuzhiyun     UINT32 getHeight() const;
36*4882a593Smuzhiyun     UINT32 getVirWidth() const;
37*4882a593Smuzhiyun     UINT32 getVirHeight() const;
38*4882a593Smuzhiyun     RTPixelFormat getPixelFormat() const;
39*4882a593Smuzhiyun     RTCompressMode getCompressMode() const;
40*4882a593Smuzhiyun     RTRect getOpRect() const;
41*4882a593Smuzhiyun     RTRect getBaseRect() const;
42*4882a593Smuzhiyun     RTRect getRect() const;
43*4882a593Smuzhiyun     INT64 getPts() const;
44*4882a593Smuzhiyun     INT64 getDts() const;
45*4882a593Smuzhiyun     INT32 getSeq() const;
46*4882a593Smuzhiyun     INT32 getDuration() const;
47*4882a593Smuzhiyun     INT32 getRotation() const;
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun     void  setWidth(const UINT32 width);
50*4882a593Smuzhiyun     void  setHeight(const UINT32 height);
51*4882a593Smuzhiyun     void  setVirWidth(const UINT32 virWidth);
52*4882a593Smuzhiyun     void  setVirHeight(const UINT32 virHeight);
53*4882a593Smuzhiyun     void  setPixelFormat(const RTPixelFormat pixelFormat);
54*4882a593Smuzhiyun     void  setCompressMode(const RTCompressMode mode);
55*4882a593Smuzhiyun     void  setOpRect(const RTRect rect);
56*4882a593Smuzhiyun     void  setBaseRect(const RTRect rect);
57*4882a593Smuzhiyun     void  setPts(const INT64 pts);
58*4882a593Smuzhiyun     void  setDts(const INT64 dts);
59*4882a593Smuzhiyun     void  setSeq(const INT32 seq);
60*4882a593Smuzhiyun     void  setDuration(const INT32 duration);
61*4882a593Smuzhiyun     void  setRotation(const INT32 rotation);
62*4882a593Smuzhiyun     void  clone(const RTVideoFrame& in);
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun  private:
65*4882a593Smuzhiyun     void baseInit();
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun  private:
68*4882a593Smuzhiyun      UINT32 mWidth;
69*4882a593Smuzhiyun      UINT32 mHeight;
70*4882a593Smuzhiyun      UINT32 mVirWidth;
71*4882a593Smuzhiyun      UINT32 mVirHeight;
72*4882a593Smuzhiyun      RTRect mOpRect;
73*4882a593Smuzhiyun      RTRect mBaseRect;
74*4882a593Smuzhiyun      INT64  mPts;
75*4882a593Smuzhiyun      INT64  mDts;
76*4882a593Smuzhiyun      INT32  mSeq;
77*4882a593Smuzhiyun      INT32  mDuration;
78*4882a593Smuzhiyun      INT32  mRotation;
79*4882a593Smuzhiyun      RTPixelFormat mPixelFormat;
80*4882a593Smuzhiyun      RTCompressMode mCompressMode;
81*4882a593Smuzhiyun };
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun RTVideoFrame* clone_vframe(RTVideoFrame *buffer);
84*4882a593Smuzhiyun RTVideoFrame* reinterpret_vframe(RTMediaBuffer *buffer);
85*4882a593Smuzhiyun RTVideoFrame* construct_vframe(RTMediaBuffer *buffer);
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun #endif  // SRC_RT_MEDIA_INCLUDE_RTVFRAMEBUFFER_H_
88