1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *     http://www.apache.org/licenses/LICENSE-2.0
7  * Unless required by applicable law or agreed to in writing, software
8  * distributed under the License is distributed on an "AS IS" BASIS,
9  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10  * See the License for the specific language governing permissions and
11  * limitations under the License.
12  */
13 
14 #ifndef STREAM_STATISTICS_H
15 #define STREAM_STATISTICS_H
16 
17 #include <cstdint>
18 #include <string>
19 #include "surface.h"
20 #include "surface_type.h"
21 #include "display_format.h"
22 #include "camera.h"
23 
24 namespace OHOS::Camera {
25 class StreamStatistics {
26 public:
27     StreamStatistics();
28     StreamStatistics(int32_t streamId);
29     ~StreamStatistics();
30     void SetStreamId(int32_t streamId);
31     void RequestBufferSuccess();
32     void RequestBufferFail();
33     void RequestBufferResult(OHOS::SurfaceError sfError);
34     void RequestBufferResult(OHOS::SurfaceBuffer *sbuffer);
35     void FlushBufferSuccess();
36     void FlushBufferFail();
37     void FlushBufferResult(int32_t ret);
38     void CancelBufferSuccess();
39     void CancelBufferFail();
40     void CancelBufferResult(int32_t ret);
41     void Clear();
42     void DumpStats(int interval = 0);
43     void CalculateFps(int interval);
44 
45 private:
46     int32_t streamId_;
47     uint32_t requestBufferSuccessCount_;
48     uint32_t lastRequestBufferCount_;
49     uint32_t requestBufferFailCount_;
50     uint32_t flushBufferSuccessCount_;
51     uint32_t flushBufferFailCount_;
52     uint32_t cancelBufferSuccessCount_;
53     uint32_t cancelBufferFailCount_;
54     uint32_t fpsValue_;
55     uint64_t lastOutputTime_ = 0;
56     std::string streamInfo_;
57     timespec timestamp_ = {0, 0};
58 };
59 } // end namespace OHOS::Camera
60 #endif // STREAM_STATISTICS_H
61